在缓冲远程AVPlayerItem时是否可以保持AVQueuePlayer处于活动状态?
目前,当项目进入缓冲时,播放停止并且 MPNowPlayingInfoCenter 设置的所有信息都被删除 - 锁定屏幕,命令中心,外部设备等。
我一直在测试AVPlayer / AVQueuePlayer一段时间,似乎唯一的选择是:
这种方法的问题是,一旦你前进到空项目,AVQueuePlayer就会停止缓冲遥控器。 我已经为这两个项目设置了强引用,而actionAtItemEnd设置为 AVPlayerActionAtItemEndNone 。 网络由Charles监控。
还有其他方法可以实现吗?
答案 0 :(得分:0)
我设法使用两个AVPlayer
实例保持播放活动。
第一个实例保存远程AVPlayerItem
和第二个空声音文件,只有几毫秒长。你可以在装载时寻找空白物品。
当远程项目进入缓冲时,暂停它并播放空文件。由于它已经在最后,它将使回放会话保持活动状态。只需将actionAtItemEnd
设置为AVPlayerActionAtItemEndNone
。
即使这样可行,但是当远程项目缓冲区更改为playbackLikelyToKeepUp
并且您交换了玩家时,您可以看到一些奇怪的行为。远程项目可以跳回playbackBufferEmpty
,玩家交换逻辑可能会陷入永无止境的循环。
我通过延迟缓冲区更新来解决这个问题:
-(void)setPendingBuffer:(PlayerItemBuffer)pendingBuffer {
_pendingBuffer = pendingBuffer;
if (self.bufferDispatchTimer.valid) {
[self.bufferDispatchTimer invalidate];
}
self.bufferDispatchTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(bufferDispatchTimerDidFire) userInfo:nil repeats:NO];
}