Note: This feature is available in Web Workers.
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.
encodingInfo(configuration)configurationAn object with a property type and either a video or audio property containing a configuration of the appropriate type:
typeThe type of media being tested. This takes one of two values:
recordRepresents a configuration for recording of media, e.g., using MediaRecorder.
webrtcRepresents a configuration meant to be transmitted over electronic means (e.g., using RTCPeerConnection).
transmission A synonym of webrtc.
videoConfiguration object for a video media source. This has the following properties:
contentTypeString containing a valid video MIME type, and (optionally) a codecs parameter.
widthThe width of the video.
heightThe height of the video.
bitrateThe number of bits used to encode one second of the video file.
framerateThe number of frames making up one second of video playback.
audioConfiguration object for an audio media source. This has the following properties:
contentTypeString containing a valid audio MIME type, and (optionally) a codecs parameter.
channelsThe number of channels used by the audio track.
bitrateThe number of bits used to encode one second of the audio file.
samplerateThe number of audio samples making up one second of the audio file.
A Promise fulfilling with an object containing three Boolean attributes:
supportedtrue if the media content can be encoded at all. Otherwise, it is false.
smoothtrue if playback of the media will be smooth (of high quality). Otherwise it is false.
powerEfficienttrue 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.
TypeErrorThrown if the configuration passed to the encodingInfo() method is invalid, which may be for any of the following reasons:
contentType is not a valid codec MIME type,configuration elements.// Create media configuration to be tested
const mediaConfig = {
type: "record",
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.`);
});