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

提前致谢

最佳答案

看起来您可以通过以下方式获取ASBD:

sampleBuffer->
  CMSampleBufferGetFormatDescription ->
    CMAudioFormatDescriptionGetStreamBasicDescription

然后ASBD将详细说明帧大小(如果已压缩,字节顺序等)。

为了证明这一点(不进行错误检查)并获得采样率:
CMSampleBufferRef cmSampleBuffer = ...;

CMFormatDescriptionRef formatDescription =
  CMSampleBufferGetFormatDescription(cmSampleBuffer);

const AudioStreamBasicDescription* const asbd =
  CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription);

double sampleRate = asbd->mSampleRate;

关于ios - 音频CMSampleBuffer格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8049999/

10-09 05:33