音频CMSampleBuffer格式

pee*_*onn 7 core-audio audio-recording avfoundation audio-streaming ios

使用AVCaptureAudioDataOutput时,CMSampleBuffer中存储的数据是什么?它通过委托方法提供CMSampleBuffers –captureOutput:didOutputSampleBuffer:fromConnection:但是CMSampleBuffer里面有什么?PCM还是压缩?什么是采样率,通道数量等?如何将其用于从设备流式传输音频?谷歌搜索几个小时并没有帮助我.

提前致谢

jus*_*tin 8

看起来你可以这样得到ASBD:

sampleBuffer->
  CMSampleBufferGetFormatDescription ->
    CMAudioFormatDescriptionGetStreamBasicDescription
Run Code Online (Sandbox Code Playgroud)

那么ASBD将详细说明帧大小,如果它是压缩的,字节顺序等.

为了证明这一点(没有错误检查)并获得采样率:

CMSampleBufferRef cmSampleBuffer = ...;

CMFormatDescriptionRef formatDescription =
  CMSampleBufferGetFormatDescription(cmSampleBuffer);

const AudioStreamBasicDescription* const asbd =
  CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription);

double sampleRate = asbd->mSampleRate;
Run Code Online (Sandbox Code Playgroud)