MediaSource.duration

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The duration property of the MediaSource interface gets and sets the duration of the current media being presented.

Value

A double. A value in seconds is expected.

Exceptions

The following exceptions may be thrown when setting a new value for this property.

InvalidAccessError DOMException

Thrown if an attempt was made to set a duration value that was negative or NaN.

InvalidStateError DOMException

Thrown if MediaSource.readyState is not equal to open, or one or more of the SourceBuffer objects in MediaSource.sourceBuffers are being updated (i.e. their SourceBuffer.updating property is true.)

Examples

The following snippet is based on a simple example written by Nick Desaulniers (view the full demo live, or download the source for further investigation.)

function sourceOpen (_) {
  //console.log(this.readyState); // open
  const mediaSource = this;
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, function (buf) {
    sourceBuffer.addEventListener('updateend', function (_) {
      mediaSource.endOfStream();
      mediaSource.duration = 120;
      video.play();
      //console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
};

...

Specifications

Specification
Media Source Extensions™
# dom-mediasource-duration

Browser compatibility

BCD tables only load in the browser

See also