我在Chrome 浏览器中使用Google meet进行在线视频会议。在 Google meet 中,我可以在视频设备中选择我的网络摄像头。我可以选择任何真正的硬件或虚拟网络摄像头,而且效果很好。
我确信 Chrome 会检测到所有真实或虚拟的网络摄像头看到的内容chrome://media-internals/
但MediaDevices.enumerateDevices()
只显示真正的硬件网络摄像头,而不显示虚拟网络摄像头。
<!DOCTYPE html>
<html>
<body>
<script>
(async () => {
await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
let devices = await navigator.mediaDevices.enumerateDevices();
console.log(devices);
})();
</script>
</body>
</html>
这是 devtools 中控制台的输出:
[
{
"deviceId": "",
"kind": "audioinput",
"label": "",
"groupId": "a71e32bec65bc4788683c156cfbc3c005bce4535b980209e4a455973bd93f36a"
},
{
"deviceId": "",
"kind": "videoinput",
"label": "",
"groupId": "03e0a9c9e71757f81bef3f3a74c4a56785b2d3d103a7de883101e509c233977f"
},
{
"deviceId": "",
"kind": "audiooutput",
"label": "",
"groupId": "a71e32bec65bc4788683c156cfbc3c005bce4535b980209e4a455973bd93f36a"
}
]
为什么 Google meet 和其他网站都显示所有摄像头,包括虚拟摄像头,为什么MediaDevices.enumerateDevices()
不显示虚拟摄像头?