【问题标题】:AVPlayerViewController show black screen some timesAVPlayerViewController 有时会显示黑屏
【发布时间】:2018-06-04 17:17:09
【问题描述】:

我创建了一个播放器,并且在大多数情况下都可以正常工作。

在某些情况下(我没有意识到为什么)屏幕视频会保持黑色,并且播放按钮什么也不做。

我验证了网址,没问题。

在我的 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
    }
}

有人知道怎么回事吗? 提前致谢!!

【问题讨论】:

    标签: ios swift avplayer avplayerviewcontroller


    【解决方案1】:

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

    问题是我没有在 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
    }
    

    我希望它可以帮助别人!

    【讨论】:

    • 您好 Rafaela Lourenço,我的消息应用程序也面临同样的问题。我在 tableview 中有一个视频单元格。我第一次从图库中选择视频,点击发送它的工作正常。但是当我关闭应用程序时,将其杀死并重新打开,视频没有显示并且它是空白的。奇怪的是,如果我选择另一个视频并发送聊天,那么所有其他视频都会开始出现。请让我知道我做错了什么。如果你愿意,我也可以提供代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2010-12-31
    • 2011-01-11
    • 2012-01-15
    • 2020-09-18
    相关资源
    最近更新 更多