如何解决是否可以从Oboe的同一麦克风打开2个流?
我正在尝试从Oboe上的同一麦克风打开2个输入流,但是它不起作用。
我要打开的音频输入之一是这样的:
defaultBuilder().setDirection(oboe::Direction::Input)
->setFormat(oboe::AudioFormat::Float) // For Now
->setChannelCount(1) // Mono in for effects processing
->openManagedStream(inStream);
然后另一个:
builder.setChannelCount(channelCount)
->setDirection(isInput ? oboe::Direction::Input : oboe::Direction::Output)
->setSharingMode((oboe::SharingMode) oboe::SharingMode::Shared)
->setPerformanceMode((oboe::PerformanceMode) performanceMode)
->setInputPreset((oboe::InputPreset)inputPreset)
->setSessionId((oboe::SessionId) sessionId)
->setSampleRate(sampleRate)
->setFormat((oboe::AudioFormat) format)
->setChannelConversionAllowed(channelConversionAllowed)
->setFormatConversionAllowed(formatConversionAllowed)
->setSampleRateConversionQuality((oboe::SampleRateConversionQuality) rateConversionQuality)
;
是否可能由于每个打开的属性不同而使事情不起作用?其中一个是用于处理某些效果的单声道,另一个是用于录音的立体声。格式也可能有所不同,我不知道。
但是从原则上讲,我认为这应该是可能的。 Android应该将麦克风输入一分为二,然后针对每个流采取相应的措施。
解决方法
在Android中无法打开多个麦克风流。这是一个Android限制,除了要制作自定义android ROM并绕过此限制外,没有任何直接的解决方案。请检查我回答的this类似问题。
,我不是android开发人员,请原谅我的法语=),但从我看到的情况来看,android使用ALSA / OSS作为音频的默认内核驱动程序,ALSA不支持在同一设备上打开超过一个pcm而且该设备不支持一个以上的流。
您可以在此处了解有关ALSA的更多信息:https://www.linuxjournal.com/article/6735
以及有关android音频的信息:https://source.android.com/devices/audio
对于您的问题,答案是否定的,您不能打开多个流,只是驱动程序和设备不支持该流。
但基本上,您可以使用一个编写器线程和2个读取器来实现某种缓冲区。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。