6

使用AVCaptureAudioDataOutput時,存儲在CMSampleBuffer中的數據是什麼?它通過委託方法–captureOutput:didOutputSampleBuffer:fromConnection:提供CMSampleBuffers,但CMSampleBuffer內部有什麼? PCM還是壓縮?什麼是採樣率,通道數量等?如何將它用於從設備流式傳輸音頻? 谷歌搜索幾個小時沒有幫助我。音頻CMSampleBuffer格式

在此先感謝

回答

7

看起來像你可以得到ASBD這樣:

sampleBuffer-> 
    CMSampleBufferGetFormatDescription -> 
    CMAudioFormatDescriptionGetStreamBasicDescription 

那麼ASBD將詳細介紹幀大小,如果是壓縮,字節序等

爲了證明這一點(沒有錯誤檢查)並獲得採樣率:

CMSampleBufferRef cmSampleBuffer = ...; 

CMFormatDescriptionRef formatDescription = 
    CMSampleBufferGetFormatDescription(cmSampleBuffer); 

const AudioStreamBasicDescription* const asbd = 
    CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

double sampleRate = asbd->mSampleRate; 
+0

謝謝!我只用'CMSampleBufferGetFormatDescription',它顯示了我想知道的所有信息 – peetonn

+0

,並且可以使用我收到的不同參數來配置AVAudioOutput? – peetonn

+1

@peetonn不用客氣。關於你的問題:當你說'AVAudioOutput'時,我不確定你的意思是'AudioOutputUnit','AVAudioPlayer'或'AVCaptureAudioDataOutput'。我在Core和AU層次上成長起來;我猜這是他們想提供的,以避免轉換開銷。這裏值得搜索。 – justin