InputDeviceInfo: getCapabilities() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

InputDeviceInfo 接口的 getCapabilities() 方法返回一个 MediaTrackCapabilities 对象,该对象描述了设备 MediaStream 的主要音频或视频轨道。

语法

js
getCapabilities()

参数

无。

返回值

一个 MediaTrackCapabilities 对象,它指定了用户代理支持的每个可约束属性的值或值范围。它要求返回与调用 getUserMedia({ deviceId: deviceInfo.deviceId }) 返回的 MediaStream 中该设备的(视频或音频)相同 kind 的第一个 MediaStreamTrack 上的 getCapabilities() 所返回的信息相同。

有关常用支持的属性及其类型的列表,请参阅 MediaStreamTrack.getCapabilities()

注意: 如果用户未授予访问输入设备的权限,则会返回一个空对象。

示例

在以下示例中,我们使用 mediaDevices.getUserMedia() 请求访问音频和视频设备的权限,因为要使用 getCapabilities(),我们需要访问设备的权限。

如果 device 是一个 InputDeviceInfo 对象,那么 getCapabilities() 将返回一个包含表示其功能的成员的对象。例如,视频流将不包含 noiseSuppression 等自动属性。

js
// Get permission to access audio or video devices
navigator.mediaDevices
  .getUserMedia({ audio: true, video: true })
  // Enumerate media devices
  .then(() => navigator.mediaDevices.enumerateDevices())
  .then((devices) => {
    devices.forEach((device) => {
      if (typeof device.getCapabilities === "function") {
        console.log("Capabilities:", device.getCapabilities()); // A MediaTrackCapabilities object.
      } else {
        console.log("Device does not support getCapabilities:", device);
      }
    });
  })
  .catch((mediaError) => {
    console.error("Error accessing media devices:", mediaError);
  });

规范

规范
媒体捕获和流
# dom-inputdeviceinfo-getcapabilities

浏览器兼容性

另见

  • MediaStreamTrack.getCapabilities(),它也返回一个 MediaTrackCapabilities 对象。