6

¿Qué datos se almacenan en CMSampleBuffer cuando se utiliza AVCaptureAudioDataOutput? Proporciona CMSampleBuffers a través del método de delegado –captureOutput:didOutputSampleBuffer:fromConnection:, pero ¿qué hay dentro de CMSampleBuffer? PCM o comprimido? ¿Cuáles son las frecuencias de muestreo, la cantidad de canales, etc.? ¿Cómo se puede utilizar para transmitir audio desde el dispositivo? googlear durante varias horas no me ayudó.Audio CMSampleBuffer formato

Gracias de antemano

Respuesta

7

parece que se puede obtener la ASBD esta manera:

sampleBuffer-> 
    CMSampleBufferGetFormatDescription -> 
    CMAudioFormatDescriptionGetStreamBasicDescription 

entonces el ASBD detallará los tamaños de cuadro, si se comprime, endianness, etc.

Para demostrar esto (sin comprobación de errores) y obtener la frecuencia de muestreo:

CMSampleBufferRef cmSampleBuffer = ...; 

CMFormatDescriptionRef formatDescription = 
    CMSampleBufferGetFormatDescription(cmSampleBuffer); 

const AudioStreamBasicDescription* const asbd = 
    CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

double sampleRate = asbd->mSampleRate; 
+0

gracias! utilicé simplemente 'CMSampleBufferGetFormatDescription' y mostró toda la información Me pregunto – peetonn

+0

y ¿es posible configurar' AVAudioOutput' con diferentes parámetros que recibo? – peetonn

+1

@peetonn de nada. con respecto a su pregunta: no estoy seguro si se refiere a 'AudioOutputUnit',' AVAudioPlayer', o 'AVCaptureAudioDataOutput' cuando dice' AVAudioOutput'. Crecí en las capas Core y AU; Supongo que es lo que quieran proporcionar, para evitar la sobrecarga de la conversión. Vale la pena buscar aquí. – justin

Cuestiones relacionadas