Windows系统下WebAPI屏幕共享返回的screen:0:0标识含义是什么
screen:0:0 标识含义说明 这个标识是Chromium内核浏览器(Chrome、Edge等)在Windows平台实现getDisplayMedia屏幕共享接口时的专属命名规则,整体结构为[源类型]:[唯一标识]:[预留位],各段含义如下:
- 第一段
screen:标记当前捕获的源类型为整台显示器,和window(应用窗口)、tab(浏览器标签页)两类共享源做区分 - 第二段的数字(你示例中的0、3):对应Windows系统底层给显示输出设备分配的唯一映射ID,和用户在系统显示设置里看到的1/2序号没有直接对应关系,所以会出现编号不连续的情况,只要不更换显示器的显卡接口、不重装系统,这个值不会变动
- 第三段的末尾固定为0,是预留字段,当前没有实际业务含义
对应具体显示器的方法
目前Web标准没有开放直接读取该标识和系统显示序号对应关系的API(出于用户隐私保护,禁止站点恶意扫描设备信息),你可以通过两种方式匹配:
- 本地调试场景:打开Windows系统显示设置,点击「识别」按钮,屏幕上会弹出对应显示器的序号,你手动共享对应屏幕后记录下返回的label值即可,映射关系长期有效
- 生产代码场景:有两个间接实现方案
- 读取获取到的视频流的分辨率,和你预先采集到的用户各显示器分辨率做匹配,比如主屏是38402160、副屏是19201080,即可直接对应
- 在用户完成屏幕共享选择后,弹出选项让用户主动选择当前共享的是第几号显示器,将选择结果和label值做绑定存储,下次用户访问时可直接匹配
补充说明
- 该label规则仅适用于Windows平台的Chromium内核浏览器,macOS、Linux、其他浏览器(火狐、Safari)的label命名逻辑完全不同,不要跨平台复用该规则
- 你当前的代码已经可以正确获取该标识,直接通过
stream.getVideoTracks()[0].label即可读取到对应值
内容的提问来源于stack exchange,提问作者deepak dash
相关产品推荐
相关产品推荐

