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().
MediaEncryptedEventRepresents a specific encrypted event thrown when a HTMLMediaElement encounters some initialization data.
MediaKeyMessageEventContains the content and related data when the content decryption module (CDM) generates a message for the session.
MediaKeysRepresents a set of keys that an associated HTMLMediaElement can use for decryption of media data during playback.
MediaKeySessionRepresents a context for message exchange with a content decryption module (CDM).
MediaKeyStatusMapA read-only map of media key statuses by key IDs.
MediaKeySystemAccessProvides access to a key system for decryption and/or a content protection provider.
The Encrypted Media Extensions API extends the following APIs, adding the listed features.
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 eventEvent 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.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
Encrypted_Media_Extensions_API |
42["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until Chrome 58."] |
13 | 38["Starting in Firefox 55, if neitheraudioCapabilities nor videoCapabilities is specified in supportedConfigurations, a warning is output to the web console.", "In addition, starting in Firefox 55, if in supportedConfigurations, either audioCapabilities's or videoCapabilities's contentType value doesn't specify a \"codecs\" substring to define allowed codecs within the media wrapper, a warning is output to the web console. See note below table for example and correction.", "In the future, if neither audioCapabilities nor videoCapabilities is specified in the supportedConfigurations, a NotSupported exception will be thrown."] |
29["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until Opera 45."] |
12.1 | 42["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until Chrome Android 58."] |
38["Starting in Firefox for Android 55, if neitheraudioCapabilities nor videoCapabilities is specified in supportedConfigurations, a warning is output to the web console.", "In addition, starting in Firefox for Android 55, if in supportedConfigurations, either audioCapabilities's or videoCapabilities's contentType value doesn't specify a \"codecs\" substring to define allowed codecs within the media wrapper, a warning is output to the web console. See note below table for example and correction.", "In the future, if neither audioCapabilities nor videoCapabilities is specified in the supportedConfigurations, a NotSupported exception will be thrown."] |
29["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until Opera 45."] |
12.2 | 4.0["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until Samsung Internet 7.0."] |
43["The spec requires that the passedsupportedConfigurations option contain at least one of audioCapabilities or videoCapabilities, and that said parameters include a codec string.", "The function does not exist in insecure contexts. This was not enforced until version 58."] |
12.2 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API