MediaSource: duration 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

注意:此功能在 专用 Web Workers 中可用。

MediaSource 接口的 duration 属性用于获取和设置当前正在播放的媒体的时长。

一个双精度浮点数。期望的值单位为秒。

异常

设置此属性的新值时,可能会抛出以下异常。

InvalidAccessError DOMException

如果尝试设置一个负值或 NaN 时长值,则会抛出此异常。

InvalidStateError DOMException

如果 MediaSource.readyState 不等于 open,或者 MediaSource.sourceBuffers 中的一个或多个 SourceBuffer 对象正在被更新(即,它们的 SourceBuffer.updating 属性为 true),则会抛出此异常。

示例

以下代码段基于 Nick Desaulniers 的示例 (在线查看完整演示,或下载源代码以供进一步研究)。函数 getMediaSource()(此处未定义)返回一个 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);
  });
}

// …

规范

规范
Media Source Extensions™
# dom-mediasource-duration

浏览器兼容性

另见