我目前正在使用AVPlayer编写自定义视频播放器。该视频可以正常播放,并且可以在99%的情况下正常播放。但是当寻找时,我偶尔会遇到一个错误。我的AVPlayerItem的状态更改为AVPlayerItemStatusFailed,并且其“错误”属性设置为:

错误域= 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。

谢谢!

最佳答案

事实证明,当在iOS 4.0.1的HTTP Live Stream中向前搜索时,AVPlayer是非常非线程安全的。我的一些代码称为setNeedsDisplay或以其他方式调用了系统UI代码,这些代码在播放器绘制时“中断”了播放器。解决方案是在用户寻找位置和玩家开始从该位置开始播放之间不更新视图。幸运的是,此问题在4.3+中已修复。

关于iphone - AVErrorMediaServicesWereReset是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6524619/

10-12 00:18
查看更多