首页 文章

AVPlayerViewController有时显示黑屏

提问于
浏览
1

我创造了一个玩家并且在大多数时候工作得很好 .

在某些情况下(我没有意识到为什么)屏幕视频保持黑色,播放按钮不起作用 .

我验证了网址并且没问题,这不是问题所在 .

在我的viewController中,我可以使用不同的url将这段代码调用多次,这就是我'重启'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
    }
}

有人知道出了什么问题吗?提前致谢!!

1 回答

  • 1

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

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

    这是新代码:

    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
    }
    

    我希望它可以帮助别人!

相关问题