我用AVAudioRecorder录制,然后暂停它,打印当前时间,停止并关闭它。
当我播放音频并打印它的持续时间时,它总是与当前时间不同。
怎么可能?暂停之后,除了保存音频之外,我对音频没有任何作用,那么它的长度有多长?
recorder.pause()
print(recorder.currentTime) //e.g. 1.14
recorder.stop()
print(Manager.getAudioFileLength(url)) //e.g. 1.31
do {
try player = AVAudioPlayer(contentsOfURL: url)
}
catch let error as NSError {
NSLog("error: \(error)")
}
print(player.duration) //e.g. 1.25
在经理
class Manager {
static func getAudioFileLength(url : NSURL) -> Float64 {
let audioAsset = AVURLAsset(URL: url)
let audioDuration = audioAsset.duration
let audioDurationSeconds = CMTimeGetSeconds(audioDuration)
return audioDurationSeconds
}
}
答案 0 :(得分:0)
来自AVAsset的Apple Documentation(AVURLAsset的超类):
如果providePreciseDurationAndTiming为false,则返回最佳可用持续时间估计值。 ...如果providePreciseDurationAndTiming为true,则绝对精度,无论处理成本和成本如何,对于某些媒体格式(例如.mpg)都可能很重要。