首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVQueuePlayer的预缓存

AVQueuePlayer的预缓存
EN

Stack Overflow用户
提问于 2010-11-19 02:15:05
回答 5查看 14.2K关注 0票数 23

有没有人知道,当当前项目即将结束播放时,AVQueuePlayer是否会开始缓冲下一个AVPlayerItem

我知道文档中没有任何建议,我主要是问是否有人观察到了这种行为。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-07 20:13:57

好了,我已经再次检查了这个问题,并编写了一些代码来检查AVQueuePlayer

jollyCocoa的回答给我指明了正确的方向,他建议观察AVPlayerItem上的status属性。然而,文档似乎并没有指出这个属性(特别是它的AVPlayerItemStatusReadyToPlay值)可能与缓冲有关。

但是,AVPlayerItem's loadedTimeRanges属性似乎更多地与缓冲有关。

在数组上做KVO有点棘手-数组对象本身不会改变,只有它的项改变-所以我求助于每秒打印出它的内容。

我发现,在队列的第一个项目中的几秒钟内,第二个项目的loadedTimeRanges显示了一个新的CMTimeRange,开始时间为0,持续时间较短。当前一个项目继续播放时,持续时间可以增加到60秒左右。

简短回答: AVQueuePlayer会在播放当前AVPlayerItem的同时缓冲下一个one。

票数 22
EN

Stack Overflow用户

发布于 2011-11-08 11:46:49

从iOS 5开始,AVQueuePlayer似乎不再预缓冲了。它确实预先缓冲了iOS 4中的下一首曲目。

我不确定为什么会有这样的改变,或者这是否苹果方面的故意行为,或者仅仅是一个bug。在任何情况下,这都是一件痛苦的事情,我将向他们提交一个关于它的bug。

票数 8
EN

Stack Overflow用户

发布于 2012-07-05 11:56:17

找到了解决办法!经过几个小时的搜索和失败的测试,我找到了一个可以在iOS 5和更高版本上运行的解决方案。

这将播放文件,中间没有任何延迟。如果你想在不同的文件之间切换,就不那么方便了,但肯定会帮你把所有东西放在一起。在添加AVURLAsset时,仍然可以跟踪每个文件的起始位置,保留CMTime变量,如下所示:

代码语言:javascript
复制
NSValue *toJumpTo = [NSValue valueWithCMTime:composition.duration];
[array addObject:toJumpTo];

然后遍历数组,检查当前时间值并使用CMTimeCompare进行比较。

编辑:在web存档中可见的this page上找到(链接当前指向垃圾邮件)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4218090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档