2016-02-13 9 views
7

私のiOSアプリは、ウェブからメディアをストリーミングするAVPlayerを使用してバッファリングした後のリカバリされていません。私はバッファリング(playbackBufferEmpty)のようなイベントを検出するためにKVOを使用しており、キャッチアップされています(playbackLikelyToKeepUp)。しかし、私は奇妙なバグに気づいた。ほとんどのネットワークの減速の間に、playbackBufferEmpty KVOがヒットし、それが回復すると、playbackLikelyToKeepUp KVOが期待どおりにヒットしました。私は(ある周波数で)AVPlayerが一定時間バッファして復旧したことに気づいた、playbackLikelyToKeepUp 、オーディオは多分1-3秒間再生し、それがが再びplaybackBufferEmpty KVOを押すことなくbuffering- であるかのように、オーディオは再び再生を停止します。そして、これから回復しません。AVPlayerは

TL; playbackBufferEmpty(10-20秒) - >playbackLikelyToKeepUp - > 1-3秒間再生 - >再生を停止しますが、KVOはヒットしません。

最悪の場合、AVPlayerは、バッファリングから回復するときと同じように自動再生を開始せず、AVPlayerを手動で停止/再開するまではサイレント状態です。それは、私がストリームするたびに、多かれ少なかれ発生します。これはAVPlayerの既知の問題ですか?これは私が見ることができる3番目のKVOイベントですか?またはこれをデバッグする方法に関するヒント?ありがとう!

EDIT:追加情報: AVPlayererrorプロパティはnilこの問題が発生したとき、statusプロパティは再生する準備ができている、とrateプロパティが1 AKA奇妙他に何も私の知る限りとして、起こっていないです伝えることができます。

答えて

0

私はまた、バッファリング/ネットワークの問題からの回復AVPlayerの問題を経験している、と私はあまりにもavPlayer.errornilで、avPlayer.rate1で、avPlayer.status.readyToPlayでまったく同じシナリオを持っています。信頼できないと話す!私もerrorLog()をチェックしましたが、これは一般的なインターネット接続エラー以外は何も提供していません。

タイムアウトしたときに、現在のビデオ時刻とタイマーが開始した時刻をチェックし、同じ(ビデオが進行していない)場合は、この状態を検出しようとしますビデオは本当にそれがそうであると主張しているときに再生されていません。

次に、これを回復不能な状態として扱い、新しいAVPlayerItemを作成してストリーム全体をリロードします。