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