AUGraphで一連のオーディオユニットを順番に持つシンプルなアプリケーションを作成しようとしていますが、その出力をファイルに書き込みます。 AUGraphAddRenderNotifyを使ってコールバックを追加しました。ここに私のコールバック関数です:AUGraphの出力をファイルに書き込む方法は?
OSStatus MyAURenderCallback(void *inRefCon,
AudioUnitRenderActionFlags *actionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
if (*actionFlags & kAudioUnitRenderAction_PostRender) {
ExtAudioFileRef outputFile = (ExtAudioFileRef)inRefCon;
ExtAudioFileWriteAsync(outputFile, inNumberFrames, ioData);
}
}
この種の作品です。ファイルは再生可能で、録音したものを聞くことができますが、静かに聞こえるほどの量の聴力があります。
誰にも分かりませんが、これは間違っていますか?あるいは、誰かがAUGraphの出力をファイルに記録する良い方法を知っていますか?
ありがとうございます。
AUGraphとExtAudioFile(クライアントデータ形式)の形式は一致していますか?また、リアルタイムで記録する必要がありますか? – sbooth
私はそれらがマッチすると思います。私は同じAudioStreamBasicDescriptionを使ってすべてのオーディオユニットを設定し、ファイルを作成しました。私は実際にどのようにチェックするのか分からない。あなたはそれをする方法を知っていますか?私はそれを調べるだろうと思う。 私はリアルタイムで記録する必要はないと思いますが、それを行うには他の方法がありますか?私がデータをリアルタイムで保存しないと、失われます。 – HowsItStack
私は 'AUGraphStart'を呼び出す代わりに、グラフの先頭に' AudioUnitRender'を繰り返し呼び出すと思います。私はリアルタイムでそれを行うことの問題は、 'ExtAudioFile'の内部リングバッファがいっぱいになり、データを失うことだと思います。 – sbooth