AVErrorMediaServicesWereReset是什么意思?

时间:2011-06-29 17:11:14

标签: iphone ios cocoa-touch avfoundation avplayer

我目前正在使用AVPlayer编写自定义视频播放器。视频播放效果很好,99%的情况下都有效。但在寻找时,我偶尔会遇到错误。我的AVPlayerItem状态更改为AVPlayerItemStatusFailed,其“error”属性设置为:

  

错误Domain = AVFoundationErrorDomain   代码= -11819“无法完成操作”   的UserInfo = 0x541da00   {NSLocalizedRecoverySuggestion =尝试   稍后再试。,   NSLocalizedDescription =无法完成   动作}

在HTTP Live Stream中寻求转发时,iOS 4.0.1上会出现此错误。当手机在3G上或流的比特率很高时,它会更频繁地发生。要重现,请在iOS 4.0.1上使用AVPlayer播放HTTP直播流并向前搜索已加载的缓冲区 - 错误发生在~50%的时间。

我在AVError.h中发现AVFoundation错误代码-11819对应于 AVErrorMediaServicesWereReset (“由于媒体服务不可用而无法完成操作”)

有谁知道导致此错误的原因以及解决方法?我知道可以修复,因为MPMoviePlayerViewController(使用AVPlayer)没有出现错误。不幸的是,由于外部限制,我不能在我的代码中使用MPMoviePlayer。

谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,当在iOS 4.0.1上的HTTP直播中寻求前进时,AVPlayer非常非线程安全。我的一些代码称为setNeedsDisplay或以其他方式调用系统UI代码,它在绘图时“中断”播放器。解决方案不是在用户寻找位置和玩家从该位置开始播放之间更新视图。幸运的是,这似乎固定在4.3 +。