javascript - webrtc开发 - webrtc教程




为什么getUserMedia在Chrome中单击“允许”时抛出[对象NavigatorUserMediaError]? (2)

这可能发生在两种情况下,我经历了两个Ubuntu 12.04:

  • 您已经点击拒绝一次,然后浏览器保存该设置,当在该页面要求媒体访问时总是返回错误。 (当你从浏览器中得到问题时,这似乎不是你的情况,但你只需要去地址栏,点击相机图标,并更改选项以再次询问)。

  • 您的浏览器无法访问媒体设备,而且在任何没有摄像头和麦克风的计算机上,即使您按下“允许”,您也将得到一个错误事件,因为它无法给您提供任何流。 尝试检查浏览器设置,看看是否可以选择所选的相机。 我经历过这个,名单是空的。 为了解决这个问题,我不得不重启机器,Chrome开始重新显示设备列表。

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

NavigatorUserMediaError {code:1,PERMISSION_DENIED:1}

这意味着您的浏览器设置不允许您访问摄像机。 进入您的浏览器设置 - >在网站设置下,您可以找到您阻止访问设备的网页列表。







embedded-jetty