首页 文章

Android(Java)实时音频输入(麦克风和USB)和输出

提问于
浏览
12

我想构建一个Android应用程序来从两个麦克风中获取音频数据,将声音与一些内存混合,然后通过耳机播放声音 . 这需要实时完成 . 你可以参考我的一些教程或任何参考资料,用于Java eclipse的实时音频输入,混合和输出吗?

到目前为止,我能够录制声音,保存它,然后播放它,但是我找不到任何教程可以通过这种方式实现与声音硬件的实时接口 .

注意:一个麦克风通过分离器连接到Android的3.5毫米耳机插孔,另一个麦克风通过USB端口连接 .

谢谢!

1 回答

  • 5

    我在这里看到两个问题:
    1)通过USB输入音频 .
    音频输入可以使用android 3.2和libusb完成,但这并不容易(你需要从libusb获取USB描述符,自己解析它们并将正确的控制传输发送到设备等) . 对于某些手机,您可以通过USB获得大约5-10 mS的输入延迟 .

    2)实时音频输出 . 这在Android中是一个长期存在的问题,如果你想实时接近(使用Native Audio输出),你现在几乎只限于Galaxy Nexus . 但是,如果掌握USB,您也可以以较短的延迟输出 .

    我想如果你遇到让USB工作的麻烦,你可以得到一个带有立体声输入的USB音频设备 . 如果你已经将一个单声道麦克风连接到每个输入通道,那么通过USB输出你就会非常接近你的既定目标 . 您可能想尝试“USB Audio Tester”或“usbEffects”应用程序来查看当前可能的内容 .

    在编码混合和输出等方面,您可能希望一个线程读取每个单独的输入源并以小块(一次100-1000个样本)写入队列 . 然后有一个单独的线程读取队列和混合,将输出放到另一个队列,最后一个线程(如果没有通过USB输出,可能在本机代码中)读取混合队列并输出 .

    以下链接http://code.google.com/p/loopmixer/具有处理音频本身的风格 .

相关问题