我在屏幕上并排播放两个视频,所以我有两个 AVPlayer 实例。我正在使用工作正常的通知检测视频播放结束。我的选择器 (playerDidFinishPlaying) 在两个视频结束时都被调用。
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: nil)
现在我的问题出在选择器 (playerDidFinishPlaying) 上,我想检测它是为哪个 avplayer 调用的?如何唯一标识视频结束的 AVPlayer?
最佳答案
另一个想法。更新了@black_pearl 的方法
不同的通知注册,有不同的通知方式。
var player = AVPlayer()
var playerTwo = AVPlayer()
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlay(_:)), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem)
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishMusic(_:)), name: .AVPlayerItemDidPlayToEndTime, object: playerTwo.currentItem)
}
@objc func playerDidFinishPlay(_ noti: Notification) {
if let p = noti.object as? AVPlayerItem, p == player.currentItem {
print("1")
}
}
@objc func playerDidFinishMusic(_ noti: Notification) {
if let p = noti.object as? AVPlayerItem, p == playerTwo.currentItem{
print("2")
}
}
关于ios - 使用多个 AVPlayer 时如何检测哪个视频结束了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58779517/