控制avqueueplayer中项目的预缓冲

Geo*_*f H 4 avfoundation ipad ios avplayer avqueueplayer

请有人告诉我是否有一种方法可以选择性地预先缓冲AVQueuePlayer阵列中的avplayeritems,而不是将其保留AVQueuePlayer为仅在第一项完成播放时加载下一项的自动方式. 

我正在加载一系列4个短片段,我想在告诉AVQueuePlayer播放阵列之前预先缓存它们.实际上有一种方法可以获得avqueueplayer的bonet并根据需要控制预缓冲吗?

现在有了它的默认延迟加载行为,我在播放中得到了一些好处,剪辑甚至没有正常播放,因为它AVQueuePlayer正在尝试在播放时加载下一个剪辑.我在iPad上执行此操作已部署到实际设备而不是模拟器.

您可以使用mpmovieplayer通过调用[player prepareToPlay];基本上手动启动所需的每个视频文件的加载来执行此操作,然后您可以通过查看mpmovieplayerLoadstateDidChange通知并测试loadState值以查看是否已完全加载来检查加载的完成情况,然后告诉mpmovieplayer玩.你怎么能有效地做类似的事情AVQueuePlayer

这甚至可能还是我发现了一个主要的缺点AVQueuePlayer


playerObserver斯蒂芬很好的建议,但是需要的是你需要能够明确地将单个项目加载到内存中,然后告诉AVQueuePlayer'不要播放数组中的第一项,直到数组中的所有项都加载到内存'目前似乎没有办法启动数组加载中的第二项,直到第一项即将结束!

作为一个稍微独立的问题,我还注意到了一些奇怪的AVQueuePlayer地方,如果你将两个相同的源视频文件加载到数组中(两者都被引用为两个完全独立的,AVPlayerItems就像你应该做的那样)当你播放视频片段时数组一直播放,第一次剪辑播放ok,但是当再次播放相同的剪辑(作为单独的剪辑AVPlayerItem)时,它会非常快速地播放,直到视频中的某个点最终开始以正常速度播放从那里.

有没有人注意到这种行为?

mid*_*s06 6

Apple Developer Support刚刚向我确认AVQueuePlayer不会缓冲视频项目.