最近,我在尝试通过我的网站访问客户的麦克风时开始遇到错误。当 Chrome 询问是否允许网站访问用户的麦克风时,无论他们点击“允许”还是“拒绝”,都会生成 [object NavigatorUserMediaError]
。无论麦克风是否实际插入计算机(运行 Ubuntu 12.04),这种情况都会发生。
通过 Firefox 进行的进一步测试表明,这并非 Chrome 所特有。问题仅在我完成实时输入演示然后退出计算机后才出现。我尝试制作一个访问麦克风的基本演示,但它遇到了同样的问题。
var getVideo = false, getAudio = true;
navigator.getUserMedia || (navigator.getUserMedia = navigator.mozGetUserMedia ||
navigator.webkitGetUserMedia || navigator.msGetUserMedia);
function init() {
if(navigator.getUserMedia) {
navigator.getUserMedia({video:getVideo, audio:getAudio}, onSuccess, onError);
} else {
alert('getUserMedia failed.');
}
}
function onSuccess() {
console.log("Yay");
}
function onError(err) {
console.log("Noo " + err);
}
这很令人费解,因为它一直运行良好,直到我注销然后重新登录并尝试再次测试它。
我通过 Jetty 和 Eclipse 在本地托管 Web 代码。我通过在网络浏览器中键入 localhost:8080/my-program
来访问它。
编辑: 错误发生后,chrome 地址栏中出现摄像头图标,表示 Chrome 正在访问我的麦克风并列出两个可能的麦克风,“默认”和“内置音频模拟立体声”。
编辑 2: 这个错误也发生在其他试图通过 webrtc 访问我的麦克风的网站上。传统的 Flash 实现仍然有效。
Chrome 似乎在打开时定期抛出一条错误消息。
[361:362:0725/095320:ERROR:audio_output_device.cc(186)]
Not implemented reached in virtual void
media::AudioOutputDevice::OnStateChanged(media::AudioOutputIPCDelegate::State)
编辑 3: 我能够进一步澄清错误消息
NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
最佳答案
** 一次一个浏览器 **
我在打开多个浏览器进行测试时遇到过这种情况。一次似乎只有一个浏览器可以访问媒体。
即当我在 Chrome 中打开我的页面并且视频/音频正常时,Firefox 将无法工作,而当我在 Firefox 中正常工作时,Chrome 将无法工作。
关于javascript - 当我在 Chrome 中单击 "Allow"时,为什么 getUserMedia 会抛出 [object NavigatorUserMediaError]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793599/