【问题标题】:MPMoviePlayerController Simulator CrashMPMoviePlayerController 模拟器崩溃
【发布时间】:2012-10-15 20:56:06
【问题描述】:

当我尝试播放任何视频时,我的 MPMoviePlayerController 崩溃了。

这只发生在模拟器上,在设备上可以正常工作。

错误如下:

2012-10-25 16:46:24.033 TheFasterChef[8529:14303] [MPAVController] Autoplay: Disabling autoplay for pause
2012-10-25 16:46:24.035 TheFasterChef[8529:14303] [MPAVController] Autoplay: Disabling autoplay
2012-10-25 16:46:24.172 TheFasterChef[8529:14303] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2012-10-25 16:46:24.190 TheFasterChef[8529:14303] [MPAVController] Autoplay: Enabling autoplay
2012-10-25 16:46:24.227 TheFasterChef[8529:14303] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-10-25 16:46:24.227 TheFasterChef[8529:14303] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-10-25 16:46:24.232 TheFasterChef[8529:14303] [MPAVController] Autoplay: Enabling autoplay
2012-10-25 16:46:24.238 TheFasterChef[8529:14303] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

我的代码是调用MPMoviePlayerController的bog标准方法:

在 .h 文件中:

@property (retain) MPMoviePlayerController *videoPlayer;

在 .m 文件中:

NSBundle *appBundle = [NSBundle mainBundle];
//NSString *contentURLString = [appBundle pathForResource:videoIdentifier ofType:@"mp4"];
NSString *contentURLString = [appBundle pathForResource:@"test" ofType:@".mp4"];
NSURL *contentURL = [NSURL fileURLWithPath:contentURLString];

self.videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:contentURL];
[self.videoPlayer prepareToPlay];
[self.videoPlayer.view setFrame: self.view.bounds];
[self.view addSubview:self.videoPlayer.view];
[self.videoPlayer prepareToPlay];
[self.videoPlayer play];

我已经在不同的视图控制器中尝试了这个 sn-p 代码,但错误结果相同。

我在一个新项目中尝试过这个 sn-p 代码,它工作正常。

还有什么可能导致此错误?

here的答案没有为我解决。

【问题讨论】:

  • 您的日志中没有error - 一切正常。您是否在 Xcode 调试器中激活了异常断点?如果是这样,一旦停用该断点,应用程序是否也会崩溃?
  • 天哪,你是对的。我觉得自己像个娘们。在诉诸堆栈溢出之前,我不会透露我为此困惑了多久,但不用说,真诚地感谢 Till。
  • :D - 从现在开始我的荣幸和好运......
  • @Till 这是一个非常有用的提示。模拟器中使用的 Xcode 和 MPMoviePlayerController 之间存在某种不良交互。关闭异常断点可以修复它。你应该把你的评论变成一个实际的答案;我想赞成它!
  • 同意马特,很乐意接受!

标签: ios xcode ios-simulator mpmovieplayercontroller


【解决方案1】:

模拟器似乎不支持mp4,但支持mov。我遇到了同样的问题,将视频转换为mov后在模拟器上运行良好。

【讨论】:

    【解决方案2】:

    更好的是,如果您需要其他操作,请禁用(而不是删除)“所有例外”。

    【讨论】:

      【解决方案3】:

      解决方案:从断点选项卡中删除“所有异常”。
      这个答案来自 Till 上面的评论。我遇到了这个问题,我几乎错过了答案,因为它是一个评论。蒂尔的回答帮助了我,所以我希望这可以帮助像我这样的其他人。

      【讨论】:

      • 我想通过稍微冗长的方式来增强您的回答... iOS SDK 在 iOS5 进入测试版时引入了这个问题。这不是视频播放问题,而是与声音播放有关。在 iOS Simlator SDK 的深处(显然是部分使用 C++ 构建的),有用于处理某些情况的异常。这些异常与错误或崩溃无关,而是与常规程序流有关。不幸的是,Xcode 的调试组件将这些异常识别为致命的,因此在调试模式下运行时停止在模拟器上执行您的应用程序。
      • 出色的答案。使我免于许多麻烦。谢谢!
      • 删除“所有异常”断点可能不是您想要的。我建议设置这个断点,然后按 ctrl-click 来编辑它。然后打开 Exception 下拉列表,选择“Objective-C”而不是“All”。
      • 这就是 SO 很棒的原因!
      【解决方案4】:

      你自己已经给出了答案。这纯粹是一个模拟器问题。一般来说,与媒体相关的 API 在设备上运行得更好(有时,只是)。

      【讨论】:

      • @RawMean 是的。它的答案。我有这个确切的问题。模拟器中存在某种错误,会在此处引发异常,而这在设备上不会发生。
      • 您对问题的看法是正确的,但您没有提供解决方案。
      • 是的,我是。我的解决方案是他应该将模拟器异常视为伪造的,并且应该只在设备上测试他的代码以避免它。
      • @RawMean 这确实是一个正确的答案,尽管它相当笼统 - 这个答案中的所有内容都是真实且有用的。
      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多