2

我已经看到了 2 个属性AVPlayerItem

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

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

现在,这是 Apple 文档中所说的:

播放缓冲区满:

此属性报告用于播放的数据缓冲区已达到容量。尽管播放缓冲区已达到容量,但可能没有足够的统计数据来 playbackLikelyToKeepUp支持YES.

播放缓冲区空:

它表示播放已消耗所有缓冲媒体,播放将停止或结束。


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

播放缓冲区满:

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

播放缓冲区空:

实际播放已经消耗了到目前为止加载的所有缓冲区。例如,直到 2.3 分钟的数据已经加载,并且播放也到了那个时间,没有更多的内容可以呈现。(我想现在是时候开始我们的旋转木马了,一个指标)

我有什么误解吗?如果是,请纠正我..

欢迎任何深入的知识或建议!

4

1 回答 1

5

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

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

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

如果它是空的,则意味着没有准备好播放的视频,因此播放要么完成,要么在加载更多内容时冻结并显示“缓冲”消息。

于 2016-06-03T11:22:41.420 回答