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

scyqe7ek  于 2022-11-20  发布在  Java
关注(0)|答案(4)|浏览(511)

我正在使用getUserMedia()进行音频录制,它工作正常,但有一个问题。
我想在开始录音之前显示一条消息,说明是否有任何麦克风与系统连接。
为此,我使用了以下代码并将其运行到chrome中,但它无法正常工作。

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

当麦克风未连接时,上面的代码也会给出消息“麦克风已与您的系统连接”。
所以请建议我一个更好的方法来检测麦克风使用JavaScript在任何浏览器。

7ajki6be

7ajki6be1#

测试这些函数是否存在并不检测硬件麦克风是否存在。它只检测浏览器是否有这样做的API。
通过测试的浏览器不需要在麦克风插孔中插入物理麦克风。它只是一个较新的浏览器。未通过测试的浏览器可能有麦克风,但是不包含API的旧浏览器。
此外,至少getUserMedia函数是异步的,因此任何依赖于使用音频或视频的代码都必须放在回调函数中,而不是放在主脚本中。
有关如何编写跨浏览器音频/视频输入代码的示例,请参见https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia

vyu0f0g1

vyu0f0g12#

大概是这样的:

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);
dzjeubhm

dzjeubhm3#

试试这个

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语句将被执行。您可以在这里显示错误消息。

rryofs0p

rryofs0p4#

您可以使用此链接

我用了这个方法
developer.mozilla.org

相关问题