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

浏览器兼容性

另见