MediaCapabilities: encodingInfo() method

The encodingInfo() method of the MediaCapabilities interface returns a promise that fulfills with the tested media configuration's capabilities for encoding media. This contains the three boolean properties supported, smooth, and powerefficient, which describe how compatible the device is with the type of media.

Syntax

js
encodingInfo(configuration)

Parameters

configuration

An object with a property type and either a video or audio property containing a configuration of the appropriate type:

type

The type of media being tested. This takes one of two values:

record

Represents a configuration for recording of media, e.g. using MediaRecorder.

webrtc

Represents a configuration meant to be transmitted over electronic means (e.g. using RTCPeerConnection). Note: Firefox uses transmission for this type, and webrtc does not work.

transmission Non-standard

The synonym of webrtc to be used in Firefox.

video

Configuration object for a video media source. This has the following properties:

contentType

String containing a valid video MIME type, and (optionally) a codecs parameter.

width

The width of the video.

height

The height of the video.

bitrate

The number of bits used to encode one second of the video file.

framerate

The number of frames making up one second of video playback.

audio

Configuration object for an audio media source. This has the following properties:

contentType

String containing a valid audio MIME type, and (optionally) a codecs parameter.

channels

The number of channels used by the audio track.

bitrate

The number of bits used to encode one second of the audio file.

samplerate

The number of audio samples making up one second of the audio file.

Return value

A Promise fulfilling with an object containing three Boolean attributes:

supported

true if the media content can be encoded at all. Otherwise, it is false.

smooth

true if playback of the media will be smooth (of high quality). Otherwise it is false.

powerEfficient

true if playback of the media will be power efficient. Otherwise, it is false.

Browsers will report a supported media configuration as smooth and powerEfficient until stats on this device have been recorded. All supported audio codecs are reported to be power efficient.

Exceptions

TypeError

Thrown if the configuration passed to the encodingInfo() method is invalid, which may be for any of the following reasons:

  • the type is not video or audio,
  • the contentType is not a valid codec MIME type,
  • there is some other error in the media configuration passed to the method, including omitting any of the configuration elements.

Examples

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.`);
});

Specifications

Specification
Media Capabilities
# ref-for-dom-mediacapabilities-encodinginfo

Browser compatibility

BCD tables only load in the browser

See also