3

MediaRecorderまたはAudioRecordを使用して、同時に複数のチャンネルを録音できますか?私が欲しいのは、MediaRecorder.AudioSource.VOICE_UPLINKとVOICE_DOWNLINKの両方を同時に記録できるようにすることです。2つの別々のファイルにすることも、2つのチャネルを持つ同じファイルにすることもできます。MediaRecorderの2つの別々のインスタンスを使用してみました。しかし、最初の1つだけが記録します。2つ目は、入力が利用できないことを示しています。また、1つのMediaRecorderと1つのAudioRecordを同時に使用しようとしました。繰り返しますが、両方とも個別に機能しますが、MediaRecorderの起動後にAudioRecordが来ると、次のエラーが表示されます。

05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1
05-21 03:40:42.735: E/AudioRecord-JNI(1322): Error creating AudioRecord instance:     initialization check failed.
05-21 03:40:42.825: E/AudioRecord-Java(1322): [ android.media.AudioRecord ] Error code -20     when initializing native AudioRecord object.

また、2番目のMediaRecorderを新しいスレッドに配置しようとしました。再び同じ結果。ですから、同時に録音できるのではないかと思います。また、2つのチャンネルで1つのAudioRecordを使用して、VOICE_UPLINKとVOICE_DOWNLINKから2つの別々の入力を設定できるかどうかも考えていましたが、可能であればソースを設定する方法がわかりません。

前もって感謝します

編集:

Luciferの答えは、AudioRecordを非同期的に呼び出すことはできず、同時に複数のインスタンスが実行されていることを意味します。AudioSource.VOICE_UPLINKとAudioSource.VOICE_DOWNLINKを同時に録音する方法を知っている人はいますか?たぶん、複数のチャネルでAudioRecordの単一のインスタンスを使用していますか?

4

1 に答える 1

2

私の知識によると、AudioRecording は同期方式です。そのため、同時に 2 つの録音を行うことはできません。

コードが 2 番目のレコーディング プロセスに進むと、エラーが表示されます05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1。これは、レコーディング チャネルが 1 番目のプロセスで既にビジーであることを意味します。

ただし、これは、最初のスレッドが特定の時間記録するような方法で 2 つのスレッドを並列処理することで可能になります。制御が 2 つの 2 番目のスレッドを通過すると、最初のスレッドは記録を停止し、2 番目のスレッドは記録を開始し、その逆も同様です。しかし、モバイル デバイスごとに、これはより複雑になります。そのため、一度に 1 つのチャンネルを録画することをお勧めします。

1つずつ記録を行う記録のキューを作成できます。

于 2012-05-21T08:24:33.793 に答える