"playbackBufferFull" 和 "playbackBufferEmpty" 属性有什么区别?

What is the difference between "playbackBufferFull" and "playbackBufferEmpty" properties?

我看过 AVPlayerItem 的 2 个属性:

@property (nonatomic, readonly, getter=isPlaybackBufferFull) BOOL playbackBufferFull;

@property (nonatomic, readonly, getter=isPlaybackBufferEmpty) BOOL playbackBufferEmpty;

现在,Apple 文档是这样说的:

playbackBufferFull:

This property reports that the data buffer used for playback has reach capacity. Despite the playback buffer reaching capacity there might not exist sufficient statistical data to support a playbackLikelyToKeepUp prediction of YES.

playbackBufferEmpty:

It indicates that playback has consumed all buffered media and that playback will stall or end.


从这些陈述中,我的理解是:

playbackBufferFull:

全部数据已加载播放。例如,我正在播放来自 URL 的一段 5 分钟长的视频。当所有的内容都加载到最后时,这些将是真实的。

playbackBufferEmpty:

实际播放已经耗尽了到现在加载的所有缓冲区。例如,数据加载到2.3分钟,播放也到此为止,没有更多内容呈现。 (我觉得是时候开始我们的旋转木马了,一个指标)

我是不是误会了什么?如果是,请指正..

欢迎任何深度知识或建议!

我不是这方面的专家,但这是我的理解:

视频以压缩格式存储。在需要显示帧之前,它们不会被解压缩。当视频正在显示时,这种情况会实时发生在播放缓冲区中。

播放缓冲区是准备显示的解压缩帧的缓冲区。 如果它已满,并不意味着完整的视频已准备好播放。播放缓冲区只有几秒钟长。这意味着播放缓冲区保持的几秒钟播放已满。

如果它为空,则表示没有视频可以播放,因此播放要么结束,要么在加载更多内容时冻结并显示 "buffering" 消息。