MediaDeviceInfo
基线 广泛可用
此功能已十分成熟,可在多种设备和浏览器版本上运行。自 2017 年 9 月.
报告反馈
安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在部分或所有 支持的浏览器 中可用。
MediaDeviceInfo
是 媒体捕获和流 API 的一个接口,它包含描述单个媒体输入或输出设备的信息。
实例属性
- 通过调用
navigator.mediaDevices.enumerateDevices()
获得的设备列表是一个MediaDeviceInfo
对象数组,每个对象对应一个媒体设备。 - 返回一个字符串,它是一个表示设备的标识符,在会话之间保持不变。它对其他应用程序不可猜测,并且对调用应用程序的来源是唯一的。当用户清除 cookie 时(对于私人浏览,使用一个在会话之间不保持不变的不同标识符),它将重置。
- 返回一个字符串,它是一个组标识符。如果两个设备属于同一个物理设备(例如,带有内置摄像头和麦克风的显示器),它们将具有相同的组标识符。
- 返回一个枚举值,可以是
"videoinput"
、"audioinput"
或"audiooutput"
。
返回一个字符串,描述此设备(例如,“外部 USB 摄像头”)。
实例方法
示例
返回 MediaDeviceInfo
对象的 JSON 表示形式。
以下是一个使用
enumerateDevices()
获取设备列表的示例。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}`);
});
}
js
这可能会生成
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