2011-03-07 84 views
5

雖然有很多關於如何使用AVCaptureSession獲取相機數據的教程,但我無法找到關於如何正確處理麥克風數據的信息(即使在蘋果的開發網絡本身上)。使用AVCaptureSession捕獲和操作麥克風音頻?

我已經實現了AVCaptureAudioDataOutputSampleBufferDelegate,並且我正在調用我的委託,但我不知道如何格式化CMSampleBufferRef的內容。緩衝區的內容是一個離散樣本嗎?它的屬性是什麼?這些屬性可以在哪裏設置?

視頻屬性可以使用[AVCaptureVideoDataOutput setVideoSettings:]來設置,但是沒有相應的AVCaptureAudioDataOutput調用(沒有setAudioSettings或類似的東西)。

+0

您是否看到過WWDC 2010中「Wavy」應用程序的代碼?它獲取麥克風數據並實時繪製在屏幕上。 – jamihash 2011-03-07 05:58:14

+0

不,我沒有,也沒有找到它的副本。它使用什麼音頻庫/框架?採樣麥克風數據時可以設置採樣率並使用手機的硬件編碼器嗎? – akaii 2011-03-10 04:54:52

回答

1

它們被格式化爲LPCM!你可以通過獲取AudioStreamBasicDescription來驗證,如下所示:

CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer); 
const AudioStreamBasicDescription *streamDescription = CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription); 

然後檢查流描述的mFormatId。