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
}
希望对大家有所帮助!!
我创建了一个播放器并且大部分时间都运行良好。
在某些情况下(我没有意识到为什么)屏幕视频保持黑色,播放按钮不执行任何操作。
我验证了 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
}
希望对大家有所帮助!!