多个音频同时播放

时间:2020-09-07 20:54:26

标签: ios swift iphone xcode

这是我的收藏夹视图单元格的代码,

class FeedVideoCollectionViewCell: UICollectionViewCell {
    
    @IBOutlet var audioBtn: UIButton!
    @IBOutlet var videoView: AVPlayerView!
    
    var player : AVPlayer?
    var actionComplete: ((_ index:Int) -> Void)?
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
    
    @IBAction func audioBtnAction(_ sender: UIButton) {
        if player?.isMuted ?? false {
            actionComplete?(sender.tag)
            player?.isMuted = false
            audioBtn.setImage(UIImage(named: "HomeFeedVolOn"), for: .normal)
        } else {
            player?.isMuted = true
            audioBtn.setImage(UIImage(named: "HomeFeedVolOff"), for: .normal)
        }
    }
    
    func setData(_ model:Post) {
        if (model.media?.count ?? 0) > 0 {
            let videoURL = URL(string: model.media?[0].sourcePath ?? "")
            player = AVPlayer(url: videoURL!)
            let castedLayer = videoView.layer as! AVPlayerLayer
            castedLayer.player = player
            player?.isMuted = true
            player?.play()
        }
    }
}

class AVPlayerView: UIView {
    override class var layerClass: AnyClass {
        return AVPlayerLayer.self
    }
}

问题是当我打开一个音频而又打开第二个音频时,两个音频都在播放。

我要在播放新音频时关闭上一个。

除了重新加载整个东西之外,还有什么办法。

1 个答案:

答案 0 :(得分:1)

在tableview控制器中,保留一个类型为FeedVideoCollectionViewCell的变量。在didSelectCell上检查是否为零,如果没有,请关闭音频。将选定的单元格分配给全局变量。开始播放。