我想做的只是标题所说的,但我似乎做不到。我尝试执行以下操作:
func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval {
let framecount = buffer.frameCapacity
let bytesperframe = buffer.format.streamDescription.pointee.mBytesPerFrame
return TimeInterval(bytesperframe * framecount)
}
但这给出了一个巨大的数字,这似乎不是我所追求的。我已经尝试寻找答案,但似乎没有人问这个问题,所以我可能遗漏了一些明显的东西。有人知道吗?
编辑:我将代码更改为:
func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval {
let framecount = Float64(buffer.frameCapacity)
let samplerate = buffer.format.streamDescription.pointee.mSampleRate
return TimeInterval(framecount / samplerate)
}
这似乎有效,但似乎有点复杂。还有其他方法吗?