gpt4 book ai didi

javascript - 如何检测麦克风类型

转载 作者:行者123 更新时间:2023-11-30 08:35:35 24 4
gpt4 key购买 nike

我使用 webRTC (getUserMedia) 录制声音并将其上传到后端服务器。一切正常,除了我无法确定麦克风类型(它是内置麦克风、USB 麦克风、耳机麦克风,还是其他什么?)

有人知道如何检测类型吗?

最佳答案

您可以使用 navigator.mediaDevices.enumerateDevices()列出用户的摄像头和麦克风,并尝试从他们的标签中推断类型(不幸的是没有麦克风类型字段)。

以下代码适用于 Firefox 39 和 Chrome 45 *:

var stream;
navigator.mediaDevices.getUserMedia({ audio:true })
.then(s => (stream = s), e => console.log(e.message))
.then(() => navigator.mediaDevices.enumerateDevices())
.then(devices => {
stream && stream.stop();
console.log(devices.length + " devices.");
devices.forEach(d => console.log(d.kind + ": " + d.label));
})
.catch(e => console.log(e));

var console = { log: msg => div.innerHTML += msg + "<br>" };
<div id="div"></div>

在我系统上的 Firefox 中,这会产生:

5 devices.
videoinput: Logitech Camera
videoinput: FaceTime HD Camera (Built-in)
audioinput: default (Logitech Camera)
audioinput: Built-in Microphone
audioinput: Logitech Camera

现在,有一些注意事项:By spec标签仅在授予设备访问权限时显示,这就是代码段要求它的原因(两种方式都尝试)。

此外,Chrome 45 需要持久权限(错误?),这在不安全的 HTTP 中不可用,因此您可能需要 reload this question in HTTPS先看标签。如果这样做,请不要忘记之后在 URL 栏中撤销访问权限,否则 Chrome 会保留它,这在 stackoverflow 上可能是个坏主意!

或者,尝试 https://webrtc.github.io/samples/src/content/devices/input-output由于 adapter.js,它可以在常规 Chrome 中运行polyfill,但需要您授予持久权限并在看到标签之前重新加载页面(因为它是如何编写的)。

(*) 编辑:显然,enumerateDevices 刚刚在 Chrome 45 中重新置于实验性标志下,因此您需要启用它 as explained here .对于那个很抱歉。我希望不会太久。

关于javascript - 如何检测麦克风类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com