Media Capabilities API

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

* 此特性的某些部分可能存在不同級別的支援。

注意:此功能在 Web Workers 中可用。

媒體能力 API 允許開發者確定裝置的解碼和編碼能力,公開媒體是否受支援以及播放是否應流暢且節能等資訊,並提供有關播放的即時反饋,以更好地實現自適應流,並訪問顯示屬性資訊。

概念

影片和音訊編碼器種類繁多。不同的瀏覽器支援不同的媒體型別,並且新的媒體型別總是在開發中。藉助媒體能力 API,開發者可以確保每位使用者都能為其瀏覽器、裝置和作業系統能力獲得最佳的位元率和儲存節省。

裝置使用硬體解碼還是軟體解碼會影響影片解碼的流暢性和節能性,以及播放的效率。媒體能力 API 能夠確定支援哪些編碼器,以及媒體檔案的流暢性和節能性。

媒體能力 API 提供了比 MediaRecorder.isTypeSupported()HTMLMediaElement.canPlayType() 更強大的功能,這些功能僅解決一般的瀏覽器支援問題,而不涉及效能。該 API 還提供了訪問顯示屬性資訊的功能,例如支援的顏色 色域、動態範圍能力以及播放的即時反饋。

要測試編碼和解碼影片或音訊內容的支撐性、流暢性和能效,可以使用 MediaCapabilities 介面的 encodingInfo()decodingInfo() 方法。

媒體能力資訊使網站能夠啟用自適應流,以根據使用者實際感知到的質量來改變內容的質量,並即時響應 CPU/GPU 使用率的峰值。

介面

MediaCapabilities

根據編碼器、配置、解析度和位元率,提供有關裝置、系統和瀏覽器解碼能力的資訊。這些資訊可用於向用戶提供最佳媒體流,並確定播放是否應流暢且節能。

其他介面的擴充套件

一個 MediaCapabilities 物件,可以公開給定媒體格式和輸出能力的解碼和編碼能力資訊。

WorkerNavigator.mediaCapabilities 只讀

一個 MediaCapabilities 物件,可以公開給定媒體格式和輸出能力的解碼和編碼能力資訊。

示例

檢測音訊檔案支援和預期效能

此示例定義了一個音訊配置,然後檢查使用者代理是否支援解碼該媒體配置,以及它在流暢性和能效方面是否表現良好。

js
if ("mediaCapabilities" in navigator) {
  const audioFileConfiguration = {
    type: "file",
    audio: {
      contentType: "audio/mp3",
      channels: 2,
      bitrate: 132700,
      samplerate: 5200,
    },
  };

  navigator.mediaCapabilities
    .decodingInfo(audioFileConfiguration)
    .then((result) => {
      console.log(
        `This configuration is ${result.supported ? "" : "not "}supported,`,
      );
      console.log(`${result.smooth ? "" : "not "}smooth, and`);
      console.log(`${result.powerEfficient ? "" : "not "}power efficient.`);
    })
    .catch(() => {
      console.log(`decodingInfo error: ${contentType}`);
    });
}

規範

規範
Media Capabilities
# media-capabilities-interface

瀏覽器相容性

另見