Ios 将AVAudioPCMBuffer转换为NSData
我目前正在尝试将音频样本从Ios 将AVAudioPCMBuffer转换为NSData,ios,swift,avfoundation,nsdata,avaudiopcmbuffer,Ios,Swift,Avfoundation,Nsdata,Avaudiopcmbuffer,我目前正在尝试将音频样本从AVAudioPCMBuffer转换为NSData-我已经查看了关于此和此的公认答案,但似乎一些AVFAudioAPI已经更改…下面是我对AVAudioPCMBuffer的扩展: private extension AVAudioPCMBuffer { func toNSData() -> NSData { let channels = UnsafeBufferPointer(start: int16ChannelData, count:
AVAudioPCMBuffer
转换为NSData
-我已经查看了关于此和此的公认答案,但似乎一些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
}
}
我看到类型为“UnsafePointer”的
值没有成员“inTotalBitsPerChannel”
的错误。到目前为止,我还没有找到任何其他方法来找出IntatalbitsPerchannel的值…感谢您的帮助 在链接到的任何代码示例中,我都没有看到任何名为inTotalBitsPerChannel
的方法;相反,它们似乎都使用mBytesPerFrame
。您还需要.pointee
来取消对指针的引用。最后,在现代Swift中,您通常更喜欢使用Data
而不是NSData
。因此,基本上,我认为如果您将最后一行改写为:
let ch0Data = Data(bytes: channels[0], count: Int(frameCapacity * format.streamDescription.pointee.mBytesPerFrame))