多个音频同时播放问题
multiple audios playing same time issue
这是我的集合视图单元格的代码,
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
}
}
问题是当我“打开”一个音频并且在播放下一个音频时它处于“打开”状态时,两个音频都在播放。
我想在播放新音频时关闭上一个。
除了重新加载整个东西之外还有什么办法吗?
在您的表视图控制器中保留一个 FeedVideoCollectionViewCell 类型的变量。在 didSelectCell 上检查是否为 nil,如果不是,则关闭音频。将选定的单元格分配给全局变量。开始播放..
这是我的集合视图单元格的代码,
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
}
}
问题是当我“打开”一个音频并且在播放下一个音频时它处于“打开”状态时,两个音频都在播放。
我想在播放新音频时关闭上一个。
除了重新加载整个东西之外还有什么办法吗?
在您的表视图控制器中保留一个 FeedVideoCollectionViewCell 类型的变量。在 didSelectCell 上检查是否为 nil,如果不是,则关闭音频。将选定的单元格分配给全局变量。开始播放..