我使用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