2016-10-29 2 views
1

Ich versuche nur, was der Titel sagt, aber ich kann es nicht scheinen. Ich habe folgendes versucht:Swift 3: Länge von AVAudioPCMBuffer als TimeInterval abrufen?

Aber das gibt eine riesige Zahl, die nicht zu sein scheint, was ich bin. Ich habe schon versucht, nach Antworten zu suchen, aber niemand scheint das zu fragen, also vermisse ich wahrscheinlich etwas Offensichtliches. Weiß jemand?

EDIT: Ich änderte meinen Code so aus:

func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval { 
    let framecount = Float64(buffer.frameCapacity) 
    let samplerate = buffer.format.streamDescription.pointee.mSampleRate 
    return TimeInterval(framecount/samplerate) 
} 

Welche scheint zu funktionieren, aber es scheint ein wenig kompliziert. Gibt es eine andere Art und Weise?

Antwort

1

Danke für die Idee Rhythmic Fistman! Ich habe meinen Code jetzt so geändert:

func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval { 
    let framecount = Double(buffer.frameLength) 
    let samplerate = buffer.format.sampleRate 
    return TimeInterval(framecount/samplerate) 
} 

Es scheint jetzt viel einfacher, und es funktioniert. Hoffentlich mache ich alles richtig.

1

Sie müssen frameLength anstelle von frameCapacity verwenden.