Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么getUserMedia在我单击“时抛出[object Navigator UserMediaError];允许;镀铬的?_Javascript_Audio_Jetty_Webrtc_Embedded Jetty - Fatal编程技术网

Javascript 为什么getUserMedia在我单击“时抛出[object Navigator UserMediaError];允许;镀铬的?

Javascript 为什么getUserMedia在我单击“时抛出[object Navigator UserMediaError];允许;镀铬的?,javascript,audio,jetty,webrtc,embedded-jetty,Javascript,Audio,Jetty,Webrtc,Embedded Jetty,最近,当我试图通过我的网站访问客户的麦克风时,我开始出错。当Chrome询问是否允许站点访问用户的麦克风时,无论他们单击“允许”还是“拒绝”,都会生成[object Navigator UserMediaError]。无论麦克风是否实际插入计算机(运行Ubuntu 12.04),都会出现这种情况 通过Firefox的进一步测试表明,这并不是Chrome特有的。这个问题是在我做了一个实时输入演示,然后注销计算机后才开始出现的。我试着制作一个访问麦克风的简单演示,但它遇到了同样的问题 var get

最近,当我试图通过我的网站访问客户的麦克风时,我开始出错。当Chrome询问是否允许站点访问用户的麦克风时,无论他们单击“允许”还是“拒绝”,都会生成
[object Navigator UserMediaError]
。无论麦克风是否实际插入计算机(运行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}

这可能发生在两种情况下,我在Ubuntu 12.04中体验过这两种情况:

  • 您单击了“拒绝”一次,然后浏览器保存该设置,当在该页面中请求访问媒体时,总是返回错误。(当您从浏览器中获得问题时,情况似乎并非如此,但您只需转到地址栏,单击摄像头图标并更改选项以再次提问)

  • 您的浏览器无法访问媒体设备,与任何没有摄像头或麦克风的计算机一样,即使按“允许”,也会出现错误事件,因为它无法提供任何流。尝试检查浏览器设置,以查看是否可以选择选定的相机。我经历过这种情况,但列表是空的。为了解决这个问题,我不得不重新启动机器,Chrome开始再次显示设备列表


**一次一个浏览器**

当我在多个浏览器打开的情况下进行测试时,我遇到了这种情况。似乎一次只能有一个浏览器访问媒体


ie当我在Chrome中打开我的页面,视频/音频工作时,Firefox将不工作,当我在Firefox中工作时,Chrome将不工作。

NavigatorUserMediaError{code:1,权限被拒绝:1}


这意味着您的浏览器设置不允许您访问相机。进入您的浏览器设置->在“网站设置”下,您将找到您已阻止访问设备的网页列表。

getUserMedia仅适用于https;localhost(即)没有例外。Safari似乎也不允许在iFrame中使用getUserMedia。我总是会收到一个“试图从一个安全源不同于顶级框架的文档调用getUserMedia”错误。这使得使用codepen和jsfiddle这样的站点变得不可能


更多详情

Chrome提供了两种话筒选项,默认和内置音频模拟立体声。这两个选项都会发生错误。如果你说的是真的,那么在我没有插入麦克风的情况下,该网站是如何工作的?第三种情况是通过HTTP访问该网站,而该网站不是本地主机-Chrome现在只支持通过HTTPs的音频。这是我的系统的问题,而不是我的web代码。从其他计算机上看,该网站工作正常。感谢您的提示。如果我没记错的话,Chrome中的
localhost
有一个例外。是的,现在Chrome中的localhost也支持它。我以前在localhost中使用过webRtc,它工作得很好。但最近,由于新的浏览器更新,我得到了这个错误
DevicesNotFoundError
check此Safari现在允许您在本地主机上使用它:开发菜单/WebRTC>允许在不安全的站点上进行媒体捕获。