gpt4 book ai didi

swift 3 : Get length of AVAudioPCMBuffer as TimeInterval?

转载 作者:搜寻专家 更新时间:2023-11-01 06:37:03 32 4
gpt4 key购买 nike

我正在尝试获取 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)
}

这似乎可行,但似乎有点复杂。还有别的办法吗?

最佳答案

感谢 Rhythmic Fistman 的创意!我现在将代码更改为:

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

现在看起来简单多了,而且行得通。希望我做的一切都是对的。

关于 swift 3 : Get length of AVAudioPCMBuffer as TimeInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315620/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com