最近访问客户端麦克风时,我在网站上遇到了错误。当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代码。我通过在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}