我使用getUserMedia()
进行录音,但它运行正常,但有问题。
我想在开始录制之前显示任何麦克风与系统连接的信息。
为此,我使用了以下代码并将其运行到chrome中,但它无法正常工作。
if(navigator.getUserMedia || navigator.webkitGetUserMedia)
{
alert("Microphone is connected with your system");
} else {
alert("Microphone is not connected with your system");
}
当麦克风未连接时,也会在上面的代码上发出消息"麦克风已连接到您的系统"。
所以请建议我在任何浏览器中使用JavaScript检测麦克风的更好方法。
答案 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语句。您可以在此处显示错误消息。