从本地网址

时间:2015-12-31 04:41:24

标签: ios avfoundation avplayeritem

我正在使用AVPlayer制作自定义视频播放器。我将存储在本地文件系统中的视频加载到缓存文件夹(NSCache)中。我像这样初始化播放器:

self.playerItem = [[AVPlayerItem alloc] initWithURL:self.localURL];
[self.playerItem addObserver:self forKeyPath:NSStringFromSelector(@selector(status)) options:NSKeyValueObservingOptionInitial context:nil];
self.avPlayer = [[AVPlayer alloc]initWithPlayerItem:self.playerItem];
[self.avPlayer addObserver:self forKeyPath:NSStringFromSelector(@selector(status)) options:NSKeyValueObservingOptionInitial context:nil];

这通常很好。但是我经常在AVPlayerItem的状态失败并出现此错误:

NSLocalizedDescription = "The operation could not be completed";
NSLocalizedFailureReason = "An unknown error occurred (-12983)";
NSUnderlyingError = "Error Domain=NSOSStatusErrorDomain Code=-12983

奇怪的是,失败的相同网址有时会在失败之后不久发生。我会说每10次加载尝试都会失败。我无法弄清楚导致这个或哪里寻找答案的原因。搜索错误代码对我来说是空的。任何帮助或指示都非常感谢。

1 个答案:

答案 0 :(得分:3)

经过漫长的狩猎,我能够找到问题的根源。问题是对可以同时存在的AVPlayer项目数量的未记录限制。如果实例太多,则无法再加载视频,导致AVPlayerItem错误失败-12983。

其他人似乎也遇到了同样的问题:AVPlayerItemStatusFailed error when too many AVPlayer instances created。我通过重用播放器实例并确保同时没有太多活动实例解决了这个问题。