javascript - 当我在 Chrome 中单击 "Allow"时,为什么 getUserMedia 会抛出 [object NavigatorUserMediaError]?

标签 javascript audio jetty webrtc embedded-jetty

最近,我在尝试通过我的网站访问客户的麦克风时开始遇到错误。当 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 代码。我通过在网络浏览器中键入 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}

最佳答案

** 一次一个浏览器 **

我在打开多个浏览器进行测试时遇到过这种情况。一次似乎只有一个浏览器可以访问媒体。

即当我在 Chrome 中打开我的页面并且视频/音频正常时,Firefox 将无法工作,而当我在 Firefox 中正常工作时,Chrome 将无法工作。

关于javascript - 当我在 Chrome 中单击 "Allow"时,为什么 getUserMedia 会抛出 [object NavigatorUserMediaError]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793599/

相关文章:

javascript - SAP Cloud SDK for JavaScript 的 AttachmentService 问题

javascript - id 标签导致音频无法在 chrome 中播放

tomcat - 如何将 OpenSSL 的密码列表映射到 Java JSSE

javascript - 将字符串传递给函数以用作 javascript/jquery 中的对象

javascript - 可视化显示所需的属性

audio - 如何禁用Windows CE中的按键声音?

javascript - Android WebView JS - 使用自定义函数在加载时自动启动音频

java - 如何在 Eclipse 中使用 contextFactory.setKeyStorePath

gradle - 如何在 Gretty 插件中选择特定的 jetty 版本

javascript - Node-chat 使用什么样的技术