MediaDeviceInfo
MediaDeviceInfo 接口是 Media Capture and Streams API 的一部分,它包含描述单个媒体输入或输出设备的信息。
通过调用 navigator.mediaDevices.enumerateDevices() 获取的设备列表是 MediaDeviceInfo 对象的数组,每个对象代表一个媒体设备。
实例属性
MediaDeviceInfo.deviceId只读-
返回一个字符串,该字符串是表示设备并在会话之间持久存在的标识符。此标识符无法被其他应用程序猜测,并且对于调用应用程序的源是唯一的。当用户清除 Cookie 时,它会被重置(对于隐私浏览,会使用一个不同的标识符,该标识符不会在会话之间持久存在)。
MediaDeviceInfo.groupId只读-
返回一个字符串,该字符串是组标识符。如果两个设备属于同一个物理设备,则它们具有相同的组标识符——例如,一个带有内置摄像头和麦克风的显示器。
MediaDeviceInfo.kind只读-
返回一个枚举值,该值可以是
"videoinput"(视频输入)、"audioinput"(音频输入)或"audiooutput"(音频输出)。 MediaDeviceInfo.label只读-
返回一个描述该设备的字符串(例如“外部 USB 网络摄像头”)。
注意: 出于安全原因,label 字段始终为空,除非存在活动的媒体流或用户已授予媒体设备访问的持久权限。否则,设备标签集可能被用作 指纹识别 机制的一部分来识别用户。
实例方法
MediaDeviceInfo.toJSON()-
返回
MediaDeviceInfo对象的 JSON 表示形式。
示例
这是一个使用 enumerateDevices() 获取设备列表的示例。
js
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
console.log("enumerateDevices() not supported.");
} else {
// List cameras and microphones.
navigator.mediaDevices
.enumerateDevices()
.then((devices) => {
devices.forEach((device) => {
console.log(`${device.kind}: ${device.label} id = ${device.deviceId}`);
});
})
.catch((err) => {
console.log(`${err.name}: ${err.message}`);
});
}
这可能会产生
bash
videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
或者,如果一个或多个媒体流处于活动状态,或者已获得持久权限
bash
videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
规范
| 规范 |
|---|
| 媒体捕获和流 # device-info |
浏览器兼容性
加载中…