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()
}
有谁知道为什么我的持续时间和 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()
}