如何使用JavaScript检测系统连接麦克风

How to detect that system connected with microphone using JavaScript

本文关键字:连接 麦克风 检测系统 JavaScript 何使用      更新时间:2023-09-26

我使用getUserMedia()进行音频录制,它工作正常,但有一个问题。

我想在开始录音前显示一个消息,说明任何麦克风是否连接到系统。

为此,我使用了以下代码并将其运行到chrome中,但它不能正常工作。

if(navigator.getUserMedia || navigator.webkitGetUserMedia)
{
   alert("Microphone is connected with your system");
} else {
   alert("Microphone is not connected with your system");
}

当麦克风未连接时,上面的代码也会给出"麦克风与您的系统连接"的消息。

所以请建议我一个更好的方法来检测麦克风使用JavaScript在任何浏览器

检测这些功能是否存在并不检测硬件麦克风是否存在。它只检测浏览器是否有这样做的API。

通过测试的浏览器不需要将物理麦克风插入麦克风插孔。它只是一个更新的浏览器。测试失败的浏览器可能有麦克风,但是是不包含API的旧浏览器。

而且,至少getUserMedia函数是异步的,所以任何依赖于使用音频或视频的代码都必须放在回调函数中,而不是主脚本中。

关于如何为音频/视频输入编写跨浏览器代码的示例,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia。

像这样:

function success(stream) {
   // we have it
}
function fail(error) {
   console.log(error);
   if (error === 'NO_DEVICES_FOUND') {
      // NO_DEVICES_FOUND (no microphone or microphone disabled)
   }
}
navigator.getUserMedia({ audio: true }, success, fail);

试试这个

   navigator.mediaDevices.getUserMedia({ audio: true })
            .then(stream => {
            // Code for success
            }).catch(err => {
                if(err.includes("NotFoundError: Requested device not found"))
                alert("Mic not detected")
                else alert("Error recording audio")
            })

如果麦克风未被检测到或未插入意味着catch语句将被执行。你可以在这里显示你的错误信息

你可以使用这个链接

我使用了这个方法

developer.mozilla.org