AVAudioRecorder和AVAudioPlayer音频有不同的长度

时间:2016-05-20 11:16:39

标签: swift avaudioplayer avaudiorecorder

我用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
}

}

1 个答案:

答案 0 :(得分:0)

来自AVAsset的Apple Documentation(AVURLAsset的超类):

  

如果providePreciseDurationAndTiming为false,则返回最佳可用持续时间估计值。 ...如果providePreciseDurationAndTiming为true,则绝对精度,无论处理成本和成本如何,对于某些媒体格式(例如.mpg)都可能很重要。