CMTimeGetSeconds持续时间和addPeriodicTimeObserver在结尾不相等

时间:2018-01-12 08:52:31

标签: ios swift avplayer

有没有人知道为什么我的CMTimeGetSeconds值来自持续时间,而addPeriodicTimeObserver不相等?如果总秒数小于0.5小时,则效果很好,但如果超过0.5小时则不行。谢谢!

audioPlayer?.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main, using: { (progressTime) in
  currentSeconds = CMTimeGetSeconds(progressTime)

  if let duration = self.audioPlayer?.currentItem?.duration {
     let durationSeconds = CMTimeGetSeconds(duration)

     if currentSeconds == durationSeconds {
        self.handleAudioFinishPlaying()
     }
  }
})

我将它们打印出来,这就是结果:5302.088表示durationSeconds,5303.112表示持续时间。

1 个答案:

答案 0 :(得分:0)

由于时间来自不同的来源,因此“三角洲”可能会略有差异。毫秒,因此你应该round他们这样做:

 if floor(currentSeconds) == floor(durationSeconds) {
    self.handleAudioFinishPlaying()
 }