MediaDeviceInfo

基线 广泛可用

此功能已十分成熟,可在多种设备和浏览器版本上运行。自 2017 年 9 月.

报告反馈

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在部分或所有 支持的浏览器 中可用。

MediaDeviceInfo媒体捕获和流 API 的一个接口,它包含描述单个媒体输入或输出设备的信息。

实例属性

通过调用 navigator.mediaDevices.enumerateDevices() 获得的设备列表是一个 MediaDeviceInfo 对象数组,每个对象对应一个媒体设备。

MediaDeviceInfo.deviceId 只读

返回一个字符串,它是一个表示设备的标识符,在会话之间保持不变。它对其他应用程序不可猜测,并且对调用应用程序的来源是唯一的。当用户清除 cookie 时(对于私人浏览,使用一个在会话之间不保持不变的不同标识符),它将重置。

MediaDeviceInfo.groupId 只读

返回一个字符串,它是一个组标识符。如果两个设备属于同一个物理设备(例如,带有内置摄像头和麦克风的显示器),它们将具有相同的组标识符。

MediaDeviceInfo.kind 只读

返回一个枚举值,可以是 "videoinput""audioinput""audiooutput"

MediaDeviceInfo.label 只读

返回一个字符串,描述此设备(例如,“外部 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

另请参见