媒体功能 API

**媒体功能 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}`);
    });
}

规范

规范
媒体功能
# 媒体功能接口

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