Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将AVAudioPCMBuffer转换为NSData_Ios_Swift_Avfoundation_Nsdata_Avaudiopcmbuffer - Fatal编程技术网

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))