use*_*276 3 javascript firefox device webrtc output
我尝试在 Ubuntu 16.04 上运行此脚本以检测 Mozilla Firefox v50.1.0 中的音频设备。[1]
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);
});
Run Code Online (Sandbox Code Playgroud)
它只检测输入设备,不检测输出。适用于 Chrome 和 Opera,但不适用于 Firefox。
顺便说一下,我需要手动将我的页面域添加到 Firefox 的 about:config 中的 media.getusermedia.screensharing.allowed_domains 以获取弹出窗口提示以允许共享我的设备。为什么这是必要的?
更新:从 Firefox 63 开始,该功能位于首选项之后。如果您media.setsinkid.enabled在 about:config 中打开,则输出设备将包含在 enumerateDevices 中,类似于 Chrome 的工作方式(需要麦克风权限)。
但是,要求获得麦克风许可才能访问扬声器从来没有多大意义。这是一种权限升级,可有效地使该功能在网络会议之外无用。
现有 API 也存在指纹(跟踪)问题,因为它在 Chrome 中仅使用一次麦克风后,就会向网站公开有关用户系统的持续信息。
setSinkId由于这些原因,Firefox 和 Safari 从未添加过。最新版本的规范添加了selectAudioOutput来解决这些问题,并且很可能会实现。
顺便说一句,我需要手动添加我页面的域...
有没有域名白名单需要在Firefox共享摄像机和麦克风。从来不是。一旦实现,也不会有输出设备。
你说的域白名单只是为了屏幕共享,一个人的桌面共享。甚至从 Firefox 52 开始,该要求也已被删除,并被警告取代。
屏幕共享设备没有用 枚举enumerateDevices,所以可能不是你想要的,但无论如何我会介绍原因:
该白名单(现在是警告)的原因是在网络上共享浏览器窗口时固有的安全风险。简而言之,这种共享允许站点查看它从其他域调用的站点的像素,从而绕过跨域保护。恶意站点可以利用它从您登录的其他站点弹出您的私人信息,以您的身份有效浏览,并捕获结果,窃取您的私人数据。
您可以在我的博客中阅读有关此内容的更多信息。
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |