最近,我在尝试通过我的网站访问客户端的麦克风时开始出错.当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);
}
Run Code Online (Sandbox Code Playgroud)
这是相当令人费解的,因为它已经完美地工作,直到我退出然后重新登录并尝试再次测试它.
我通过Jetty和Eclipse在本地托管Web代码.我通过localhost:8080/my-program在Web浏览器中输入来访问它.
编辑:错误发生后,相机的图标显示在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)
Run Code Online (Sandbox Code Playgroud)
编辑3:我能够更多地澄清错误信息
NavigatorUserMediaError {code: 1, PERMISSION_DENIED: 1}
Run Code Online (Sandbox Code Playgroud)