2016-10-20 13 views
2

私はストリーミングビデオアプリを持っており、アプリがバッファリングされているかどうかをどのように検出できるか知りたいと思います。AVPlayerでバッファリングを検出するにはどうすればよいですか?

AVPlayerには、再生バッファが現在のダウンロード速度に追いつく可能性があることを示すcurrentItem.isPlaybackLikelyToKeepUpブール値と、再生バッファが空のときを知らせるcurrentItem.isPlaybackBufferEmptyがあります。

問題は、ビデオが再生中で、インターネットが遅すぎるためビデオが一時停止しているときに発生します。再生ボタンを押すと、プレーヤーのrateは1ですが再生していません。

動画がバッファリングされているため、動画が一時停止していることを検出するにはどうすればよいですか? currentItem.isPlaybackBufferEmptyは...

EDIT動画が再生されている場合にも当てはまります。私は、バッファリングが唯一、ローダは今だけのビデオ開始後数秒を示しcurrentItem.isPlaybackBufferEmpty && !currentItem.isPlaybackLikelyToKeepUp場合に表示されて表示することを示し、これらの2となりましローダーを組み合わせています遊ぶ。

答えて

0

これは私のために正常に動作し、多分それはself?.bufferState()

private func bufferState() { 
    if let currentItem = self.avPlayer.currentItem { 
     if currentItem.status == AVPlayerItemStatus.readyToPlay { 
      if currentItem.isPlaybackLikelyToKeepUp { 
       print("Playing ") 
      } else if currentItem.isPlaybackBufferEmpty { 
       print("Buffer empty - show loader") 
      } else if currentItem.isPlaybackBufferFull { 
       print("Buffer full - hide loader") 
      } else { 
       print("Buffering ") 
      } 
     } else if currentItem.status == AVPlayerItemStatus.failed { 
      print("Failed ") 
     } else if currentItem.status == AVPlayerItemStatus.unknown { 
      print("Unknown ") 
     } 
    } else { 
     print("avPlayer.currentItem is nil") 
    } 
} 

addPeriodicTimeObserver内を呼び出して、助けることができます
関連する問題