【问题标题】:Record two channels at the same time on Android MediaRecorder or using AudioRecord?在 Android MediaRecorder 或使用 AudioRecord 上同时录制两个频道?
【发布时间】:2012-05-27 17:45:41
【问题描述】:

我可以使用 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 实例?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。但我想记录电话交谈。所以我需要同时录制两个频道,不能排队。是否可以使用 AudioRecord 的单个实例录制两个通道?我看到选项 channelConfig 可以是 CHANNEL_IN_STEREO 但我可以将 AudioSource.VOICE_UPLINK 设置为 Left 并将 AudioSource.VOICE_DOWNLINK 设置为例如吗?
    • 嗯,你可以正常保存转换,为什么你需要两个通道呢?大多数android设备都有这样的内置功能,只需在上面直接获取录制文件
    • 其实大部分安卓手机都禁用了MediaRecorder.AudioSource.VOICE_CALL选项,这样电话通话就无法录音了。在我的 SE xperia 上也是如此,但 VOICE_UPLINK 和 VOICE_DOWNLINK 是分开录制的。我怀疑所有 android 手机的情况都是一样的,但我认为这是在我的情况下记录对话的唯一选择。
    • @noxiouswinter 你是如何记录双方对话的?我面临同样的问题。我可以使用 VOICE_CALL 为双方录制三星的语音通话,但可以在索尼 Experia 中录制?
    • VOICE_CALL音源的目的正是为了记录上行和下行。我不知道其他公司,但我可以说它不是在索尼故意禁用的(除非它被认为有问题,最好根本不支持它,但我不回想一下这样的例子)因为我在他们的音频团队中做了几年的开发人员。来自平台供应商的语音通话记录支持通常是错误的和/或不完整的。在某些情况下,我们自己修复了它,但也有一些时候我们没有这样做,因为没有时间。
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2012-09-28
    • 2013-04-08
    • 2012-06-24
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多