MPMoviePlayerController 随机不播放电影

Posted

技术标签:

【中文标题】MPMoviePlayerController 随机不播放电影【英文标题】:MPMoviePlayerController randomly doesn't play movie 【发布时间】:2014-01-24 15:59:11 【问题描述】:

我在 ios 上的 MPMoviePlayerController 有时会播放视频(从本地文件加载)时遇到问题,有时只是静默失败。 same 视频在应用程序开始时每次都以相同的方式启动。当它失败时,它不会以任何方式通知,我只是看到一个黑屏。

这是我用来播放视频的代码(这是一个基于 cocos2d-x 的游戏,我将电影播放器​​控制器附加为 EAGLView 的子级):

- (void)playVideo:(NSString*)filePath

    NSURL* url = [NSURL fileURLWithPath:filePath];
    _moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];

    EAGLView* view = [EAGLView sharedEGLView];

    _moviePlayerController.view.frame = view.bounds;
    _moviePlayerController.movieSourceType = MPMovieSourceTypeFile;
    _moviePlayerController.fullscreen = YES;
    _moviePlayerController.controlStyle = MPMovieControlStyleNone;
    _moviePlayerController.shouldAutoplay = NO;

    [view addSubview:_moviePlayerController.view];

    [_moviePlayerController prepareToPlay];


- (void)videoFinished:(NSNotification*)notification

    [_moviePlayerController.view removeFromSuperview];
    [_moviePlayerController release];


- (void)videoLoadStateChanged:(NSNotification*)notification

    if ((_moviePlayerController.loadState & MPMovieLoadStatePlayable) != 0)
    
        [_moviePlayerController play];
    

播放失败时,我收到以下通知:

MPMoviePlayerNowPlayingMovieDidChangeNotification MPMovieSourceTypeAvailableNotification

没有别的了。当播放正常时,我得到这些:

MPMoviePlayerNowPlayingMovieDidChangeNotification MPMovieSourceTypeAvailableNotification(到这里,和失败时一样) MPMovieMediaTypesAvailableNotification MPMovieMediaTypesAvailableNotification MPMovieDurationAvailableNotification MPMoviePlayerLoadStateDidChangeNotification MPMoviePlayerLoadStateDidChangeNotification MPMoviePlayerPlaybackStateDidChangeNotification MPMovieNaturalSizeAvailableNotification MPMoviePlayerReadyForDisplayDidChangeNotification MPMoviePlayerPlaybackStateDidChangeNotification MPMoviePlayerPlaybackDidFinishNotification

我尝试了几种不同的替代方法,包括使用 MPMoviePlayerViewController,但每次我都会遇到同样奇怪的行为。有什么想法吗?

【问题讨论】:

@Salmo 您删除的“重复”行实际上是有意的,因为某些通知多次到达。该列表按我收到的顺序显示了我收到的所有通知。也许我应该使用编号列表...您能恢复您的更改吗? 【参考方案1】:

我的问题最终与症状完全无关......

这似乎是 Crittercism 在 iOS 7 上运行的某种错误。在我们的控制台 ("(webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds") 中查看调试消息时,我们遇到了这个问题:iOS 7 UIWebView not rendering,它建议安装 Crittercism 的更新版本.之后,我们的视频播放问题似乎得到了解决。

【讨论】:

以上是关于MPMoviePlayerController 随机不播放电影的主要内容,如果未能解决你的问题,请参考以下文章

如何显示 MPMoviePlayerController 控件?

MPMoviePlayerController 隐藏 AirPlay 按钮

MPMoviePlayerController 上的专辑封面

MPMoviePlayerController 已弃用,现在怎么办?

用 MPMoviePlayerController 替换 AVPlayer

“MPMoviePlayerController”的“initialPlaybackTime”不起作用