【发布时间】:2020-11-12 23:56:35
【问题描述】:
我想检查麦克风和耳机是否已连接。我已经通过下面的代码成功检测到麦克风是否连接。
var mic = navigator.mediaDevices.getUserMedia({ audio: true });
mic.then(function () {
alert("Mic connected")
}).catch(function (err) {
alert("Please Connect Your Mic");
})
现在我想对耳机做同样的事情,但我找不到任何解决方案。有人可以帮助如何做到这一点。谢谢。
【问题讨论】:
-
您现在得到的反馈不也是针对耳机的吗? getUserMedia documentation 显示任何音频设备之间没有区别。此外,
.getUserMedia({ audio: true });仅请求使用它的权限,它一开始就没有说明连接的设备。你需要看MediaDevices.enumerateDevices() -
不,它不用于耳机,它仅用于麦克风检测。 MediaDevices.enumeratedDevices() 返回五个音频输出设备,但我只想获取有关我的耳机的信息
-
再次
.getUserMedia({ audio: true });仅报告您可以访问系统上的任何 音频设备,它不区分扬声器、耳机、麦克风等。使用来自MediaDevices.enumeratedDevices()的列表,您可以选择耳机或麦克风。当然,这因系统甚至用户而异。如果幸运的话,该名称中包含 headset,但很可能不会(这可以在系统级别分配)。 -
是的,这些列表对于每个系统都是不同的,所以我没有使用它,并且 .getUserMedia({ audio: true });我不知道它只报告麦克风。
-
确实没有办法避免使用
MediaDevices.enumeratedDevices()来解决这个问题。您只看到使用getUserMedia({ audio: true });的麦克风的原因是您拥有使用扬声器/耳机(或任何输出设备)的默认访问权限。这在理论上也可能有所不同,因此系统也可能会要求获得使用它们的权限,尽管我认为这根本没有实现。
标签: javascript angular webrtc