最近,我在尝试通过我的网站访问客户的麦克风时开始出现错误。当 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}