6

Quali sono i dati memorizzati in CMSampleBuffer quando si utilizza AVCaptureAudioDataOutput? Fornisce CMSampleBuffers tramite il metodo delegato –captureOutput:didOutputSampleBuffer:fromConnection: ma cosa c'è all'interno di CMSampleBuffer? PCM o compresso? Quali sono i samplerate, il numero di canali, ecc.? Come può essere utilizzato per lo streaming audio dal dispositivo? Googling per diverse ore non mi ha aiutato.Formato audio CMSampleBuffer

Grazie in anticipo

risposta

7

sembra è possibile ottenere l'ASBD in questo modo:

sampleBuffer-> 
    CMSampleBufferGetFormatDescription -> 
    CMAudioFormatDescriptionGetStreamBasicDescription 

poi l'ASBD descriverà le taglie, se è compresso, endianness, ecc

Per dimostrarlo (senza controllo degli errori) e ottenere la frequenza di campionamento:

CMSampleBufferRef cmSampleBuffer = ...; 

CMFormatDescriptionRef formatDescription = 
    CMSampleBufferGetFormatDescription(cmSampleBuffer); 

const AudioStreamBasicDescription* const asbd = 
    CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

double sampleRate = asbd->mSampleRate; 
+0

grazie! ho usato solo 'CMSampleBufferGetFormatDescription' e ha mostrato tutte le informazioni che mi sto chiedendo – peetonn

+0

ed è possibile configurare' AVAudioOutput' con diversi parametri che ricevo? – peetonn

+1

@peetonn sei il benvenuto. per quanto riguarda la tua domanda: non sono sicuro che tu intenda "AudioOutputUnit'," AVAudioPlayer "o" AVCaptureAudioDataOutput "quando pronunci" AVAudioOutput ". Sono cresciuto nei livelli Core e AU; Immagino che sia quello che vogliono fornire, per evitare il sovraccarico di conversione. Vale la pena cercare qui. – justin