2016-02-13 118 views
7

我的iOS應用使用AVPlayer從網絡流媒體。我正在使用KVO來檢測緩衝(playbackBufferEmpty)和被抓(playbackLikelyToKeepUp)等事件。但是,我注意到一個怪異的特定錯誤。雖然在大多數網絡速度減慢時,KVO被擊中,當它恢復時,按照預期擊中playbackLikelyToKeepUp KVO,我注意到(有一些頻率)AVPlayer將緩衝一段時間,恢復,playbackLikelyToKeepUp被擊中,音頻可能會播放1-3秒,然後音頻停止播放,就好像它正在緩衝 - 沒有再次點擊playbackBufferEmpty KVO。而且它不能從中恢復。AVPlayer在緩衝後未恢復

TL; DR:playbackBufferEmpty(10-20秒) - >playbackLikelyToKeepUp - >播放1-3s - >停止播放,但不會播放KVO。

最糟糕的部分是發生這種情況時,AVPlayer不像從緩衝恢復時那樣自動重新開始播放,並且應用程序保持沉默,直到AVPlayer被手動停止/再次啓動。它最終會在我每次流時發生。這是AVPlayer的已知問題嗎?這是我可以觀看的第三次KVO賽事嗎?或者有關如何調試的任何提示?謝謝!

編輯:附加信息: 的AVPlayererror屬性爲nil當這種情況發生時,status屬性是準備上場,而rate屬性是1 AKA閒來無事怪異事情,據我可以告訴。

回答

0

我也遇到問題與AVPlayer從緩存/網絡問題中恢復,我也有相同的情形,其中avPlayer.status.readyToPlayavPlayer.errornil,並avPlayer.rate1。談論不可靠!我也檢查了errorLog(),除了通用的互聯網連接錯誤之外,它沒有提供任何相關的信息。

我試圖通過一個定時器來檢測這個狀態,當它超時時,我檢查當前視頻時間和定時器啓動的時間,如果相同(視頻沒有進展),我們可以假設視頻確實沒有在播放時宣稱它是。

然後我將其視爲不可恢復的狀態,並通過創建新的AVPlayerItem來重新加載整個流。