2012-12-11 182 views

回答

1

看蘋果下面的示例代碼:AVCaptureTtoAudioUnitOSX

那裏你可以看到如何正確處理原始音頻數據並把它傳遞給AudioUnit

的基本原理如下:

  1. 獲取信息的SampleBufferAudioStreamBasicDescription的格式

    首先得到CMFormatDescriptionRefCMSampleBufferGetFormatDescription
    然後拿到AudioStreamBasicDescriptionCMAudioFormatDescriptionGetStreamBasicDescription
    現在您可以獲得採樣率,每通道位數,每通道通道的信息每包

  2. 幀獲取AudioBufferList與實際音頻數據

    要麼使用CoreAudio的的公用或檢查這樣做
    被稱爲CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer功能的正確方法這mailing list條目。第三個參數是bufferListOut,它是您想要的AudioBufferList,並且可以繼續使用例如。 AudioUnit或任何你需要的東西。

  3. 得到實際的原始數據

    AudioBufferList包含AudioBuffers每一個包含數據

    struct AudioBuffer { 
    UInt32 mNumberChannels; 
    UInt32 mDataByteSize; 
    void *mData; 
    }; 
    

這應該讓你去。查看來自Apple的示例代碼以獲取更多信息。

相關問題