Swift 应用程序上的 AVPlayer 显示黑屏,但在播放视频时播放音频

Posted

技术标签:

【中文标题】Swift 应用程序上的 AVPlayer 显示黑屏,但在播放视频时播放音频【英文标题】:AVPlayer on Swift app shows a black screen but plays audio when playing video 【发布时间】:2020-12-10 17:44:52 【问题描述】:

Swift 新手!我试图让应用程序在按下按钮时播放我的资源中的视频。我的 ViewController 中有这个方法:

if let path = Bundle.main.path(forResource: "Cypress", ofType: "mov") 
        let player = AVPlayer(url: URL(fileURLWithPath: path))
        
        // Create a new AVPlayerViewController and pass it a reference to the player.
            let controller = AVPlayerViewController()
            controller.player = player

            // Modally present the player and call the player's play() method when complete.
        self.present(controller, animated: true) 
                player.play()
            
    

但是,当视频开始播放时,它是黑屏,但音频可以正常播放。有什么快速解决方法吗?我正在使用 Xcode 12.2 版。任何建议将不胜感激谢谢:)

【问题讨论】:

问题可能出在视频文件本身/编码上。 ***.com/questions/27753755/… 是的!视频必须是 mp4 而不是 mov。谢谢! 【参考方案1】:

问题在于视频文件本身/编码。

具有欺骗性的是,Quicktime“.mov”格式不是视频编解码器,而是音频/视频容器格式,可以包含任意数量的压缩编解码器(h.264、mpeg2、 ProRes、MJPEG、AAC、mp3 等)...您的文件无法正常工作,因为它们包含使用 ios 不支持的编解码器压缩的视频。

来自@alexkent 在this SO answer on another post。

我认为.mov 不一定适合您,但您必须确保它的编码方式与 iOS 兼容。因此,正如您在 cmets 中提到的,使用 .mp4 可确保视频以与 iOS 兼容的方式编码。

【讨论】:

以上是关于Swift 应用程序上的 AVPlayer 显示黑屏,但在播放视频时播放音频的主要内容,如果未能解决你的问题,请参考以下文章

Avplayer有时会显示黑屏但声音很好

swift中的 AVPlayerViewController 和 AVPlayer 不显示任何内容

在 Swift 和 AVPlayer 中显示音频流的图稿? [复制]

swift中的AVPlayer状态监听器

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

AVPlayer 无法正常工作 - Swift