webrtc:mediaDevices.enumerateDevices() 返回空 deviceId

2024-01-04

我目前正在探索 webRTC,我想做的是获取所有媒体设备信息以及deviceId using navigator.mediaDevices.enumerateDevices();然后根据其种类属性将其分离出来,并允许用户选择针对特定种类使用哪种媒体设备。就像显示找到的相机的下拉列表并允许用户选择要使用的相机一样,这就是为什么我需要每个设备的 deviceId 。

这是我当前用于获取媒体设备的代码:

 const getConnectedDevices = async (type, callback) => {
  const mediaDevices = await navigator.mediaDevices.enumerateDevices();
  console.log(mediaDevices);
  callback(mediaDevices.filter((device) => device.kind === type));
};

这就是我得到的输出:

[
    { 
      deviceId: ""
      groupId: "51081772b5c5df2dbcb2ca2b8ae36c5d693d816f8d4bf4039cdb15802b7ffc54"
      kind: "audioinput"
      label: ""
    },
    {
      deviceId: ""
      groupId: "2e7a46f912e66fea3b6af4822e427c02a7725c39d86194dccdf5b7993293d7da"
      kind: "videoinput"
      label: ""
    },
    {
     deviceId: ""
     groupId: "51081772b5c5df2dbcb2ca2b8ae36c5d693d816f8d4bf4039cdb15802b7ffc54"
     kind: "audiooutput"
     label: ""
    }
]

一直得到一个空的deviceId。 我也尝试过打电话await navigator.mediaDevices.getUserMedia( {video: true,audio: true,}) before await navigator.mediaDevices.enumerateDevices()但仍然得到相同的结果。


