MediaCapabilities: encodingInfo() 方法

Baseline 已广泛支持

此功能已经非常成熟,可在多种设备和浏览器版本上使用。自 2022 年 4 月以来,它已在各大浏览器中得到支持。

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

MediaCapabilities 接口的 encodingInfo() 方法会返回一个 Promise,该 Promise 会解析为测试的媒体配置的编码媒体能力。这包含三个布尔属性 supportedsmoothpowerefficient,它们描述了设备与该媒体类型的兼容程度。

语法

js
encodingInfo(configuration)

参数

configuration

一个包含 type 属性以及 videoaudio 属性(包含相应类型的配置)的对象。

type

正在测试的媒体类型。这有两个可能的值:

record

表示用于录制媒体的配置,例如使用 MediaRecorder

webrtc

表示用于通过电子方式传输(例如,使用 RTCPeerConnection)的配置。注意: Firefox 在此类型中使用 transmission,而 webrtc 不起作用。

transmission 非标准

Firefox 中使用的 webrtc 的同义词。

video

视频媒体源的配置对象。它具有以下属性:

contentType

一个包含有效的视频 MIME 类型以及(可选的)codecs 参数的字符串。

width

视频的宽度。

height

视频的高度。

bitrate

用于编码视频文件每秒的比特数。

framerate

构成视频播放每秒的帧数。

audio

音频媒体源的配置对象。它具有以下属性:

contentType

一个包含有效的音频 MIME 类型以及(可选的)codecs 参数的字符串。

channels

音频轨道使用的声道数。

bitrate

用于编码音频文件每秒的比特数。

samplerate

构成音频文件每秒的音频采样数。

返回值

一个 Promise,它会解析为一个包含三个布尔属性的对象。

supported

如果媒体内容根本无法编码,则为 true。否则为 false

平滑

如果媒体播放将是流畅的(高质量),则为 true。否则为 false

powerEfficient

如果媒体播放将是节能的,则为 true。否则为 false

浏览器将报告支持的媒体配置为 smoothpowerEfficient,直到设备上的统计数据被记录为止。所有支持的音频编解码器都被报告为节能。

异常

TypeError

当传递给 encodingInfo() 方法的 configuration 无效时会抛出,原因可能包括以下任何一项:

  • 类型不是 video 或 audio,
  • contentType 不是有效的编解码器 MIME 类型,
  • 传递给方法的媒体配置中存在其他错误,包括省略了任何 configuration 元素。

示例

js
// Create media configuration to be tested
const mediaConfig = {
  type: "record", // or 'transmission'
  video: {
    contentType: "video/webm;codecs=vp8.0", // valid content type
    width: 1920, // width of the video
    height: 1080, // height of the video
    bitrate: 120000, // number of bits used to encode 1s of video
    framerate: 48, // number of frames making up that 1s.
  },
};

// check support and performance
navigator.mediaCapabilities.encodingInfo(mediaConfig).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.`);
});

规范

规范
Media Capabilities
# dom-mediacapabilities-encodinginfo

浏览器兼容性

另见