是否可以在缓冲远程AVPlayerItem时保持AVQueuePlayer活动?
目前,当项目进入缓冲时,播放停止并且 MPNowPlayingInfoCenter 设置的所有信息都被删除 - 锁定屏幕,命令中心,外部设备等 .
我一直在测试AVPlayer / AVQueuePlayer一段时间了,似乎唯一的选择是:
-
观察 playbackBufferEmpty 的远程AVPlayerItem
-
当观察者触发时,插入带有空mp3文件的新AVPlayerItem .
-
继续观察远程项目的缓冲区,一旦它到达 playbackLikelyToKeepUp ,交换项目到位并前进到远程项目 .
这种方法的问题是,一旦你前进到空项目,AVQueuePlayer停止缓冲遥控器 . 我已经为这两个项设置了强引用,actionAtItemEnd设置为 AVPlayerActionAtItemEndNone . 网络由Charles监控 .
有没有其他方法来实现这一目标?
1 回答
我设法使用两个
AVPlayer
实例保持播放活动 .第一个实例保存远程
AVPlayerItem
和第二个空声音文件,只有几毫秒长 . 您可以在加载时查找空项目 .当远程项目进入缓冲时,暂停它并播放空文件 . 由于它已经在最后,它将使回放会话保持活动状态 . 只需将
actionAtItemEnd
设置为AVPlayerActionAtItemEndNone
即可 .即使这样可行,当远程项目的缓冲区更改为
playbackLikelyToKeepUp
并且您交换了玩家时,您可以显示一些奇怪的行为 . 远程项目可以跳回到playbackBufferEmpty
,播放器交换逻辑可以进入永无止境的循环 .我通过延迟缓冲区更新解决了这个问题: