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 物件。