【发布时间】:2013-02-02 06:55:30
【问题描述】:
我正在为 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
谢谢你:)
【问题讨论】:
标签: ios objective-c mpmovieplayercontroller radio