MediaCapabilities: encodingInfo() method
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Please take two minutes to fill out our short survey.
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.
Syntax
encodingInfo(configuration)
Parameters
configuration
-
An object with a property
type
and either avideo
oraudio
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 usestransmission
for this type, andwebrtc
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 isfalse
. smooth
-
true
if playback of the media will be smooth (of high quality). Otherwise it isfalse
. powerEfficient
-
true
if playback of the media will be power efficient. Otherwise, it isfalse
.
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 theencodingInfo()
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
//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 |