android - 在 Android MediaRecorder 或使用 AudioRecord 上同时录制两个 channel ?

标签 android audiorecord android-mediarecorder android-audiorecord channels

我可以使用 MediaRecorder 或 AudioRecord 同时录制多个 channel 吗?我想要的是能够同时录制 MediaRecorder.AudioSource.VOICE_UPLINK 和 VOICE_DOWNLINK。可以分为两个单独的文件或具有两个 channel 的同一文件。我尝试使用两个单独的 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 和两个 channel 设置来自 VOICE_UPLINK 和 VOICE_DOWNLINK 的两个独立输入,但我不知道如何设置源(如果可能的话)。

提前致谢

编辑:

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

最佳答案

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

当您的代码进行第二次录制过程时,它显示错误 05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1 这纯粹意味着 Recording Channel 已经被 First 忙了。

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

你可以创建一个录音队列,一个一个的录音。

关于android - 在 Android MediaRecorder 或使用 AudioRecord 上同时录制两个 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681634/

相关文章:

android - 在 android 应用程序中录制视频并将该视频保存在 sd 卡中的问题

android - 将 View 添加到 ScrollView 内的布局底部

android - 如何阻止录制的文件进入 Android 默认媒体播放器

android - 任何人都有 MediaRecorder 使用 ParcelFileDescriptor 和 createPipe()?

android - MediaRecorder 示例不起作用

android - 如何防止 droid VNC 服务器上的键盘缓冲

Android - 时间比较 "hh:mm:ss a"格式

android - AudioSource.VOICE_COMMUNICATION 不适用于所有支持 VOICE_COMMUNICATION 的设备

java - 音轨在 Android 中不工作

java - 语音通话期间麦克风录制的音频被静音