6

AVCaptureAudioDataOutputを使用する場合、CMSampleBufferに格納されるデータは何ですか?デリゲートメソッド–captureOutput:didOutputSampleBuffer:fromConnection:を介してCMSampleBuffersを配信しますが、CMSampleBufferの中身は何ですか? PCMまたは圧縮?サンプラー数、チャンネル数などは何ですか?これはデバイスからオーディオをストリーミングするためにどのように使用できますか? 数時間のグーグルは私を助けませんでした。あなたはASBDをこのように得ることができるように、事前オーディオCMSampleBufferフォーマット

答えて

7

おかげで見えます:

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'を意味するのかどうか分かりません。私はコア層とAU層で育った。私はそれが変換オーバーヘッドを避けるために提供したいと思っているものだと思います。ここで検索する価値があります。 – justin