2

我可以使用MediaRecorder或AudioRecord同時錄製多個頻道嗎?我想要的是能夠同時錄製MediaRecorder.AudioSource.VOICE_UPLINK和VOICE_DOWNLINK。可以分爲兩個單獨的文件或兩個通道的相同文件。我嘗試使用兩個獨立的MediaRecorder實例。但只有第一個記錄。第二個說輸入不可用。我也嘗試同時使用一個MediaRecorder和一個AudioRecord。同樣,兩者都單獨工作,但是當AudioRecord在MediaRecorder啓動後出現時,會顯示以下錯誤。在Android 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. 

我也嘗試將第二個MediaRecorder放在一個新線程上。同樣的結果。所以這讓我想知道是否有可能同時錄製。我也在考慮是否可以使用兩個通道的AudioRecord設置來自VOICE_UPLINK和VOICE_DOWNLINK的兩個獨立輸入,但如果可能,我不知道如何設置源。

在此先感謝

編輯:

路西法的回答意味着AudioRecord不能被稱爲異步具有同時運行多個實例。有誰知道可以同時錄製AudioSource.VOICE_UPLINK和AudioSource.VOICE_DOWNLINK的方式嗎?也許在多個頻道中使用AudioRecord的單個實例?

回答

1

根據我的知識,AudioRecording是一種同步方法。所以你不能同時使用兩個錄音。

當您的代碼進入第二個錄製過程時,它會顯示錯誤05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1,這純粹意味着錄製通道已被第一個錄製通道佔用。

但是,這可以通過以這樣的方式並行處理兩個線程來實現,即第一個線程記錄特定的時間量。當控制通過兩個第二線程時,第一線程停止記錄,第二線程開始記錄,反之亦然。但是根據移動設備,這將變得更加複雜。所以一次錄製一個頻道就更好了。

您可以創建一個記錄隊列,它將逐個記錄。

+0

謝謝。但我想記錄一個電話交談。所以我需要同時記錄兩個頻道,並且不能排隊。是否可以使用AudioRecord的單個實例錄製兩個頻道?我看到選項channelConfig可以是CHANNEL_IN_STEREO,但是我可以將AudioSource.VOICE_UPLINK設置爲Left並且AudioSource.VOICE_DOWNLINK正確嗎? – jinais

+0

那麼你通常可以保存轉換,爲什麼你需要兩個通道呢?大多數的Android設備都有這樣的內置設備,就在它上面並直接獲取錄製的文件。 – Lucifer

+0

實際上,大多數Android手機都禁用了MediaRecorder.AudioSource.VOICE_CALL選項,因此無法錄製電話會話。我的SE xperia的情況也是如此,但VOICE_UPLINK和VOICE_DOWNLINK正在單獨錄製。我懷疑這是所有Android手機的情況,但我認爲這是記錄我的情況下對話的唯一選擇。 – jinais

相關問題