AVPlayerViewController 有时显示黑屏

AVPlayerViewController show black screen some times

我创建了一个播放器并且大部分时间都运行良好。

在某些情况下(我没有意识到为什么)屏幕视频保持黑色,播放按钮不执行任何操作。

我验证了 url 没问题,这不是问题。

在我的 viewController 中,我可以使用不同的 url 多次调用此代码块,这就是我 'restart' AVPlayerViewController 的原因。

    // Create an var in class...

    // ....

    self.videoPlayerViewController?.player?.pause()
    self.videoPlayerViewController = AVPlayerViewController()
    self.videoPlayerViewController?.player = viewModel.avPlayer

    if let avController = self.videoPlayerViewController {
        self.add(avController, in: self.playerView)
        avController.player?.play()
    } else {
        // Error
    }

这是函数添加:

extension UIViewController {

    func add(_ viewController: UIViewController, in view: UIView) {
        viewController.view.frame = view.bounds
        addChildViewController(viewController)
        view.addSubview(viewController.view)
        viewController.didMove(toParentViewController: self)
        view.clipsToBounds = true
    }
}

有人知道哪里出了问题吗? 提前致谢!!

经过这么多时间..我找到了解决方案。

问题是我没有在 AVPlayerController 中清理 AVPlayer。我还在 DispachQueue 中添加了新实例。

这是新代码:

self.videoPlayerViewController?.player?.pause()
self.videoPlayerViewController?.player = nil
self.videoPlayerViewController = nil
self.videoPlayerViewController = AVPlayerViewController()
self.videoPlayerViewController?.player = viewModel.avPlayer

在我添加 viewController 之后:

if let avController = self.videoPlayerViewController {
     DispatchQueue.main.async { [weak self] in
         if let strongSelf = self {
             strongSelf.add(avController, in: strongSelf.playerView)
             avController.player?.play()
         }
     }
} else {
    // Error
}

希望对大家有所帮助!!