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

时间:2016-06-03 10:40:40

标签: ios avplayer avplayeritem

我见过AVPlayerItem的2个属性:

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

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

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

playbackBufferFull:

  

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

playbackBufferEmpty:

  

表示播放消耗了所有缓冲的媒体   播放将停止或结束。

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

playbackBufferFull:

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

playbackBufferEmpty:

实际播放已消耗到目前为止加载的所有缓冲区。例如,已经加载了直到2.3分钟的数据,并且直到该时间已经达到回放并且不再有内容呈现。 (我认为现在是开始旋转木马的时候了,指标)

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

如果它是空的,则意味着没有可以播放的视频,因此播放已完成或者它将冻结并显示"缓冲"消息加载更多内容时。