即使rate属性为0,AVPlayer也会播放

时间:2016-01-19 05:47:35

标签: ios swift avplayer avplayeritem

This other SO post建议当rate的{​​{1}}属性为0时,表示AVPlayer不再播放。我们使用下面的观察者代码来循环播放视频,但有时在播放器上调用AVPlayer函数无法打破循环。调试时,pause属性的计算结果为0。

1)链接的SO帖子是否错误,因为费率值为0并不意味着播放器暂停?

2)即使在调用rate函数之后,连续循环是否已经发出pause通知后pause函数出现的某种竞争条件?

playerItemDidReachEnd

1 个答案:

答案 0 :(得分:0)

设置播放器时:

player.actionAtItemEnd = AVPlayerActionAtItemEnd.None

NSNotificationCenter.defaultCenter().addObserver(self, 
                                                 selector: "playerItemDidReachEnd:", 
                                                 name: AVPlayerItemDidPlayToEndTimeNotification, 
                                                 object: player.currentItem)

这会阻止玩家在结束时暂停。

通知中的

func playerItemDidReachEnd(notification: NSNotification) {
    let p: AVPlayerItem = notification.object as! AVPlayerItem
    p.seekToTime(kCMTimeZero)
}

这将回放电影。

释放播放器时,请不要忘记取消注册通知。