AVPlayer 内容模式

AVPlayer Content Modes

我有一个 AVPlayer,我将它用作我的 UIView 中的背景作为美学。为了初始化和实例化它,我做了

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    guard let path = Bundle.main.path(forResource: "Background", ofType:"mp4") else {
        debugPrint("Background.mp4 not found")
        return
    }

    let player = AVPlayer(url: URL(fileURLWithPath: path))
    let playerLayer = AVPlayerLayer(player: player)

    playerLayer.frame = self.view.bounds
    player.actionAtItemEnd = .none
    player.volume = 0.0

    //chage content mode ** TODO **

    self.view.layer.addSublayer(playerLayer)
    player.play()

}

当我 运行 这样做时,视频按预期播放,但是 AVPlayer 将内容模式默认设置为 fitToWidth。我在 playerplayerLayer 的所有方法中搜索了某种更改内容类型的方法,但无济于事。

我想要的不是fitToWidth我想要fitToHeight.

有什么想法吗?感谢观看!

我能想到一些非常简单的方法来做到这一点。当您的视频内容被获取时,使用 AVPlayerLayer 中的 videoRect 方法来提取视频图像的帧。然后根据图像的大小调整视图大小,使高度达到您想要的程度,宽度是视频高度与视图高度之比的比例。