This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The MediaSession
interface of the Media Session API allows a web page to provide custom behaviors for standard media playback interactions, and to report metadata that can be sent by the user agent to the device or operating system for presentation in standardized user interface elements.
For example, a smartphone might have a standard panel in its lock screen that provides controls for media. A browser on that device might deliver the metadata provided by calling MediaSession
to the device in order to be controllable using the global user interface.
Properties
metadata
- Returns an instance of
MediaMetadata
which contains rich media metadata, for display in a platform UI. playbackState
- Indicates whether the current media session is playing. Valid values are
none
,paused
, orplaying
.
Methods
setActionHandler()
- Sets an event handler for a media session action, such as play or pause. See the method page for a full list.
setPositionState()
- Sets the current playback position and speed of the media currently being presented.
Examples
The following example creates a new media session and assigns action handlers to it:
if ('mediaSession' in navigator){ navigator.mediaSession.metadata = new MediaMetadata({ title: "Podcast Episode Title", artist: "Podcast Host", album: "Podcast Name", artwork: [{src: "podcast.jpg"}] }); navigator.mediaSession.setActionHandler('play', function() {}); navigator.mediaSession.setActionHandler('pause', function() {}); navigator.mediaSession.setActionHandler('seekbackward', function() {}); navigator.mediaSession.setActionHandler('seekforward', function() {}); navigator.mediaSession.setActionHandler('previoustrack', function() {}); navigator.mediaSession.setActionHandler('nexttrack', function() {}); }
The following example sets up event handlers for pausing and playing:
var audio = document.querySelector("#player"); audio.src = "song.mp3"; navigator.mediaSession.setActionHandler('play', play); navigator.mediaSession.setActionHandler('pause', pause); function play() { audio.play(); navigator.mediaSession.playbackState = "playing"; } function pause() { audio.pause(); navigator.mediaSession.playbackState = "paused"; }
Specifications
Specification | Status | Comment |
---|---|---|
Media Session Standard The definition of 'MediaSession' in that specification. |
Draft | Initial definition. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaSession | Chrome Full support 73 | Edge Full support ≤79 | Firefox
Full support
71
| IE No support No | Opera Full support Yes | Safari ? | WebView Android No support No | Chrome Android Full support 57 | Firefox Android No support No | Opera Android No support No | Safari iOS ? | Samsung Internet Android Full support 7.0 |
metadata | Chrome Full support 73 | Edge Full support ≤79 | Firefox
Full support
71
| IE No support No | Opera Full support Yes | Safari ? | WebView Android No support No | Chrome Android Full support 57 | Firefox Android No support No | Opera Android No support No | Safari iOS ? | Samsung Internet Android Full support 7.0 |
playbackState | Chrome Full support 73 | Edge Full support ≤79 | Firefox No support No | IE No support No | Opera Full support Yes | Safari ? | WebView Android No support No | Chrome Android Full support 57 | Firefox Android No support No | Opera Android No support No | Safari iOS ? | Samsung Internet Android Full support 7.0 |
setActionHandler() | Chrome Full support 73 | Edge Full support ≤79 | Firefox
Full support
71
| IE No support No | Opera Full support Yes | Safari ? | WebView Android No support No | Chrome Android Full support 57 | Firefox Android No support No | Opera Android No support No | Safari iOS ? | Samsung Internet Android Full support 7.0 |
setPositionState() | Chrome Full support 73 | Edge Full support ≤79 | Firefox No support No | IE No support No | Opera Full support Yes | Safari ? | WebView Android No support No | Chrome Android Full support 57 | Firefox Android No support No | Opera Android No support No | Safari iOS ? | Samsung Internet Android Full support 7.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- User must explicitly enable this feature.
- User must explicitly enable this feature.