0

私のiOSアプリでは、いくつかの短波ファイルを再生し、最後に再生したすべてのものをWAVやCAFファイルなどの単一のオーディオファイルにエクスポートしようとしています。AUFilePlayerを使用して再生することができました。AUFilePlayerを介して再生されたオーディオをWAVまたはCAFファイルに保存するにはどうすればよいですか?

4

1 に答える 1

2

おそらく、ExtAudioFile API を調べる必要があるでしょう。ExtAudioFileWriteこれにより、Audio Unit が受け渡しているデータとうまく連携するように設計された関数が公開されます。ExtAudioFileWrite の署名は次のとおりです。

OSStatus ExtAudioFileWrite (
   ExtAudioFileRef        inExtAudioFile,
   UInt32                 inNumberFrames,
   const AudioBufferList  *ioData
);

これは、次のような Audio Unit レンダリング コールバックとうまく一致します。

OSStatus (*AURenderCallback)(
    void * inRefCon,
    AudioUnitRenderActionFlags * ioActionFlags,
    const AudioTimeStamp * inTimeStamp,
    UInt32 inBusNumber,
    UInt32 inNumberFrames,
    AudioBufferList * ioData
);

sharedUInt32 inNumberFramesAudioBufferList * ioDataargs に注目してください。

したがって、ワークフローは次のようになります。

  1. ExtAudioFile を書き込み用にセットアップする
  2. AUGraph をセットアップしてオーディオをレンダリングする
  3. AudioUnits が渡している AudioBufferLists をキャプチャします

3 を使用するには、アプリの設定方法についてもう少し知識が必要なので、あまり詳しく説明することはできません。オーディオをファイルに書き込むだけでなくスピーカーにも送りたい場合は、おそらく を利用したいと思うでしょう。AUGraphAddRenderNotifyこれにより、レンダリングが発生するたびに通知されます (また、独自の AURenderCallback をフックして書き込みます)。あなたのExtAudioFileに)。

この方法で処理を行っている場合 (つまり、レンダー コールバックを使用している場合) ExtAudioFileWriteAsync、レンダー スレッドをブロックしないように を使用してください。

于 2012-10-11T16:18:16.967 に答える