2

やあ仲間、私はリアルタイムの声を変えるためのアプリケーションを構築しようとしています. 最初のステップでは、オーディオデータを指定されたファイルに録音し、録音後に再生することができました。ここで、オーディオ バッファをループで録音した直後に再生するためのコードを変更しようとしています。私の質問は、(ドキュメントに示されているように) ファイルからではなく、Audioqueue の記録から直接 Audiodata を読み取る方法です。アイデアに感謝し、必要に応じてコード部分を表示できます。前もって感謝します, ルーカス (ドイツから)

4

1 に答える 1

1

SpeakHere の例を見てください。この行は、オーディオ データをソースします。

OSStatus result = AudioFileReadPackets(THIS->GetAudioFileID(), false, &numBytes,     inCompleteAQBuffer->mPacketDescriptions, THIS->GetCurrentPacket(), &nPackets, 
                                       inCompleteAQBuffer->mAudioData);

したがって、 を呼び出すのではなくAudioFileReadPackets、 memcpy を使用して、記録されたデータ バッファーをコピーすることができます。または、代わりにAudioQueue、オーディオ データ バッファーへのポインターを再生に提供します。再生が続くにつれてmCurrentPacket、バッファー内でポインターを進めます。

記録するには、非常によく似た操作を行います。ファイルに書き出すのではなく、メモリ内のバッファーに書き出します。最初に . でそれを割り当てる必要がありますmalloc。次に、着信AudioQueueキャプチャが記録されたデータであり、そのデータをバッファにコピーします。より多くのデータがコピーされるにつれて、記録ヘッドを進めるかmCurrentPacket、新しい位置に移動します。

于 2012-01-17T10:24:06.360 に答える