Skip to content

Latest commit

 

History

History
75 lines (59 loc) · 2.03 KB

File metadata and controls

75 lines (59 loc) · 2.03 KB
title MediaSource.duration
slug Web/API/MediaSource/duration
page-type web-api-instance-property
tags
API
Audio
Experimental
MSE
Media Source Extensions
MediaSource
Property
Reference
Video
duration
browser-compat api.MediaSource.duration

{{APIRef("Media Source Extensions")}}{{SeeCompatTable}}

The duration property of the {{domxref("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 {{domxref("DOMException")}}
    • : Thrown if an attempt was made to set a duration value that was negative or NaN.
  • InvalidStateError {{domxref("DOMException")}}
    • : Thrown if {{domxref("MediaSource.readyState")}} is not equal to open, or one or more of the {{domxref("SourceBuffer")}} objects in {{domxref("MediaSource.sourceBuffers")}} are being updated (i.e. their {{domxref("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

{{Specifications}}

Browser compatibility

{{Compat}}

See also

  • {{domxref("SourceBuffer")}}
  • {{domxref("SourceBufferList")}}