检测 AvPlayer 何时停止

Detect when AvPlayer is stopped

我正在使用 AVPlayer class 来读取流。 我要监听回放。

这是我的问题:是否可以检测到播放器何时被用户停止?

我查看了 MPMoviePlayerController。如果用户停止播放视频,此控制器会发送通知:MPMovieFinishReasonUserExited。有没有等价物?

您可以通过在播放器上为键 rate 添加观察者来监视 rate 属性。

A value of 0.0 means pauses the video, while a value of 1.0 play at the natural rate of the current item.

Apple documentation and this topic.

希望这对您有所帮助。

这是@Thlbaut 回答的swift 3 代码

self.avPlayer?.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)

然后

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "rate" {
        if let playRate = self.avPlayer?.rate {
            if playRate == 0.0 {
                print("playback paused")
            } else {
                print("playback started")
            }
        }
    }
}