请有人告诉我是否有一种方法可以选择性地预缓冲AVQueuePlayer
数组中的 avplayeritems,而不是将其保留AVQueuePlayer
为仅在第一个项目完成播放时才加载下一个项目的自动方式。
我正在加载一系列 4 个短片剪辑,我想在告诉AVQueuePlayer
播放数组之前预先缓存它们。实际上有没有一种方法可以深入 avqueueplayer 并根据需要控制预缓冲?
现在,凭借其默认的延迟加载行为,我在播放中遇到了一些问题,剪辑甚至无法正常播放,因为它AVQueuePlayer
正在尝试在播放时加载下一个剪辑。我在部署到实际设备的 iPad 上执行此操作,而不是使用模拟器。
您可以通过调用 mpmovieplayer 来执行此操作,[player prepareToPlay];
它基本上手动启动您想要的每个视频文件的加载,然后您可以通过观察mpmovieplayerLoadstateDidChange
通知并测试loadState
值以查看它是否已完全加载来检查加载是否完成,然后告诉mpmovieplayer 播放。你怎么能有效地做类似的事情AVQueuePlayer
呢?
这甚至是可能的还是我发现了它的主要缺点之一AVQueuePlayer
?
斯蒂芬的好建议playerObserver
,但需要的是你需要能够明确地将单个项目加载到内存中,然后告诉AVQueuePlayer
'不要播放数组中的第一个项目,直到数组中的所有项目都加载到memory' 目前似乎没有办法开始加载数组中的第二个项目,直到第一个项目即将结束!
作为一个稍微独立的问题,我还注意到AVQueuePlayer
,如果AVPlayerItems
在播放数组一直播放,剪辑第一次播放正常,但是当再次播放同一剪辑(作为单独的AVPlayerItem
)时,它会非常快速地播放,直到视频中的某个点最后开始以正常速度播放从那里。
有没有其他人注意到这种行为?