将 AVPlayer 引用从单元格传递到视图控制器会冻结视频,但音频会继续

Passing AVPlayer reference from a cell to a view controller freezes video but audio continues

我在 UICollectionViewCell 中有一个 AVPlayer 子类。我有一个按钮,当我按下它时,应该以全屏模式显示相同的视频。我想我可以做的是呈现一个 UIViewController 并将其传递给 AVPlayer 的引用,以便它可以将其添加为子视图并继续播放。但是,发生的事情是将其添加为子视图,视频暂停,但音频继续播放。为什么?我该如何解决?

使用 AVPlayerController 来做到这一点。每当您单击按钮时,只需显示具有相同实例的 AVPlayerController。

    @IBAction func buttonTap(_ sender: Any) {
      let vc = storyboard?.instantiateViewController(withIdentifier:"FullScreenPlayer") as! FullScreenPlayerViewController
      vc.player = playerInCell
      present(vc, animated: false)
}

注意:FullScreenPlayerController 是 AVPlayerViewController 的子类

事实证明,如果将 AVPlayer 传递给另一个视图控制器,则必须删除对它的原始强引用。您只能对 AVPlayer 有一个引用,否则它会开始冻结并变得怪异。