2

当每个项目在队列中结束时,我对 avqueueplayer 有一些问题,例如应用程序冻结 2-3 秒。我正在使用 queueplayer 一个接一个地播放记录,没有间隙。为了实现无间隙黑白播放器项目,我需要提前加载播放器项目的资产。我为当前播放的播放器项目和下一个播放器项目加载资产,以便在第一条记录结束时不会有间隙。当第一个记录结束时,我将第二个播放器项目添加到队列播放器中播放,并为第三个播放器项目加载资产。

这样,我的播放器队列始终包含一个播放器项目,但将为当前播放项目和下一个播放项目完成资产加载。随着新记录的添加,这将继续进行。

我发现在新的 iOS 设备中观察到半秒的冻结,在 iPod 4 等旧 iPod 设备中观察到大约 3-4 秒?

我能知道我们如何实现无缝且非冻结的 UI 体验吗?

谢谢

4

1 回答 1

0

尝试提高您的要求,即队列中只有一个玩家项目。

如果队列中的项目超出当前正在播放的内容,则AnAVQueuePlayer将在项目转换时更有效地运行。

“加载”媒体可能意味着一些不同的事情,并且不清楚您在做什么。也许您正在 AVFoundation 之外下载媒体,构建AVAsset或构建AVPlayerItem. 您正在做或推迟的工作将因媒体类型而异(例如,mp4 与 HLS 流)。即使您“预加载”所有内容(这对于 HLS 媒体来说要复杂得多),AVFoundation 仍然有更多工作要做,直到将AVPlayerItem其放入播放器中才会启动。它必须设置一个特定于它需要播放的媒体的渲染管道,然后启动渲染过程。AVQueuePlayer可以通过在需要开始播放该项目之前启动某些过程来实现无缝播放。队列播放器在资源使用方面也很有效,因为它不会在需要时才开始将项目加载到队列中很远的地方。

于 2018-03-27T14:12:53.020 回答