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

时间:2014-03-28 06:52:33

标签: javascript html5 audio-recording microphone getusermedia

我使用getUserMedia()进行录音,但它运行正常,但有问题。

我想在开始录制之前显示任何麦克风与系统连接的信息。

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

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

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

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

3 个答案:

答案 0 :(得分:6)

测试这些功能是否存在并未检测到硬件麦克风的存在。它只检测浏览器是否有API来执行此操作。

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

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

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

答案 1 :(得分:1)

这样的事情:

function succes(stream) {

   // we has it

}

function fail(error) {

   console.log(error);

   if (error === 'NO_DEVICES_FOUND') {

      // NO_DEVICES_FOUND (no microphone og microphone disabled)

   }

}

navigator.getUserMedia({audio : true}, succes, fail);

答案 2 :(得分:0)

尝试

   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语句。您可以在此处显示错误消息。