mpmovieplayercontroller:在后台播放

时间:2014-01-28 19:53:46

标签: ios objective-c ipad video ios7

我正在制作iPad应用程序(iOS7,XCode5)。

我正在播放包含视频和音频的HLS流(m3u8)。当设备进入后台时,它将停止播放。有没有办法从视频中分离音频,只是在后台播放视频?看来Apple似乎不希望你在后台播放视频。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:5)

可能但不是没有跳过播放 - 视频会自动停止,但由于您的应用基本上仍然在后台运行,您可以再次手动启动视频:

在管理播放器的视图控制器中添加:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];

然后添加以下方法:

- (void)applicationDidEnterBackground:(NSNotification*)note {
    if (!_callCenter.currentCalls && self.currentPlayer.continuePlaybackInBackground == YES) {
        double delayInSeconds = 0.1;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            // call play on your MPMoviePlayerController
        });
    }
}

我发现我必须使用dispatch_after因为否则它会在操作系统停止之前再次尝试启动电影播放。