【问题标题】:iOS 6 streaming player com.apple.coremedia.networkbuffering bugiOS 6 流媒体播放器 com.apple.coremedia.networkbuffering 错误
【发布时间】:2012-09-07 00:57:45
【问题描述】:

我无法让我的应用(音乐和视频流播放器)在 iOS 6 模拟器上运行。

当我开始播放音乐或视频时,它崩溃并在此线程上显示错误:com.apple.coremedia.networkbuffering

这在日志信息中:

2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay for pause
2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay
2012-09-13 17:45:09.305 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.307 app[32563:c07] handlePlaybackNowPlayingNotification
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-09-13 17:45:09.318 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.320 app[32563:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

我将 MPMoviePlayerController 与基于 http 的流一起使用,它在 iOS 4 或 iOS 5 上运行良好

关于如何修复它的任何想法?

【问题讨论】:

  • 我也有类似的问题。
  • 如果您在 iOS 的核心中发现了 bug,StackOverflow 不太可能帮到您。 Apple Dev 论坛或报告错误更有可能为您提供修复。
  • 只是一个注释。我在模拟器中遇到了同样的问题,但在设备上运行良好。
  • 你们在 ios 6 上获得 MPMoviePlayerController 问题的解决方案了吗?如果是,请发布答案。

标签: ios streaming ios-simulator mpmovieplayercontroller ios6


【解决方案1】:

我还使用MPMoviePlayerViewController 在我的应用程序上显示实时视频,我得到了与上面相同的错误列表。我发现MPMoviePlayer 不支持较大的数据来显示视频,但如果您使用较小的视频数据,它可以正常工作,不会出现错误。其实这不是电影播放器​​准备播放和播放属性的问题。

如果您需要显示更大的数据,请在您的应用中使用 webview。

【讨论】:

    【解决方案2】:

    我在使用下面的代码时遇到问题,播放器会全屏显示,但在那之后,它会关闭并且根本不播放视频。

    NSURL *url = [NSURL URLWithString:@"http://streaming.disponivel.uol.com.br/video360p2/288148-1192657.mp4"];

        _player = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    
        [_player.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];
    
        [_player.moviePlayer setControlStyle:MPMovieControlStyleDefault];
    
        [_player.moviePlayer setFullscreen:YES animated:YES];      
    
        [self presentMoviePlayerViewControllerAnimated:_player];
    
        [_player.moviePlayer prepareToPlay];
    
        [_player.moviePlayer play];
    

    【讨论】:

      【解决方案3】:
      NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
      MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
      
      
      
      moviePlayer.view.frame = self.view.frame;
      moviePlayer.moviePlayer.shouldAutoplay=YES;
      moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
      [moviePlayer.moviePlayer setFullscreen:YES animated:YES];
      [self.view addSubview:moviePlayer.view];
      [moviePlayer.moviePlayer play];
      

      注意:iOS 6之前,无需调用[moviePlayer.movi​​ePlayer play];将播放器视图添加到视图后,它将开始播放,但在 iOS 6 中,您需要显式调用播放函数

      【讨论】:

        【解决方案4】:

        您观察到的不是崩溃而是异常。您很可能启用了异常断点,这导致您假设应用程序崩溃。

        该异常实际上已由 SDK 正确处理(捕获)并且不会导致应用崩溃。

        请注意,这只发生在模拟器上,而不是设备上。

        该问题与此问题what-does-this-gdb-output-mean 密切相关。不同之处在于您不会再收到这些错误消息,但仍然会抛出异常(但也会咳嗽)。

        【讨论】:

        • 我有一个更好的解决方案,可以让您保留所有异常!右键单击并编辑它,然后在 Exception 下选择 Objective-C。如果您正在尝试实际调试 C++,那么这不是很好,但是如果您是一个普通的 iOS 应用程序,那么您只需要 Objective-C!电影播放器​​抛出了一个 C++ 异常,所以这个烦恼消失了!!
        【解决方案5】:

        首先我做了类似下面的事情

        [self.player.moviePlayer prepareToPlay];
        [self.player.moviePlayer play];
        self.player.moviePlayer.shouldAutoplay = YES;
        

        当我删除以下行时

        self.player.moviePlayer.shouldAutoplay = YES;
        

        问题解决了。

        【讨论】:

          【解决方案6】:

          我在使用 ios6 的 MPMoviePlayerController 时遇到了同样的问题。所以我将我的代码更改为流动,现在它工作正常..

          NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
          MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
          
          
          
          moviePlayer.view.frame = self.view.frame;
          moviePlayer.moviePlayer.shouldAutoplay=YES;
          moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
          [moviePlayer.moviePlayer setFullscreen:YES animated:YES];
          [self.view addSubview:moviePlayer.view];
          [moviePlayer.moviePlayer play];
          

          【讨论】:

          • 就我而言,删除以下内容就足够了:moviePlayer.view.frame = self.view.frame;
          【解决方案7】:

          我还没有解决这个问题,但在我的特殊情况下,MPMoviePlayerController 将进入全屏,或者控制器可能存在延迟时,这似乎与此有关。

          我不是从网络流式传输内容,内容在设备上,所以最初内容在视图中显示良好。

          我的猜测是他们在MPMoviePlayerController 中实现了一项新功能,以防止播放期间出现“死区时间”。我见过一些应用程序会在电影数据离线或您碰巧走出 wifi 范围时挂起”

          我尝试解决此问题的方法是查看传递给 -

          的通知消息
          (void)moviePlayBackDidFinish: (NSNotification*)notification
          

          这是通过查询用户信息字典来完成的

          NSDictionary *userInfo = [notification userInfo];
          

          在这种类型的故障情况下,MPMoviePlayerPlaybackDidFinishReasonUserInfoKey 的值为 0。

          这是一个起点。我的想法是在这个独特的失败点上恢复电影。

          我会及时通知你结果。

          【讨论】:

          • 0 等于 MPMovieFinishReasonPlaybackEnded。您可能不想在电影结束后重新开始。
          【解决方案8】:

          我已经使用 xcode 4.5+SDK6.0 与 xcode 4.4.1+SDK5.1 组合验证了 iOS 6 版本的 MPMoviePlayerController 存在问题。不过我只用过 iPad。

          这是我的观察:- - 我从来没有使用我使用 MPMoviePlayerController 的代码在 ios 6.0 上看到视频播放。 - 使用 xcode 4.4.1 和 SDK 5.1,我已经看到代码在 ios 版本 5.1、5.0 和 4.3 上工作。 - 使用 xcode 4.5 和 SDK 6.0,播放器在模拟器中总是失败,但在 ios 5.1 设备上的大多数安装工作。我一直在 ios 5.1 设备上重新安装应用程序并试用播放器。它只失败了一次。

          以下是我在播放器失败时的观察: - 有时当播放器失败时,我看到了你上面提到的日志。其他时候,我什至没有看到日志。 - 我在获得 MPMoviePlayerPlaybackDidFinishNotification 通知的函数中放置了一个断点。然后我在播放器中寻找errorLog,但没有。我查找了 MPMoviePlayerPlaybackDidFinishReasonUserInfoKey,它是 0 (MPMovieFinishReasonPlaybackEnded)。所以 MPMoviePlayerController 不知道出了什么问题!

          结论:ios6 和/或 SDK 6 存在错误。

          【讨论】:

            【解决方案9】:

            我也遇到了同样的问题……

            在实例化播放器后尝试这样做:

            [player prepareToPlay];
            

            它应该在您调用 play 时自动调用,但显然在 iOS 6 上,如果您不明确调用它会出现问题。

            就我而言,它解决了问题。

            【讨论】:

            • 也为我解决了这个问题。之前我没有收到 moviePlayerLoadStateChanged 通知,现在我收到了。
            • 是的,这似乎解决了问题,我添加了那行,直到现在不再出现类似的错误。谢谢
            • 我添加了这一行,但仍然遇到类似于 OP 问题中的错误。有什么想法吗?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多