【发布时间】:2019-09-22 14:18:54
【问题描述】:
我对使用 Android Oboe 库访问手机上的两个麦克风很感兴趣。大多数手机都有双麦克风配置,我想同时从两者读取数据。我扩展了 Oboe 的“LiveAffect”示例,并尝试了以下方法:
有两个 oboe::AudioStream,一个用于我手机上的每个麦克风(注 9 和 Pixel 1)。只运行一个流工作正常,我能够读取数据并播放/保存到文件。但是启动两个流都不起作用(尝试通过
stream->requestStart()启动第二个流时出现以下错误:E/AUDIO-APP:启动流时出错。ErrorInvalidState)。显然,启动两个输入流是一个 Android 限制,正如这个 SO 问题中所讨论的:Android Oboe Library: 2 streams recording from 2 recording devices possible?有一个流但有 2 个频道。我的 Note 9 上的两个麦克风属于同一组,但是当我打开一个带有 2 个通道 (
->setChannelCount(oboe::ChannelCount::Stereo);) 的流时,我在两个通道中只获得一个麦克风的重复数据。我尝试过使用AudioStreamBuilder设置,例如设置->setInputPreset(oboe::InputPreset::Camcorder)。InputPresets设置都没有修复它,仍然在两个通道中镜像数据。
两次尝试都无法使用 OpenSL 后端。
【问题讨论】:
-
“我的 Note 9 上的两个麦克风属于同一组”-“同一组”是什么意思?
-
从 MicrophoneInfo.getGroup() (developer.android.com/reference/android/media/MicrophoneInfo) 返回的号码。
标签: android c++ audio-recording opensl oboe