【问题标题】:AudioSource value for USB microphone on AndroidAndroid 上 USB 麦克风的 AudioSource 值
【发布时间】:2012-12-26 16:23:21
【问题描述】:

基于 MK809/Android 4.1.1 的音频捕获应用程序。没有内置麦克风,所以我尝试使用 USB 麦克风,它在连接时在设置/声音/声音设备管理器/声音输入设备中被正确检测为“USB 音频设备”。

要传递给 AudioRecord 构造函数的此设备的 AudioSource 值是什么(第一个参数)。我尝试了 MediaRecorder.AudioSource 中的每一个,都没有奏效。我只对读取捕获缓冲区感兴趣,而不是保存到文件中。

【问题讨论】:

    标签: android audio usb


    【解决方案1】:

    回答我自己的问题。以下值确实有效:DEFAULT、MIC、CAMCORDER,可能还有其他值,因为它是唯一的输入设备。

    我尝试使用 48000 的采样率(适用于 Windows)并且 AudioRecord 创建失败:

    错误/AudioRecord(1615): 无法获取记录源 1 的音频输入 错误/AudioRecord-JNI(1615):创建 AudioRecord 实例时出错:初始化检查失败。 ERROR/AudioRecord-Java(1615): [android.media.AudioRecord] 初始化本机 AudioRecord 对象时出现错误代码 -20。

    考虑到使用相同的一组参数调用 getMinBufferSize() 不会返回预期的错误,这有点误导信息。我认为这是设备的有效采样率。将其设置为 44100(保证)可以解决问题。

    USB 音频输入设备可以在 Android 上运行,至少 Jelly Bean 是这样。希望这对某人有所帮助。

    【讨论】:

      【解决方案2】:

      FWIW,这是特定于实现的(不同平台供应商和 OEM 之间可能会有所不同)。

      在我使用过的设备上,如果 AudioSource 是 DEFAULTMICVOICE_RECOGNITION,则会选择 USB 附件的麦克风,并且音频 HAL 中支持的 USB 音频录制的唯一采样率是8、16 和 48 kHz(尽管 AudioFlinger 能够重新采样到一定范围内的其他速率)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2017-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多