有没有人知道为什么我的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表示持续时间。
答案 0 :(得分:0)
由于时间来自不同的来源,因此“三角洲”可能会略有差异。毫秒,因此你应该round
他们这样做:
if floor(currentSeconds) == floor(durationSeconds) {
self.handleAudioFinishPlaying()
}