MediaDeviceInfo: groupId 属性
groupId 是 MediaDeviceInfo 接口的一个只读属性,它返回一个字符串,该字符串是一个组标识符。
如果两个设备属于同一个物理设备,则它们具有相同的组标识符;例如,一个同时带有内置摄像头和麦克风的显示器。
值
一个字符串,唯一标识了该设备所属的相关设备组。
示例
在此示例中,我们组合了一个列表,其中包含与给定设备属于同一组的设备。这可能用于生成一个用户界面,将相关设备聚集在一起以便展示,或者方便用户同时选择使用同一显示器上的内置摄像头和麦克风。
js
const getDeviceGroup = (mainDevInfo) => {
let devList = [];
navigator.mediaDevices.enumerateDevices().then((devices) => {
devices.forEach((device) => {
if (device.groupId === mainDevInfo.groupId) {
devList.push(device);
}
});
});
return devList;
};
getDeviceGroup() 函数以描述要为其构建组列表的设备的 MediaDeviceInfo 对象作为输入。函数首先将结果数组 devList 初始化为空数组。
然后调用 navigator.mediaDevices.enumerateDevices() 来获取所有媒体设备的列表。一旦 promise 解析,我们使用 forEach() 遍历列表。对于每个设备,如果其 groupId 与主设备的 groupId 匹配,我们就将 MediaDeviceInfo 对象推送到列表中。
最后,这个现在包含同一组中每个设备的 MediaDeviceInfo 对象的列表被返回给调用者。
可以通过比较两个对象的 deviceId 值,仅当设备 ID 不匹配时才将设备推送到结果列表中,从而轻松修改此设置,以便将传入的设备排除在返回的列表中,或者将其放在列表的顶部。
此示例版本将传入的设备放在结果列表的顶部,然后添加找到的其他组成员。
js
const getDeviceGroup = (mainDevInfo) => {
let devList = [mainDevInfo];
navigator.mediaDevices.enumerateDevices().then((devices) => {
devices.forEach((device) => {
if (
device.groupId === mainDevInfo.groupId &&
device.deviceId !== mainDevInfo.deviceId
) {
devList.push(device);
}
});
});
return devList;
};
规范
| 规范 |
|---|
| 媒体捕获和流 # dom-mediadeviceinfo-groupid |
浏览器兼容性
加载中…