2

我一直在尝试播放在didOutputSampleBuffer委托中作为原始数据接收的音频。处理原始数据的正确方法应该是什么?

4

1 回答 1

1

查看 Apple 的以下示例代码:AVCaptureTtoAudioUnitOSX

在那里您可以看到如何正确处理原始音频数据并将其传递给AudioUnit.

基本原理如下:

  1. 获取有关格式的SampleBuffer信息AudioStreamBasicDescription

    首先获取CMFormatDescriptionRefwithCMSampleBufferGetFormatDescription
    然后获取AudioStreamBasicDescriptionwithCMAudioFormatDescriptionGetStreamBasicDescription
    现在您可以获取有关采样率、每通道位数、每帧通道和每包帧数的信息

  2. 获取AudioBufferList带有实际音频数据的

    使用 CoreAudio 的公共实用程序或检查此邮件列表条目以了解正确的方法。
    该函数称为CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer。第三个参数是bufferListOutAudioBufferList想要的并将传递给例如 AudioUnit 或任何您需要的参数。

  3. 获取实际的原始数据

    AudioBufferList包含其中的AudioBuffers每一个都包含数据

    struct AudioBuffer {
     UInt32 mNumberChannels;
     UInt32 mDataByteSize;
     void   *mData;
    };
    

这应该让你继续前进。查看 Apple 的示例代码以获取更多信息。

于 2013-05-17T08:28:17.823 回答