AVPlayer在AVPlayerItemStatusFailed(OSStatus错误-12983)时失败

10
有时AVPlayer会出现AVPlayerItemStatusFailed故障,此后,AVPlayer继续以AVPlayerItemStatusFailed失败。我尝试清除AVPlayer实例并创建新实例,但我无法解决AVPlayerItemStatusFailed故障。同时,使用带有AVPlayer实例的UIView进行removingFromSuperview并使用AVPlayer初始化新项目也无法解决问题。
因此,我发现AVPlayer无法完全清除。是否有人建议尝试彻底清除AVPlayer并在故障后使其正常工作? 错误日志:
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x1a689360 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x1a688e70 "The operation couldn’t be completed. (OSStatus error -12983.)", NSLocalizedFailureReason=An unknown error occurred (-12983)}

更新。 针对 @matt

playerItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:filePath.path]];

if (!self.avPlayer) {
  avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
}

[avPlayer.currentItem addObserver:self forKeyPath:@"status" options:0 context:nil];

if (self.avPlayer.currentItem != self.playerItem) {
  [self.avPlayer replaceCurrentItemWithPlayerItem:playerItem];
}

AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
avPlayerLayer.frame = self.bounds;
[self.layer addSublayer:avPlayerLayer];

avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;

[avPlayer play];

展示_你的_代码 - 你用来尝试播放的代码。 - matt
@matt 谢谢您的回答,我已经在上面添加了我的代码。 - instback
filePath.path 有可能是错误的吗?或者是空的吗? - matt
1
@matt 这个链接始终是mp4文件,在Web和模拟器上电影总是可以播放,但不一定在设备上播放。 - instback
3个回答

8

问题在于,这行代码没有条件限制:

[self.layer addSublayer:avPlayerLayer];

因此,每次都在添加一个新的播放器层。这样会堆积很多播放器层,是错误的。必须只有一个播放器层。在添加播放器层之前,保留对旧播放器层的引用并将其删除,或者如果这与以前的播放器相同并且它已经在界面中具有关联的播放器层,则不执行任何操作。

还要确保您没有保留任何AVPlayer、AVPlayerLayer或AVPlayerItem对象。在我的情况下,我使用[player addPeriodicTimeObserverForInterval:]来获取周期性间隔。它会保留AVPlayer。相反,我使用了一个NSTimer,并在需要时使其失效。 - Qamar Suleiman
我使用符号断点来确保AVPlayer被正确释放,而且我只使用了一个AVPlayerLayer实例,但是有时候会出现错误(iOS 8存在一个bug,它无法恢复播放器,所以我必须重新启动播放器),这是为什么呢? - onmyway133

0
创建一个playerItem为nil的AVPlayer共享实例。 下一次只需替换playerItem即可。

-2

iOS模拟器有时会出现这种情况,
尝试重新启动模拟器可能会解决问题。:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接