无需创建新的AVPlayerLayer即可重新初始化AVQueuePlayer

时间:2016-07-27 12:40:23

标签: ios avplayer avplayerviewcontroller avqueueplayer avplayerlayer

播放远程HLS视频时, 我正在重新初始化AVQueue播放器,它已经使用

初始化了项目
(AVQueuePlayer *)initWithItems:(NSArray<AVPlayerItem *> *)items

然而,通过在后台播放此声音,但AVPlayerLayer卡在上一个视频的最后一帧,视频不会更新。为了确保视频得到更新,我需要删除前一层视频播放器的UIView,重新创建新的AVPlayerLayer并使用以下内容将其分配给UIView for player:

[oldAVPlayerLayer removeFromSuperLayer]
[newAVPlayerLayer playerLayerWithPlayer: myAVQueuePlayer]
[myViewForPlayerLayer addSublayer : newAVPlayerLayer]

这会导致屏幕上的闪烁,如果设备只是iPhone / iPad,这是可以的,但问题是Airplay行为突然出现,导致UISlider声音显示在遥控器中。 有没有办法重新初始化AVQueuePlayer而无需重新创建或重新分配AVPlayerLayer?

1 个答案:

答案 0 :(得分:0)

使用AVPlayer而不是AVQueuePlayer结束,并使用方法

replaceCurrentItemWithPlayerItem

不会引起airplay中的故障,并且因为项目在需要时被实例化,所以也会保存内存。