2015-12-31 37 views
2

我正在使用AVPlayer自定義視頻播放器。我將存儲在本地文件系統中的視頻加載到緩存文件夾(NSCache)中。我初始化球員是這樣的:從本地URL加載AVPlayerItem問題

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 

奇怪的是,有時失敗了相同的URL只是不久後工作,這樣的失敗之前。我會說每10次加載嘗試失敗。我無法弄清楚是什麼原因或在哪裏尋找答案。搜索錯誤代碼對我來說是空的。任何幫助或指針,高度讚賞。

+0

你可以參考這個答案:http://stackoverflow.com/questions/22178444/can-t-observe-avplayeritem-for-status-key –

+0

@vienvu非常感謝提示,但這是不相關的。觀察部分確實起作用,並且玩家項目確實改變了其狀態,與此問題不同。該狀態附有一個錯誤對象,我正在尋找導致此錯誤的原因。 –

+0

你可以檢查:控制器你播放已經釋放的視頻嗎? –

回答

3

經過漫長的追捕之後,我找到了問題的根源。問題是可以同時存在的AVPlayer項目數量的無證限制。如果實例太多,視頻將無法再加載失敗,AVPlayerItem錯誤-12983。

其他人似乎也遇到同樣的問題:AVPlayerItemStatusFailed error when too many AVPlayer instances created。我通過重複使用播放器實例並確保同時沒有太多活躍播放器來解決此問題。