Android 双簧管库:可以从 2 个录音设备录制 2 个流吗?

Android Oboe Library: 2 streams recording from 2 recording devices possible?


使用 OpenSL-ES API:我无法启动第二个 recordingStream,stream->requestStart() returns "ErrorInternal"

with AAudio API: 我无法打开第二个 recordingStream,builder.openStream() returns "ErrorInvalidState"

在这两种情况下,我都调用了 builder->setCallback(nullptr),所以我认为使用单独的线程可能会有所帮助,但这并没有解决问题。

有什么想法吗?

Android 不允许您同时向多个音频设备打开输入(即录制)音频流。不支持此用例。

也许如果您解释为什么要同时从不同的内置麦克风录音,我可以建议一个解决方法。

更新: 术语 Audio Device 是指能够接收或发送音频的设备。一个音频设备可以连接多个麦克风 and/or 个扬声器,它们表示为不同的通道。

** 根据 Don Turner 的回答:"Android does not allow you to open input (ie recording) audio streams to more than one audio device at the same time. This use case is not supported."

** 更清楚:
- Android 不支持同时从多个输入设备进行录制。
- Android 不支持同时播放到多个输出设备。
- 可以肯定的是,以上两点的组合也不起作用。

** 这可以很容易地测试,例如通过 运行 此 AAudio Sample 的 2 个实例并行并选择不同的输出设备。这根本行不通!

** 这个非常重要的约束在官方文档的任何地方都没有提到!!!

** 因此,Android(双簧管、aaudio、opensl es)不支持以下 "example use case":

USB 音频输入 ---> 内置扬声器
同时
麦克风 ----> USB 音频输出

** 我很失望,我花了时间和金钱开始基于此的东西,假设这是 "basic" 功能......现在我不得不放弃 :-(

**如果我找到合适的地方,那么我会输入一个"request"来支持这个"feature",例如在 AAudio 中。

** 希望这可以帮助其他人,以免他们在 Android 和相应库提供的当前功能之外投入太多时间。


** donturner 指出的一种可能的解决方法是使用具有 2 个输入和 2 个输出的特殊 USB 声卡,它们只是同一设备中的独立通道。不幸的是,这对我来说并不适用,因为我的目标是无需额外硬件(使用耳机接口)的低成本解决方案。