选择新的 UITableViewCell 时停止 AVPlayer 视频

Stop AVPlayer video when a new UITableViewCell is selected

我想根据我的表格视图中的 selected 单元格显示视频。我想在 vc.

的视图中显示视频

以下代码在点击单元格时显示正确的视频,但每当我 select 一个新单元格时,旧视频中的音频仍然存在。我怎样才能删除它?

在我的 vc 中设置视图:

    func setupView(for url: URL) {
        let player = AVPlayer(url: url)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.videoView.bounds
        self.videoView.layer.addSublayer(playerLayer)
        player.play()
    }
    

didSelectRow 代码:

 let selectedExercise = exercises[indexPath.row]
        setupView(for: URL(string: selectedExercise.videoUrl)!)
  

我猜我应该先 pause/stop 上一个视频再放新视频。但我不知道该怎么做。 非常感谢!

这是因为您每次点击都会创建新的 AVPlayer 实例。

要解决您的问题,您需要搬家 let player = AVPlayer(url: url)setupView() 之外并且只调用一次。例如,您可以将其移动到 init()

要更新 setupView() 中的资产(视频 url),您可以使用 player.replaceCurrentItem(with: AVPlayerItem(url: url)) .