我试图得到一个AVAudioPCMBuffer的时间长度,但我似乎做不到。我试着做以下几件事:
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)
}这似乎可行,但似乎有点复杂。还有别的办法吗?
发布于 2016-10-29 04:08:05
谢谢你有节奏感的费斯曼!我现在把代码改到这里了:
func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval {
let framecount = Double(buffer.frameLength)
let samplerate = buffer.format.sampleRate
return TimeInterval(framecount / samplerate)
}现在看起来简单多了,而且起作用了。希望我一切都做得对。
发布于 2016-10-29 04:00:37
您需要使用frameLength而不是frameCapacity。
https://stackoverflow.com/questions/40315620
复制相似问题