我正在开发一个Web应用程序,该应用程序需要从我在Web应用程序中选择的两个不同的本地音频源接收本地音频输入。
在开发此应用程序时,一个音频输入源是网络摄像头中的立体声麦克风;另一个是从声卡输入的立体声音频线。我已将内置音频线路输入设置为PulseAudio中“音频录制”下录制的首选设备。我注意到Chrome和Firefox都从Recording用例类别中请求音频输入,pavucontrol对此进行了显示。
我使用 navigator.mediaDevices.enumerateDevices(); 标识可用的 deviceIds 。 我为每个类似于 {audio:deviceId:{exact:devId}} 的音频输入源创建两个约束,其中 devId 是保存我想要的deviceId的变量。每种情况。
我两次调用 navigator.mediaDevices.getUserMedia(constraint); ,对于每个deviceId约束一次。
当每个返回时, MediaStream 对象之一应具有 MediaStreamTrack 作为默认的音频输入源。对于下一个活动的延迟优先级源,另一个应与PulseAudio配置中指定的相同。
但是... PulseAudio将默认的音频输入源分配给这两者,而忽略了我的deviceId约束。
我无法解决出了什么问题。两种浏览器是否都不向PulseAudio请求正确的设备,或者PulseAudio将自身限制为仅提供默认的音频输入设备,直到用户摆弄pavucontrol。我的直觉是,让我失望的是PulseAudio行为。我之所以这样说,是因为我找到了Google Meet,jitsi.org也要求我通过pavucontrol调整音频输入源。因此,我怀疑这是PulseAudio问题。
因此,在我的Web应用程序中,我指定了确切的音频输入源,但是正在接收首选的音频输入源。我都想要