正如标题所暗示的那样。
这里有一个 Swift 中的旧解决方案。但是我很难转换为Objective-C。似乎没有Objective-C等价物UnsafeBufferPointer
Objective-C 在语言中内置了不安全的指针,因此转换只是:
- (NSData *)bufferToNSData:(AVAudioPCMBuffer *)buffer {
return [[NSData alloc] initWithBytes:buffer.floatChannelData[0] length:buffer.frameLength * 4];
}
注意:这假设缓冲区中有单声道 32 位浮点数据。需要做更多的工作才能将所有受支持的AVAudioPCMBuffer
格式序列化为 NSData
。