它返回空deviceId现在领先于getUserMedia因为跟踪库是(并且仍然是 https://chromestatus.com/metrics/feature/timeline/popularity/1119) 呼叫enumerateDevices集体对人进行指纹识别,无意要求摄像头或麦克风。

该规范由隐私兴趣小组 (PING) https://www.w3.org/Privacy/IG/,结果是,这先列举策略(在询问用户提供摄像头或麦克风之前枚举设备)已被弃用,以提高用户隐私。即使在选择用户获得持久权限的浏览器中也是如此。(警告:最后一部分在 Chrome 中被取消,所以请继续 ★错误 1101860 https://crbug.com/1101860!)

所有大型 WebRTC 站点都已经使用设备优先相反的策略(首先要求摄像头或麦克风,然后在直播时在 ⚙️ 选项下实现设备切换)。因此,这一重大更改的网络兼容性被认为是可以接受的。

换句话说,提前getUserMedia解决,只能获知用户是否没有摄像头或没有麦克风。这是仅剩下的两个指纹识别位(您不会看到列出的多个设备)。

我之前也尝试过调用 [getUserMedia],...但仍然得到相同的结果。

那么你做错了什么,因为两者labels and deviceId然后,可以使设备切换仍然有效。看WebRTC 示例 https://webrtc.github.io/samples/src/content/devices/input-output/进行演示。您甚至仍然可以存储这些deviceIds 并将它们与getUserMedia在以后的访问中,该部分仍然有效。在使用以下命令询问它们之前,您无法枚举它们(跟踪它们的存在)deviceId约束。

操作假设是最流行的跟踪库在阴影中运行,并且不会冒实际代表其客户端站点提示用户使用摄像头或麦克风的风险。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webrtc:mediaDevices.enumerateDevices() 返回空 deviceId 的相关文章

随机推荐

  • Ember模型间隔重载

    我有一个用户模型 它具有纬度和经度属性 用于在地图上显示当前用户位置 App User DS Model extend firstName DS attr string lastName DS attr string email DS at
  • 使用 Java 发出并发 Web 请求

    有人可以指出我用于发出并行网络请求的片段吗 我需要发出 6 个 Web 请求并连接 HTML 结果 有没有一种快速的方法来完成这个任务 或者我必须采用线程方式 谢谢 Use ExecutorService http download ora
  • 在 HTML5 Canvas 中绘制图像,同时保留图像

    在HTML5 Canvas中 最简单的绘制方式是什么and move图像上的一条线 已经在画布上 保留下面的图像 例如 有一条垂直线跟踪鼠标 X 位置 我当前的画布 document ready function canvas docume
  • 如何在Java中使用变量执行SQL语句

    我有以下 mysql 语句来从正在运行的数据库中删除记录 SET email email protected cdn cgi l email protection SET userID SELECT id FROM USER WHERE e
  • 配置 Warden 以用于 RSpec 控制器规格

    我能够使用 Devise 的sign in在我的控制器规格中登录用户的方法 但现在我要从我的应用程序中删除 Devise 我不太确定如何仅使用 Warden 来获得类似的功能 我应该如何设置spec spec helper rb以及相关的s
  • Android多屏应用

    如何在 Android 应用程序中处理多个屏幕 我已经使用底部的选项卡栏进行了开发 没有任何问题 但是我想要做的是将屏幕上的所有内容替换为我在项目中创建的新 xml 布局文件中的内容 此外 我如何将后端代码绑定到新的布局文件 我确信这个问题
  • 在 .xml 中或以编程方式设置文本大小

    我在 dimens xml 有变量
  • 如何设置变量等于单元格地址?

    我必须找到 B 列中的下一个空单元格 变量 coluna amostras 保存其地址 使用变量 inserir 并使用它来粘贴新的行数据 但是 我不知道如何将地址存储在 inserir 变量中 正如其定义 Excel 返回 运行时错误 9
  • 如何获取MPDF的总页数?

    我正在使用 PHP MPDF 创建 PDF 文件 在页脚 我可以使用打印当前页码 PAGENO 但是如何获取 PDF 文件的总页数呢 这样我就可以在页脚中打印如下内容 Page Current Page of Total number of
  • Control 单击或 Shift 单击多个项目并拖动它们

    我一整天都在浏览这些论坛并尝试了很多插件 即 jquery hotkeys js 和http thechriswalker net select drag http thechriswalker net select drag 这里的示例配
  • Grappa Graphviz dot-可视化问题与疑问

    我正在使用这个点代码进行测试 digraph G edge dir none p1 shape circle style filled label height 0 01 width 0 01 q1 shape circle style f
  • 重新转换 Java Instrumentation Agent 库中的本机方法

    我正在尝试编写一个通过 Attach api 动态加载的 Java 代理库 以重新转换某些方法 出现在某些线程的堆栈跟踪中的方法 以记录方法进入 退出 然后通过自定义导出方法入口 出口信息MBean 到目前为止 只要检测的方法不是本机的 我
  • 如何使用selenium获取带有javascript渲染源代码的html

    我在一个网页中运行查询 然后得到结果 url 如果我右键单击查看html源 我可以看到JS生成的html代码 如果我只是使用urllib python无法获取JS代码 所以我看到了一些使用硒的解决方案 这是我的代码 from seleniu
  • GAE self.request.cookies 返回一个空字典

    我正在尝试覆盖CheckIsAdmin方法存在于ApiCallHandler班级 所以我跟着this https stackoverflow com a 33652077 3297613回答 但我在打印时总是得到空字典self reques
  • Swift 中的自定义类集群

    这是一个比较常见的设计模式 https stackoverflow com a 17015041 743957 https stackoverflow com a 17015041 743957 它允许您从您的返回子类init calls
  • 从特定于语言环境的字符串获取 NSDecimalNumber?

    我有一些特定于区域设置的字符串 例如 0 01 或 0 01 我想将此字符串转换为 NSDecimalNumber 来自到目前为止我在互联网上看到的例子 http developer apple com documentation Coco
  • WP8.1 InvokeScript 错误

    我正在开发 Windows Phone 8 1 应用程序 我对 WebBrowser 类的 InvokeScript 方法有疑问 我的 XAML 中有这个 当我运行这段代码时 myWebBrowser Loaded object sende
  • 从 ServletContext 资源解析 XML 文档 [/WEB-INF/applicationContext.xml];

    我在控制台中遇到一些错误 我将在下面发布 我正在使用 eclipse 并清理了项目 刷新了目标 清理了 tomcat 服务器 因此追逐或任何此类性质的事情都不是问题 控制台错误 SEVERE Context initialization f
  • 从 C# 获取 Windows 应用程序的位置

    我需要一些帮助来尝试获取记事本窗口的位置 我很确定我需要使用GetWindowRect功能如下 但我不知道如何使用它 我已将以下内容放入 win 表单项目中 但是myRect X myRect Y等里面没有任何东西 我认为他们至少应该有我正
  • webrtc:mediaDevices.enumerateDevices() 返回空 deviceId

    我目前正在探索 webRTC 我想做的是获取所有媒体设备信息以及deviceId using navigator mediaDevices enumerateDevices 然后根据其种类属性将其分离出来 并允许用户选择针对特定种类使用哪种