CMTimeGetSeconds duration 和 addPeriodicTimeObserver 最后不相等

CMTimeGetSeconds duration and addPeriodicTimeObserver doesn't equal at the end

有谁知道为什么我的持续时间和 addPeriodicTimeObserver 的 CMTimeGetSeconds 值不相等?如果总秒数小于 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()
     }
  }
})

我将它们打印出来,这是结果:持续时间为 5303.088,持续时间为 5303.112。

由于时间来自不同的来源,'delta' 毫秒可能会略有差异,因此您应该 round 他们这样做:

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