3

我可以使用 MediaRecorder 或 AudioRecord 同时录制多个频道吗?我想要的是能够同时录制 MediaRecorder.AudioSource.VOICE_UPLINK 和 VOICE_DOWNLINK。可以分为两个单独的文件或具有两个通道的同一个文件。我尝试使用两个独立的 MediaRecorder 实例。但只有第一个记录。第二个说输入不可用。我还尝试同时使用一个 MediaRecorder 和一个 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.

我还尝试将第二个 MediaRecorder 放在一个新线程上。同样的结果。所以这让我想知道是否可以同时录制。我也在考虑是否可以使用一个带有两个通道的 AudioRecord 从 VOICE_UPLINK 和 VOICE_DOWNLINK 设置两个单独的输入,但如果可能的话,我不知道如何设置源。

提前致谢

编辑:

Lucifer 的回答意味着 AudioRecord 不能在同时运行多个实例的情况下被异步调用。有谁知道可以同时录制 AudioSource.VOICE_UPLINK 和 AudioSource.VOICE_DOWNLINK 的方式?也许使用具有多个通道的单个 AudioRecord 实例?

4

1 回答 1

2

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

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

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

您可以创建一个录制队列,它将逐个录制。

于 2012-05-21T08:24:33.793 回答