所有我想做的就是标题所说的,但我似乎无法做到。我尝试了以下操作:
=
但是这给了一个巨大的数字,似乎并不是我所追求的。我已经尝试寻找答案,但似乎没有人问这个问题,所以我可能会遗漏一些明显的东西。有人知道吗?
编辑:我将我的代码更改为:
func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval {
let framecount = buffer.frameCapacity
let bytesperframe = buffer.format.streamDescription.pointee.mBytesPerFrame
return TimeInterval(bytesperframe * framecount)
}
这似乎有效,但似乎有点复杂。还有另一种方式吗?
答案 0 :(得分:1)
您需要使用frameLength
代替frameCapacity
。
答案 1 :(得分:1)
感谢Rhythmic Fistman的想法!我现在把代码更改为:
func getLength(buffer: AVAudioPCMBuffer) -> TimeInterval {
let framecount = Double(buffer.frameLength)
let samplerate = buffer.format.sampleRate
return TimeInterval(framecount / samplerate)
}
现在看起来简单得多,而且有效。希望我做的一切都是正确的。