Encrypted Media Extensions API

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2019.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The Encrypted Media Extensions API provides interfaces for controlling the playback of content which is subject to a digital restrictions management scheme.

Access to this API is provided through Navigator.requestMediaKeySystemAccess().

Interfaces

MediaEncryptedEvent

Represents a specific encrypted event thrown when a HTMLMediaElement encounters some initialization data.

MediaKeyMessageEvent

Contains the content and related data when the content decryption module (CDM) generates a message for the session.

MediaKeys

Represents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback.

MediaKeySession

Represents a context for message exchange with a content decryption module (CDM).

MediaKeyStatusMap

A read-only map of media key statuses by key IDs.

MediaKeySystemAccess

Provides access to a key system for decryption and/or a content protection provider.

Extensions to other interfaces

The Encrypted Media Extensions API extends the following APIs, adding the listed features.

HTMLMediaElement

HTMLMediaElement.mediaKeys Read only

Provides a MediaKeys object that represents the set of keys that the element can use for decryption of media data during playback.

HTMLMediaElement.setMediaKeys()

Sets the MediaKeys that will be used to decrypt media during playback.

encrypted event

Event that is fired on a HTMLMediaElement when initialization data is encountered in the media, indicating that it is encrypted.

Returns a Promise that fulfils to a MediaKeySystemAccess object that can be used to access a particular media key system, which can in turn be used to create keys for decrypting a media stream.

Specifications

Specification
Encrypted Media Extensions
# navigator-extension-requestmediakeysystemaccess

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
requestMediaKeySystemAccess

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.