使用MPMoviePlayerController恢复中断的无线电流

时间:2013-02-17 21:23:25

标签: ios objective-c mpmovieplayercontroller radio

我正在为iOS6设备开发一个在线广播应用程序。我寻找各种包装来完成这项任务。 AVPlayer,MPMoviePlayerController等

我尝试使用AVPlayer,因为它听起来更正确,因为它只是音频应用程序。但很快我就遇到了这个问题:Here

因此我切换到MPMoviePlayerController,这就是我想要做的事情:

    pPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://launch.fusionradio.fm:8004"]];
    pPlayer.movieSourceType = MPMovieSourceTypeStreaming;
    pPlayer.view.hidden = YES;

    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive:YES error:nil];

    [pPlayer prepareToPlay];
    [pPlayer play];

    pPlayer.shouldAutoplay = YES;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(StreamStateChanged) name:MPMoviePlayerLoadStateDidChangeNotification object:pPlayer];

在我的StreamStateChanged方法中我正在做:

NSLog(@"Trying to replay");
[pPlayer pause];

[pPlayer play];

pPlayer是MPMoviePlayer。一切都很好,除非有中断控制台吐出以下内容:

    Took background task assertion (1) for playback stall.
    Ending background task assertion (1) for playback stall.

断言后的数字不断增加。一旦互联网连接稳定,它就会从中恢复。

我的问题是:这种方法是否正确?我一路走错了吗?是否可以忽略断言消息?。

P.S:请建议是否有更好的方法来开发使用不同API而不是MPMoviePlayerController的无线电流媒体应用

谢谢:)

1 个答案:

答案 0 :(得分:9)

忽略那些内部断言消息是完全正确的。你无能为力。