Ios AVQueuePlayer-在缓冲项目时保持活动状态

Ios AVQueuePlayer-在缓冲项目时保持活动状态,ios,objective-c,audio,streaming,avqueueplayer,Ios,Objective C,Audio,Streaming,Avqueueplayer,在缓冲远程AVPlayerItem时,是否可以保持AVQueuePlayer处于活动状态 当前,当项目进入缓冲时,播放停止,所有由MPNowPlayingFocCenter设置的信息将被删除-锁定屏幕、命令中心、外部设备等 我已经测试了AVPlayer/AVQueuePlayer一段时间了,似乎唯一的选择是: 观察远程AVPlayerItem的播放备份缓冲区 当observer触发时,插入带有空mp3文件的新AVPlayerItem 继续观察远程项目的缓冲区,一旦它点击了playbackLike

在缓冲远程AVPlayerItem时,是否可以保持AVQueuePlayer处于活动状态

当前,当项目进入缓冲时,播放停止,所有由MPNowPlayingFocCenter设置的信息将被删除-锁定屏幕、命令中心、外部设备等

我已经测试了AVPlayer/AVQueuePlayer一段时间了,似乎唯一的选择是:

  • 观察远程AVPlayerItem的播放备份缓冲区
  • 当observer触发时,插入带有空mp3文件的新AVPlayerItem
  • 继续观察远程项目的缓冲区,一旦它点击了playbackLikelyToKeepUp,将项目交换到位并前进到远程项目
  • 此方法的问题是,一旦前进到空项,AVQueuePlayer将停止缓冲远程。 我已经设置了对这两个项目的强引用,actionAtItemEnd设置为AVPlayerActionAtItemEndNone。 网络由查尔斯监控


    有没有其他方法可以实现这一点?

    我使用了两个
    AVPlayer
    实例来保持播放活动

    第一个实例保存远程
    AVPlayerItem
    和第二个空声音文件,只有几毫秒长。加载时,您可以一直查找空项

    当远程项目进入缓冲区时,暂停它并播放空文件。由于已经结束,它将保持播放会话处于活动状态。只需将
    actionAtItemEnd
    设置为
    AVPlayerActionAtItemEndNone

    即使这样做有效,当远程项目的缓冲区更改为
    playbackLikelyToKeepUp
    并交换播放器时,您也可以体验一些wierd行为。远程项目可以跳回
    playbackufferty
    ,播放器交换逻辑可能陷入无休止的循环

    我通过延迟缓冲区更新解决了这个问题:

    -(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];
    }
    

    你有没有找到一种方法来保持对遥控器的缓冲?