小编Big*_*uck的帖子

当我点击Chrome中的"允许"时,为什么getUserMedia会抛出[对象NavigatorUserMediaError]?

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

javascript audio jetty embedded-jetty webrtc

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

audio ×1

embedded-jetty ×1

javascript ×1

jetty ×1

webrtc ×1