navigator.mediaDevices.enumerateDevices() 返回空标签

Hos*_*ani 14 javascript google-chrome webrtc

背景

我试图在其上实现此功能的机器包含多个摄像头,我想在代码中选择摄像头。(所有机器都有相同的硬件)

问题

我试图在请求视频访问之前实现自定义功能,我手动设置应该使用哪个设备来防止选择错误的相机,但是当我使用

await navigator.mediaDevices.enumerateDevices()

我得到可用摄像机设备的空标签。

小智 27

如果没有授予访问媒体设备的权限, navigator.mediaDevices.enumerateDevices() 将返回一个空的标签属性值。在 getUserMedia 之后尝试使用它。

(async () => {   
  await navigator.mediaDevices.getUserMedia({audio: true, video: true});   
  let devices = await navigator.mediaDevices.enumerateDevices();   
  console.log(devices); 
})();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,枚举调用在本地开发计算机上不起作用。它们必须部署到您的网站才能正常运行。 (3认同)
  • 谢谢,它对我有帮助。 (3认同)
  • 如果需要访问相机,则必须显示它会请求许可,但在授予许可之前会显示标签。我很惊讶它是如何运作的 (2认同)