AVPlayerItemがストリームの最後までバッファリングされているかどうかを判断する最善の方法を判断しようとしています。バッファがいっぱいであるだけでなく、追加のバッファリングなしで残りのアイテムを再生するのに必要なものがすべてバッファに格納されていること。 AVPlayerItemはisPlaybackBufferFull呼び出しを提供しますが、アイテムの再生が完了する前に追加のバッファリングが必要かどうかはわかりません。AVPlayerItemがソングの終わりまでバッファリングされたときを知る方法
現在の計画では、preferredForwardBufferDurationと組み合わせてアイテムをバッファリングする必要があるかどうかを確認しますが、これが最善の方法ですか?例えば
:
- (void)observeValueForKeyPath:(NSString*)aKeyPath ofObject:(id)aObject change:(NSDictionary*)aChange context:(void*)aContext
{
if([aKeyPath isEqualToString:@"playbackBufferFull"])
{
CMTime theBufferTime = CMTimeMakeWithSeconds(self.currentItem.preferredForwardBufferDuration, 1);
CMTime theEndBufferTime = CMTimeAdd(self.currentItem.currentTime, theBufferTime);
if(CMTimeCompare(theEndBufferTime, self.currentItem.duration) >= 0)
{
// Buffered to the end
}
}
}