ios - 使用 AVQueuePlayer 播放器项目的无缝和非卡住播放

标签 ios avqueueplayer

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

通过这种方式,我的播放器队列始终包含单个播放器项目,但将为当前播放项目和下一个播放项目完成 Assets 加载。随着新记录的添加,这将继续移动。

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

我能知道我们如何才能实现无缝且不卡住的 UI 体验吗?

谢谢

最佳答案

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

AVQueuePlayer 如果其队列中的项目超出当前播放的范围,则在项目转换时将更有效地运行。

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

关于ios - 使用 AVQueuePlayer 播放器项目的无缝和非卡住播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735825/

相关文章:

html - SpeechSynthesis.speak 什么时候可以在 iOS Safari 上运行?

ios - iPhone 6 的不同 Storyboard

ios - UIImageView.highlighted 不工作

ios - 订阅位于 UITableViewDataSource 内的 UITableViewCell 中的 UIButton.rx.tap

ios - avqueueplayer 在后台模式下播放问题

iphone - iPhone短文件播放

ios - AVQueuePlayer 不前进到 iOS 8 中的下一个项目

ios - iOS,如何为有趣的应用程序划粗线?

swift - NSNotificationCenter 到 AVQueuePlayer swift

ios - 使用AVPlayerLooper循环播放多个视频