mpmovieplayercontroller:在后台播放

Jon*_*ono 3 video objective-c ipad ios ios7

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

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

有任何想法吗?谢谢.

run*_*mad 5

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

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

然后添加以下方法:

- (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
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

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