Javascript WebRTC:Firefox未检测到任何输出设备

Javascript WebRTC:Firefox未检测到任何输出设备,javascript,firefox,output,webrtc,device,Javascript,Firefox,Output,Webrtc,Device,我试图运行这个脚本来检测Ubuntu 16.04上Mozilla Firefox v50.1.0中的音频设备 它只检测输入设备,但不检测输出。可以在Chrome和Opera中使用,但不能在Firefox中使用 顺便说一下,我需要手动将页面的域添加到Firefox的about:config中的media.getusermedia.screensharing.allowed_域,以获得允许共享我的设备的弹出窗口提示。为什么这是必要的?和输出设备(扬声器)在Firefox中还没有实现 更新:从Fire

我试图运行这个脚本来检测Ubuntu 16.04上Mozilla Firefox v50.1.0中的音频设备

它只检测输入设备,但不检测输出。可以在Chrome和Opera中使用,但不能在Firefox中使用

顺便说一下,我需要手动将页面的域添加到Firefox的about:config中的media.getusermedia.screensharing.allowed_域,以获得允许共享我的设备的弹出窗口提示。为什么这是必要的?

和输出设备(扬声器)在Firefox中还没有实现

更新:从Firefox 63开始,该功能在pref后面。如果在about:config中启用
media.setsinkid.enabled
,则输出设备包含在设备中,与Chrome的操作方式类似(需要麦克风权限)

然而,要求麦克风允许访问扬声器从来没有什么意义。这是一种权限升级,有效地使该功能在web会议之外变得无用

现有的API也存在指纹识别(跟踪)问题,因为在Chrome中只需使用一次麦克风,就可以向站点公开用户系统的持续信息

由于这些原因,Firefox和Safari从未添加过
setSinkId
。规范的最新版本增加了解决这些问题的方法,很可能会是这样

顺便说一下,我需要手动添加我的页面的域

在Firefox中共享摄像头和麦克风不需要域名白名单。从来没有。一旦实现了输出设备,也就不会有输出设备了

您提到的域白名单仅用于屏幕共享,即共享个人桌面。甚至在Firefox 52中,这一要求也被删除,并被替换为

屏幕共享设备不是用
enumerateDevices
枚举的,因此可能不是您想要的,但我还是要说明原因:

这个白名单(现在是警告)的原因是,在网络上共享浏览器窗口时存在固有的安全风险。简言之,这种共享允许站点看到它从其他域调用的站点的像素,并围绕跨源保护进行最终运行。恶意网站可能会利用此功能从您登录的其他网站弹出您的私人信息,在您登录时进行有效浏览,并捕获结果,窃取您的私人数据


您可以在中了解更多信息。

感谢您的回答FF 59.0.2(64位)输出设备未实现。FF 76.0.1(64位)输出设备未实现still@AlexeyMuravyov现在实施了吗?在MDN中,它这样说:“在Firefox63之前,enumerateDevices()只返回输入设备。从Firefox 63开始,如果启用了media.setsinkid.enabled首选项,则还包括输出设备。“@Thisara它在Firefox中仍然落后于pref。正在跟踪实施情况。
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
  devices.forEach(function(device) {
    console.log(device.kind + ": " + device.label +
                " id = " + device.deviceId);
  });
})
.catch(function(err) {
  console.log(err.name + ": " + err.message);
});