Аудио формат CMSampleBuffer - PullRequest
       32

Аудио формат CMSampleBuffer

7 голосов
/ 08 ноября 2011

Какие данные хранятся в CMSampleBuffer при использовании AVCaptureAudioDataOutput?Он доставляет CMSampleBuffers через метод делегата –captureOutput:didOutputSampleBuffer:fromConnection:, но что находится внутри CMSampleBuffer?PCM или сжатый?Каковы частоты дискретизации, количество каналов и т. Д.?Как это можно использовать для потоковой передачи аудио с устройства?Погуглить несколько часов мне не помогло.

Заранее спасибо

1 Ответ

8 голосов
/ 08 ноября 2011

похоже, что вы можете получить ASBD следующим образом:

sampleBuffer->
  CMSampleBufferGetFormatDescription ->
    CMAudioFormatDescriptionGetStreamBasicDescription

тогда ASBD будет детализировать размеры кадра, если он сжат, порядковый номер и т. Д.

Чтобы продемонстрировать это (без проверки ошибок) и получить частоту дискретизации:

CMSampleBufferRef cmSampleBuffer = ...;

CMFormatDescriptionRef formatDescription =
  CMSampleBufferGetFormatDescription(cmSampleBuffer);

const AudioStreamBasicDescription* const asbd =
  CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription);

double sampleRate = asbd->mSampleRate;
...