2016-05-20 12 views
0

Ich nehme mit AVAudioRecorder auf, pausiere es dann, drucke die aktuelleTime aus, halte sie an und schließe sie.AVAudioRecorder und AVAudioPlayer Audio haben unterschiedliche Länge

Wenn ich das Audio wiedergeben und die Dauer davon drucken, ist es immer anders als die aktuelle Zeit.

Wie ist das möglich? Ich mache nichts mit dem Audio, nachdem ich es pausiert habe, außer es zu speichern. Wie ist die Länge unterschiedlich?

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 

Und in Manager

class Manager { 
static func getAudioFileLength(url : NSURL) -> Float64 { 
    let audioAsset = AVURLAsset(URL: url) 
    let audioDuration = audioAsset.duration 
    let audioDurationSeconds = CMTimeGetSeconds(audioDuration) 
    return audioDurationSeconds 
} 

}

+0

Bitte zeigen Sie Ihren Code, damit wir sehen können, wenn Sie irgendwelche Probleme haben, wie es implementiert wird, können wir keine Probleme mit dem, was Sie tun, wenn wir nicht sehen, was Sie getan haben, sehen? – Scriptable

+0

"duration" ist übrigens in iOS 9 veraltet. Wie auch immer ... das ist interessant, aber was ist dein Standpunkt? Wie vergleicht 'playableDuration' (auch veraltet)? –

Antwort

0

Vom Apple Documentation von AVAsset (übergeordnete Klasse von AVURLAsset):

Wenn providesPreciseDurationAndTiming falsch ist, eine beste verfügbare Schätzung Die Dauer wird zurückgegeben. ... Wenn proposalsPreciseDurationAndTiming true ist, ist die absolute Genauigkeit, unabhängig von den damit verbundenen Verarbeitungskosten, und die Kosten können für bestimmte Medienformate wie .mpg erheblich sein.