Stream is NOT low latency
,但所有参数都匹配:SharingMode::Exclusive
PerformanceMode::LowLatency (not accepted)
mSampleRate 48000 (default of PlaybackDevice)
AudioFormat::I16
使用OpenSL-ES API:我无法启动第二个RecordingStream,stream->requestStart()
返回“ ErrorInternal”
使用AAudio API:我无法打开第二个RecordingStream,builder.openStream()
返回“ ErrorInvalidState”
在两种情况下,我都叫builder->setCallback(nullptr)
,所以我认为使用单独的线程可能会有所帮助,但这并不能解决问题。
有什么想法吗?
答案 0 :(得分:1)
Android不允许您同时打开到多个音频设备的输入(即录制)音频流。不支持该用例。
也许如果您解释了为什么要同时从不同的内置麦克风进行录音,我可能会建议一种解决方法。
更新:术语Audio Device是指能够或接收或发送音频的设备。音频设备可以连接多个麦克风和/或扬声器,它们表示为不同的通道。
答案 1 :(得分:-3)
**根据Don Turner的回答:“ Android不允许您同时打开到多个音频设备的输入(即录制)音频流。不支持此用例。”
**更清楚:
-Android不支持同时从多个输入设备进行录制。
-Android不支持同时播放多个输出设备。
-可以肯定的是,以上两点的组合也不起作用。
**这很容易测试,例如通过并行运行此AAudio Sample的2个实例并选择不同的输出设备。这将行不通!
**官方文档中未提及此非常重要的约束条件!!!
**因此,Android(oboe,aaudio,opensl es)不支持以下“示例用例”:
USB音频输入--->内置扬声器
并同时
麦克风----> USB音频输出
**我很失望,我花了很多时间和金钱来开始一些基于此的事情,假设这是“基本”功能...现在我必须放弃:-(
**如果我找到合适的地方,那么我将输入“请求”以支持此“功能”,例如在AAudio中。
**希望这对其他人有帮助,然后再花太多时间在Android和相应库提供的当前功能之外的东西上。
** donturner指出的一种可能的解决方法将改为使用特殊的USB声卡,该声卡具有2个输入和2个输出,它们只是同一设备中的独立通道。不幸的是,这对我来说真的行不通,因为我的目标是不使用额外硬件(使用耳机接口)的低成本解决方案。