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

标签 java android audio real-time microphone

我想构建一个 Android 应用程序以从两个麦克风获取音频数据,将声音与内存中的一些混合,然后通过耳机播放声音。这需要实时完成。您能否向我推荐一些教程或任何引用资料,以使用 Java eclipse 进行实时音频输入、混合和输出?

到目前为止,我能够录制、保存并播放声音,但我找不到任何以这种方式实时连接声音硬件的教程。

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

谢谢!

最佳答案

我在这里看到两个问题:

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

2) 实时音频输出。 这是 Android 中长期存在的问题,如果您想实时处理(使用 native 音频输出),目前您几乎只能使用 Galaxy Nexus。但是,如果您掌握了 USB,您也可以以更短的延迟进行输出。

我想如果您不厌其烦地让 USB 工作,您可以获得一个带立体声输入的 USB 音频设备。如果您将一个单声道麦克风连接到每个输入 channel ,然后通过 USB 输出,您将非常接近你的既定目标。您可能想尝试“USB Audio Tester”或“usbEffects”应用程序,看看目前有什么可能。

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

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

关于java - Android (Java) 实时音频输入(麦克风和 USB)和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574942/

相关文章:

java - 强制或生成jvm核心转储(IBM JVM)

java - Jacoco 在 Parceler 类上失败 - Android

java - 如何使用 JPA 将 Map (java.util.Map) 对象持久保存在实体内并确保持久性级联?

Android 布局 - 线性布局中的居中图标

android - Fmod:读取音频文件,添加效果,然后将结果int保存到文件

matlab - Matlab-以正确的比例创建psd

Java:单独的时间数字

Android:变换图像和插值算法

java - Android ListView 行间距

javascript - 当您将鼠标悬停在javascript中的div上时如何只发出一次声音