MediaCapabilities: encodingInfo() method
The MediaCapabilities.encodingInfo()
method, part of the MediaCapabilities
interface of the Media Capabilities API, returns a promise with the tested media configuration's capabilities information.
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 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 decoded 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
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