Media Source Extensions
{{Infobox technology standard
| title = MSE
| long_name = Media Source Extensions
| native_name = Media Source Extensions
| native_name_lang = en
| image =
| caption =
| status = Candidate Recommendation{{Cite tech report|url=https://www.w3.org/TR/2016/REC-media-source-20161117/|title=Media Source Extensions™|editor-last1=Wolenetz|editor-first1=Matthew|editor-last2=Smith|editor-first2=Jerry|editor-last3=Watson|editor-first3=Mark|editor-last4=Colwell|editor-first4=Aaron|editor-last5=Bateman|editor-first5=Adrian|website=W3C|via=W3C}}{{Cite web|url=https://www.w3.org/standards/history/media-source|title=Media Source Extensions™ Publication History - W3C|website=W3C|date=21 September 2022 }}
| year_started = {{Start date|2013}}{{Cite tech report|url=https://www.w3.org/TR/2013/WD-media-source-20130129/|title=Media Source Extensions|date=2013-01-29|access-date=2021-03-19|editor-last1=Colwell|editor-first1=Aaron|editor-last2=Bateman|editor-first2=Adrian|editor-last3=Watson|editor-first3=Mark|website=W3C|via=W3C}}
| first_published = {{Start date|2013|01|29}}
| version = Candidate Recommendation
| version_date = {{Start date|2016|11|17}}
| preview = Editor's draft
| preview_date = {{Start date|2021|04|21}}{{Cite web|url=https://w3c.github.io/media-source/|title=Media Source Extensions™|date=2021-04-21|access-date=2021-04-21|website=w3c.github.io|publisher=Media Working Group|author=Media Working Group|version=Editor's draft
|editor-first1=Matthew|editor-last1=Wolenetz
|editor-first2=Mark|editor-last2=Watson
|editor-first3=Jerry|editor-last3=Smith
|editor-first4=Aaron|editor-last4=Colwell
|editor-first5=Adrian|editor-last5=Bateman
}}
| organization = {{Plainlist|
}}
| committee = HTML Media Extensions Working Group
| editors = {{Plainlist|
- Matthew Wolenetz
- Mark Watson
{{Collapsible list|title=Former editors|
- Jerry Smith (until {{end date|2017|09}})
- Aaron Colwell (until {{end date|2015|04}})
- Adrian Bateman (until {{end date|2015|04}})
}}
| authors = HTML Media Extensions Working Group
| base_standards = HTML, Web IDL
| related_standards = Encrypted Media Extensions
| abbreviation = EME, media-source
| domain = HTML video, HTML audio
| license =
| website = {{Plainlist|
- Latest version: {{URL|https://www.w3.org/TR/media-source/}}
- Editor's draft: {{URL|https://w3c.github.io/media-source/}}
}}
}}
Media Source Extensions (MSE) is a W3C specification that allows JavaScript to send byte streams to media codecs within web browsers that support HTML video and audio.{{cite web|url=https://www.w3.org/TR/2016/REC-media-source-20161117//|title=Media Source Extensions W3C Recommendation |date= 17 November 2016|access-date=5 January 2021}} Among other possible uses, this allows the implementation of client-side prefetching and buffering code for streaming media entirely in JavaScript. It is compatible with, but should not be confused with, the Encrypted Media Extensions (EME) specification, and neither requires the use of the other, although many EME implementations are only capable of decrypting media data provided via MSE.{{Cite web|url=https://www.w3.org/TR/2017/REC-encrypted-media-20170918/|title=Encrypted Media Extensions |date= 18 September 2017|access-date=29 January 2020}}
Netflix announced experimental support in June 2014 for the use of MSE playback on the Safari browser on the OS X Yosemite beta release.{{cite web|url=http://techblog.netflix.com/2014/06/html5-video-in-safari-on-os-x-yosemite.html|title=HTML5 Video in Safari on OS X Yosemite |author=Anthony Park and Mark Watson | date=3 June 2013|publisher=Netflix}}
YouTube started using MSE in its HTML5 player in September 2013.
{{expand section|an explanation of how these affect video-blocking and autoplay blocking accessibility tools|date=May 2015}}
Browser support
The Media Source Extensions API is widely supported across all modern web browsers, with the only exception being iPhone-family devices (although it is supported on iPadOS).{{Cite web|title=Media Source Extensions|website=Can I use...|url=https://caniuse.com/mediasource|access-date=2021-07-30|quote=Fully supported only in iPadOS 13 and later}} Firefox 37 already had a subset of MSE API available for use with only YouTube in Firefox 37 on Windows Vista or later only,{{Cite web|author=Mozilla|date=2015-03-31|title=Firefox 37.0, See All New Features, Updates and Fixes|url=https://www.mozilla.org/en-US/firefox/37.0/releasenotes/|access-date=2021-04-24|website=Mozilla|version=37.0}} while Mac OS X version had in enabled starting version 38.{{Cite web|author=Mozilla|date=2015-05-12|title=Firefox 38.0, See All New Features, Updates and Fixes|url=https://www.mozilla.org/en-US/firefox/38.0/releasenotes/|access-date=2021-04-24|website=Mozilla|version=38.0}}
= Minor browsers =
Players
- [https://www.nexplayersdk.com/ NexPlayer] for HTML5 MSE and EME supporting HLS and DASH
- [https://castlabs.com/products/prestoplay-browser/ castLabs PRESTOplay] video player for HMTL5 MSE and EME supporting DASH and HLS
- [https://www.akamai.com/us/en/products/media-delivery/adaptive-media-player.jsp Akamai Media Player] as a contributor to the [http://dashif.org/members/ Dash Industry Forum] and DASH.js (DASH IF reference client). AMP includes Dash.js, HLS.js and advanced QUIC protocol playback from Akamai Edge Servers
- Shaka Player, an open source javascript player library for HTML5 MSE and EME video with DASH and HLS support{{Cite web|url=https://github.com/google/shaka-player|title=JavaScript player library / DASH & HLS client / MSE-EME player: google/shaka-player|date=March 24, 2019|via=GitHub}}{{Cite web|url=https://shaka-player-demo.appspot.com/demo/|title=Shaka Player Demo|website=shaka-player-demo.appspot.com}}
- The Video Player by Comcast Technology Solutions
- THEOplayer by OpenTelly: HLS and MPEG-DASH player for cross-platform HTML5 support without the need for Flash fallback{{Cite web|url=https://www.theoplayer.com/|title=THEOplayer – Universal Video Player|first=THEO Technologies|last=NV|website=www.theoplayer.com}}
- Viblast Player: HLS and MPEG-DASH player for HTML5 MSE and EME, with Flash fallback{{Cite web|url=http://viblast.com/player/demo-user-stream/|title=Viblast Player|website=viblast.com}}
- bitmovin's bitdash MPEG-DASH player for HTML5 MSE and EME, with Flash fallback{{Cite web|url=https://bitmovin.com/video-player/|title=HTML5 Player for Adaptive Streaming from Bitmovin|date=January 22, 2016|website=Bitmovin}}
- dash-js for HTML5 MSE{{Cite web|url=https://dash.itec.aau.at/dash-js/|title=DASH-JS | ITEC – Dynamic Adaptive Streaming over HTTP}}
- dash.js for HTML5 MSE and EME{{Cite web|url=https://github.com/Dash-Industry-Forum/dash.js|title=A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.: Dash-Industry-Forum/dash.js|date=March 23, 2019|via=GitHub}}
- rx-player for HTML5 MSE and EME (Live and On Demand){{Cite web|url=https://github.com/canalplus/rx-player|title=GitHub - canalplus/rx-player: Smooth/DASH HTML5 Video Player.|date=March 21, 2019|via=GitHub}}
- hls.js for HTML5 MSE{{Cite web|url=http://engineering.dailymotion.com/introducing-hls-js/|title=dailymotion – Medium|website=Medium}}{{Cite web|url=https://dailymotion.github.io/hls.js/demo/|title=hls.js demo page|access-date=2017-12-03|archive-url=https://web.archive.org/web/20151120210027/http://dailymotion.github.io/hls.js/demo/|archive-date=2015-11-20|url-status=dead}}
- hasplayer.js for HTML5 MSE and EME, supporting DASH, Smooth Streaming and HLS{{Cite web|url=https://github.com/Orange-OpenSource/hasplayer.js|title=Http Adaptive Streaming javascript player based on HTML5 premium extensions (MSE/EME): Orange-OpenSource/hasplayer.js|date=February 20, 2019|via=GitHub}}
- JW Player 7 and later for MPEG-DASH using HTML5 MSE and EME{{Cite web|url=https://support.jwplayer.com/customer/portal/articles/2020482-about-dash-streaming|title=JW Player Support|website=JW Player Support}}
- SLDP HTML5 Player supports SLDP via MSE playback{{Cite web|url=https://softvelum.com/player/web/|title=HTML5 player for SLDP|website=Softvelum}}
- Azure Media Player supports MSE, EME, DASH, HLS, Flash, and Silverlight. Streaming URLs are published in an
ism/manifest
{{cite web|url=https://ampdemo.azureedge.net/|title=Azure Media Player|year=2015|publisher=Microsoft|access-date=2016-06-14}} - Unreal HTML5 player uses MSE for low latency (sub-second) live playback of streams sent via WebSockets by Unreal Media Server{{Cite web|url=http://www.umediaserver.net/umediaserver/|title=Unreal Media Server|website=www.umediaserver.net}}
- [https://github.com/StormStreaming/stormplayer-js Storm Player] uses MSE as one of its delivery modes for ultra-low latency streaming via WebSockets by Storm Streaming Server{{Cite web|title=Storm Streaming Server|url=https://www.stormstreaming.com/live-streaming-server|access-date=2021-07-30|website=Storm Streaming|language=en}}