我一直在尝试播放在didOutputSampleBuffer
委托中作为原始数据接收的音频。处理原始数据的正确方法应该是什么?
1 回答
查看 Apple 的以下示例代码:AVCaptureTtoAudioUnitOSX
在那里您可以看到如何正确处理原始音频数据并将其传递给AudioUnit
.
基本原理如下:
获取有关格式的
SampleBuffer
信息AudioStreamBasicDescription
首先获取
CMFormatDescriptionRef
withCMSampleBufferGetFormatDescription
然后获取AudioStreamBasicDescription
withCMAudioFormatDescriptionGetStreamBasicDescription
现在您可以获取有关采样率、每通道位数、每帧通道和每包帧数的信息获取
AudioBufferList
带有实际音频数据的使用 CoreAudio 的公共实用程序或检查此邮件列表条目以了解正确的方法。
该函数称为CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer
。第三个参数是bufferListOut
您AudioBufferList
想要的并将传递给例如 AudioUnit 或任何您需要的参数。获取实际的原始数据
AudioBufferList
包含其中的AudioBuffers
每一个都包含数据struct AudioBuffer { UInt32 mNumberChannels; UInt32 mDataByteSize; void *mData; };
这应该让你继续前进。查看 Apple 的示例代码以获取更多信息。