The duration
property of the MediaSource
interface gets and sets the duration of the current media being presented.
The duration
property of the MediaSource
interface gets and sets the duration of the current media being presented.
A double. A value in seconds is expected.
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
.)
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). The function getMediaSource()
, which is not defined here, returns a MediaSource
.
js
const mediaSource = getMediaSource(); function sourceOpen() { console.log(this.readyState); // open const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec); fetchAB(assetURL, (buf) => { sourceBuffer.addEventListener("updateend", () => { mediaSource.endOfStream(); mediaSource.duration = 120; video.play(); console.log(mediaSource.readyState); // ended }); sourceBuffer.appendBuffer(buf); }); } // …
Specification |
---|
Media Source Extensions™ # dom-mediasource-duration |
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
duration |
23 | 12 | 42 | 11Only works on Windows 8+. |
15 | 8 | 4.4.3 | 25 | 41 | 14 | 13Exposed in Mobile Safari on iPad but not on iPhone. |
1.5 |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/duration