Esta es una tecnología experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producción.

El MediaSource interfaz representa un recurso de media en datos por un HTMLMediaElement objeto. Un MediaSource objeto puede ser atribuido a un HTMLMediaElement para ser reproducido por el usuario.


MediaSource() (en-US)
construye y retorna un MediaSource objeto sin asociar un recurso con buffers.


Inherits properties from its parent interface, EventTarget.

MediaSource.sourceBuffers (en-US) Read only
Returns a SourceBufferList (en-US) object containing the list of SourceBuffer (en-US) objects associated with this MediaSource.
MediaSource.activeSourceBuffers (en-US) Read only
Returns a SourceBufferList (en-US) object containing a subset of the SourceBuffer (en-US) objects contained within SourceBuffers — the list of objects providing the selected video track,  enabled audio tracks, and shown/hidden text tracks.
MediaSource.readyState (en-US) Read only
Returns an enum representing the state of the current MediaSource, whether it is not currently attached to a media element (closed), attached and ready to receive SourceBuffer (en-US) objects (open), or attached but the stream has been ended via MediaSource.endOfStream() (en-US) (ended.)
MediaSource.duration (en-US)
Gets and sets the duration of the current media being presented.


Inherits properties from its parent interface, EventTarget.

MediaSource.addSourceBuffer() (en-US)
Creates a new SourceBuffer (en-US) of the given MIME type and adds it to the MediaSource's SourceBuffers list.
MediaSource.removeSourceBuffer() (en-US)
Removes the given SourceBuffer (en-US) from the SourceBuffers list associated with this MediaSource object.
MediaSource.endOfStream() (en-US)
Signals the end of the stream.

Static methods

MediaSource.isTypeSupported() (en-US)
Returns a Boolean (en-US) value indicating if the given MIME type is supported by the current user agent — this is, if it can successfully create SourceBuffer (en-US) objects for that MIME type.


The following simple example loads a video chunk by chunk as fast as possible, playing it as soon as it can. This example was written by Nick Desaulniers and can be viewed live here (you can also download the source for further investigation.)

var video = document.querySelector('video');

var assetURL = 'frag_bunny.mp4';
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';

if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
  var mediaSource = new MediaSource;
  //console.log(mediaSource.readyState); // closed
  video.src = URL.createObjectURL(mediaSource);
  mediaSource.addEventListener('sourceopen', sourceOpen);
} else {
  console.error('Unsupported MIME type or codec: ', mimeCodec);

function sourceOpen (_) {
  //console.log(this.readyState); // open
  var mediaSource = this;
  var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, function (buf) {
    sourceBuffer.addEventListener('updateend', function (_) {
      //console.log(mediaSource.readyState); // ended

function fetchAB (url, cb) {
  var xhr = new XMLHttpRequest;'get', url);
  xhr.responseType = 'arraybuffer';
  xhr.onload = function () {


Specification Status Comment
Media Source Extensions
La definición de 'MediaSource' en esta especificación.
Recommendation Initial definition.

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23 25.0 (25.0)[1]
42.0 (42.0)
11[2] 15 8
Feature Android Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support 4.4.4

Sin soporte

Sin soporte 11 30 Sin soporte

[1] Available after switching the about:config preference media.mediasource.enabled to true. In addition, support was limited to a whitelist of sites, for example YouTube, Netflix, and other popular streaming sites. The whitelist was removed and Media Source Extensions was enabled by default in 42+ for all sites.

[2] Only works on Windows 8+.

See also