2016-07-04 5 views
0

私はCore Audio、AudioUnitフレームワークのnoobです。私はそれについて多くの知識を持っていませんので、私にそれを負担してください。スピーカーに送る前にオーディオバッファーをつかむには?

私は、webRTCを使用してリモート呼び出しを行うライブストリームにアクセスする必要があります。 webRTCフレームワークでは、オーディオストリームにアクセスする方法はありません。

私は、アップルのオーディオフレームワークを介してそのオーディオストリームにアクセスすることを考えていました。オーディオをスピーカーに送信する前にそれを取得しようと考えています。スピーカーに送信される前にオーディオバッファーを取得することは可能ですか?

私はある値でオーディオバッファを変更し、それをスピーカーに送り返す必要があります。

助けてください!

+0

AURenderCallbackStruct callbackStruct; callbackStruct.inputProc = inputRemoteRenderCallback; callbackStruct.inputProcRefCon = sourceUnit; AudioUnitSetProperty(outputAudioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &callbackStruct, sizeof(callbackStruct)); 

とコールバック。もちろん、バッファをつかんで変更することもできますが、その方法はオーディオ処理チェーンの構築に依存します。あなたがCAに初めているなら、この[教科書](http://www.informit.com/store/learning-core-audio-a-hands-on-guide-to-audio-programming-9780321636843)は、基本的なコンセプトを学習するためのサンプルコードの作業 – user3078414

答えて

0

レンダーコールバックを設定してAudioUnitを出力し、オーディオバッファをスピーカーに送信する前に変更することができます。あなたがここに多くの助けを得るが、あなたの問題とあなたの努力の少しより多くを記述する必要がありますすることができます

static OSStatus inputRemoteRenderCallback (void *inRefCon, 
             AudioUnitRenderActionFlags *ioActionFlags, 
             const AudioTimeStamp *inTimeStamp, 
             UInt32 inBusNumber, 
             UInt32 inNumberFrames, 
             AudioBufferList *ioData 
             ) { 

AudioUnit au = (AudioUnit)inRefCon; 

AudioUnitRender(au, 
       ioActionFlags, 
       inTimeStamp, 
       0, 
       inNumberFrames, 
       ioData); 

return noErr; 
} 
関連する問題