【问题标题】:Resuming Interrupted Radio Stream using MPMoviePlayerController使用 MPMoviePlayerController 恢复中断的广播流
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 谢谢你,直到。我也对你可能听说过的大型视频播放应用程序中的这些日志消息 (...Took background task assertion (n) for playback stall) 感到困惑......
    • 由于这个断言,我的应用程序中的流媒体停止了很多!!,我该怎么办?
    • @Mutawe 你搞错了。这种断言经常发生,因为您的流媒体内容不足 - 检查网络连接和流编码。
    • @Till 有没有关于这些消息的事件回调?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2011-04-19
    • 2012-12-30
    • 2011-06-05
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多