如何在`didOutputSampleBuffer`中使用`AVCapturesession'播放音频缓冲区

时间:2012-12-11 06:40:41

标签: ios avfoundation playback avcapturesession

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

1 个答案:

答案 0 :(得分:1)

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

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

基本原则如下:

  1. 获取SampleBuffer的{​​{1}}了解格式

    的信息

    首先使用AudioStreamBasicDescription获取CMFormatDescriptionRef
    然后使用CMSampleBufferGetFormatDescription获取AudioStreamBasicDescription
    现在,您可以获得有关采样率,每通道位数,每帧通道数和每个数据包帧数的信息

  2. 获取包含实际音频数据的CMAudioFormatDescriptionGetStreamBasicDescription

    使用CoreAudio的公共实用程序或检查此mailing list条目以获取正确的方法
    该函数称为AudioBufferList。第三个参数是CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer,它是您想要的bufferListOut,并将传递给我们使用,例如AudioUnit或您需要的任何东西。

  3. 获取实际原始数据

    AudioBufferList包含AudioBufferList,其中每个都包含数据

    AudioBuffers
  4. 这应该让你去。请查看Apple的示例代码以获取更多信息。