我目前正在尝试将音频样本从AVAudioPCMBuffer
转换为NSData
- 我已经查看了此SO Post和code from GitHub上接受的答案}但似乎有些AVFAudio
API已更改...以下是AVAudioPCMBuffer
的扩展程序:
private extension AVAudioPCMBuffer {
func toNSData() -> NSData {
let channels = UnsafeBufferPointer(start: int16ChannelData, count: 1)
let ch0Data = NSData(bytes: channels[0], length:Int(frameCapacity * format.streamDescription.inTotalBitsPerChannel))
return ch0Data
}
}
我看到了Value of type 'UnsafePointer<AudioStreamBasicDescription>' has no member 'inTotalBitsPerChannel'
的错误。到目前为止,我还没有找到任何其他方法来查找inTotalBitsPerChannel
值...任何帮助表示感谢!
答案 0 :(得分:0)
我没有在您链接到的任何代码示例中看到任何名为inTotalBitsPerChannel
的方法;相反,他们似乎都使用mBytesPerFrame
。您还需要.pointee
取消引用指针。最后,在现代Swift中,您通常应该使用Data
而不是NSData
。因此,基本上,如果您将最后一行重写为:
let ch0Data = Data(bytes: channels[0], count: Int(frameCapacity * format.streamDescription.pointee.mBytesPerFrame))