ios - 使用多个 AVPlayer 时如何检测哪个视频结束了?

标签 ios swift avplayer avplayeritem avkit

我在屏幕上并排播放两个视频,所以我有两个 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/

相关文章:

ios - UITextField Xcode 的圆角

objective-c - AVPlayer 播放声音,但在 Mac 应用程序中不显示 View

swift - 如何从我的 WatchKit 应用程序打开 iPhone 上的父应用程序?

swift - 我正在下载一个音频文件并将其保存在目录中,但无法播放。 (操作系统状态错误 2003334207。)

objective-c - 使用 AVPlayer 播放加密视频

ios - 从相机切换到视频时 UIImagePickerController 崩溃

ios - 后台任务不会在 Swift 中重新启动

ios - 如何在我自己的应用程序中实现 Apple Music 中的迷你播放器?

ios - 如何判断 Xcode 是否在目标中包含框架

ios - 如何知道是否在 Xcode 中触摸了 .png 的唯一可见区域