使用 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 中播放的主要内容,如果未能解决你的问题,请参考以下文章

无法使用带有 Swift 的 AVPlayer 播放视频

AVFoundation - 视频没有在 AVplayer 的 AVMutablecomposition 中播放

无法使用自定义按钮暂停 AVPlayer

无法将按钮绑定到 AVPlayer

AVPlayer 无法在 iOS8 上播放 NSDocuments 目录中的视频

切换方向时 AVPlayer 刷新(使用 Firebase Firestore 视频链接)