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