从一个视频切换到另一个视频时出现白色闪烁 iOS 13 及更高版本 swift

Zღk*_*Zღk 5 video ios avplayer swift avplayeritem

我正在使用 AVQueuePlayer 循环播放所有选定的视频或通过滑动手势更改视频。

但是当我实现流程时,当用户滑动将视频从一个视频更改为另一个视频时,会出现黑框。因此,为了克服这个问题,我使用了 UIImageView。

我所做的是,当用户滑动下一个视频时,我处理当前时间的视频并拍摄相同的图像并初始化为 imageview 直到下一个视频在队列中可用。下面是用于实现此解决方案的代码

var player : AVQueuePlayer?
var playerItem: [AVPlayerItem] = []

    let tempCurrentIndex = currentIndex
    let tempPlayerItems = self.playerItem

    guard let currentAssest = self.player?.currentItem?.asset else {return}

    let playerCurrentTime = CMTimeGetSeconds(player!.currentTime())
    let newTime = playerCurrentTime + 0.0
    self.player?.pause()

    self.imgvwFlick.image = UIImage()

    self.imgvwFlick.image = self.getFrame(asset: currentAssest, time: newTime)

    self.player?.removeAllItems()
    for i in tempCurrentIndex + 1..<tempPlayerItems.count {
        tempPlayerItems[i].seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero, completionHandler: nil)
        self.player?.insert(tempPlayerItems[i], after: nil)
    }

    self.player?.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero)
    self.currentIndex = tempCurrentIndex + 1
    self.player?.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero)
    self.player?.play()


func getFrame(asset:AVAsset,time:Double) -> UIImage{

    let generate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
    generate.appliesPreferredTrackTransform = true
    generate.requestedTimeToleranceAfter = .zero
    generate.requestedTimeToleranceBefore = .zero


    let cmTime = CMTime(seconds: time, preferredTimescale: asset.duration.timescale)
    let imgRef : CGImage = try! generate.copyCGImage(at: cmTime, actualTime: nil)
    let img : UIImage = UIImage(cgImage: imgRef)
    return img

  }
Run Code Online (Sandbox Code Playgroud)

使用这个它在iOS 12之前都可以正常工作,但是在iOS 13中,当我切换视频时,我发现了一个小的白色闪烁型框架,下面我附上了两个iOS的问题视频

iOS 12:- https://i.stack.imgur.com/oHHFa.jpg

iOS 13:- https://i.stack.imgur.com/09Qvd.jpg

如何解决 iOS 13 中的问题?