使用 AVPlayer 时为啥我的视频无法在我的 UIView 中播放
Posted
技术标签:
【中文标题】使用 AVPlayer 时为啥我的视频无法在我的 UIView 中播放【英文标题】:Why won't my video play in my UIView when using AVPlayer使用 AVPlayer 时为什么我的视频无法在我的 UIView 中播放 【发布时间】:2020-11-11 14:56:38 【问题描述】:我正在使用以下代码使用 AVplayer 播放视频,由于某种原因视频无法播放, 但是当我更改要在主视图中播放的视频时,视频播放正常我不确定我做错了什么
下面的代码不会播放视频
class ViewController: UIViewController
let videoView : UIView =
let video = UIView()
return video
()
override func viewDidLoad()
super.viewDidLoad()
constraints()
override func viewWillAppear(_ animated: Bool)
setupVideoPlayer()
func setupVideoPlayer()
let videoToPlay = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "coverr--08-20-surfing-waves-cloudy-08-3016", ofType: "mp4")! ))
let layer = AVPlayerLayer(player: videoToPlay)
layer.frame = videoView.bounds
videoView.layer.addSublayer(layer)
videoToPlay.play()
extension ViewController
func constraints()
view.backgroundColor = .white
view.addSubview(videoView)
videoView.anchor(top: view.safeAreaLayoutGuide.topAnchor, left: view.leftAnchor, right: view.rightAnchor, height: 450)
当我更改代码时
layer.frame = videoView.bounds
videoView.layer.addSublayer(layer)
到
layer.frame = view.bounds
view.layer.addSublayer(layer)
它可以解决我做错的任何想法
【问题讨论】:
我注意到您没有在viewWillAppear(_:)
覆盖中调用超级实现。也许这会导致那个问题。
yes 调用 super.viewWillAppear 并尝试调用 viewDidAppear 中的 setupVideoPlayer() 方法。
感谢反馈我都试过了,结果还是一样,不明白为什么不能播放
只是一个更新我已经解决了我的功能应该在 viewDidAppear 而不是 viewWillAppear 中的问题
【参考方案1】:
根据您的描述,听起来子视图没有接受约束。 你可以试试:
let videoView : UIView =
let video = UIView()
video.translatesAutoresizingMaskIntoConstraints = false
return video
()
【讨论】:
以上是关于使用 AVPlayer 时为啥我的视频无法在我的 UIView 中播放的主要内容,如果未能解决你的问题,请参考以下文章
AVFoundation - 视频没有在 AVplayer 的 AVMutablecomposition 中播放