在Android MediaRecorder上或使用AudioRecord同时录制两个频道?

时间:2012-05-21 08:16:31

标签: android audiorecord android-mediarecorder android-audiorecord channels

我可以使用MediaRecorder或AudioRecord同时录制多个频道吗?我想要的是能够同时记录MediaRecorder.AudioSource.VOICE_UPLINK和VOICE_DOWNLINK。可以分为两个单独的文件或两个通道的同一文件。我尝试使用两个独立的MediaRecorder实例。但只有第一个记录。第二个说输入不可用。我还尝试同时使用一个MediaRecorder和一个AudioRecord。同样,两者都是单独工作,但是当AudioRecord启动MediaRecorder后,会显示以下错误。

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的两个独立输入,但如果可能的话,我不知道如何设置源。

提前致谢

编辑:

Lucifer的回答意味着无法异步调用AudioRecord,同时运行多个实例。有没有人知道AudioSource.VOICE_UPLINK和AudioSource.VOICE_DOWNLINK可以同时录制的方式?也许使用具有多个通道的单个AudioRecord实例?

1 个答案:

答案 0 :(得分:2)

根据我的知识,AudioRecording是一种同步方法。所以你不能同时使用两个录音。

当你的代码用于第二次录制过程时,它显示错误05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1,这纯粹意味着录制频道已经忙于第一次录制频道。

然而,这可以通过以这样的方式并行处理两个线程来实现,即第一个线程记录特定的时间量。当控制通过两个第二个线程时,第一个线程停止记录,第二个线程开始记录,反之亦然。但是根据移动设备,这将变得更加复杂。所以你最好一次录制一个频道。

您可以创建一个记录队列,逐个记录。