--- title: MediaSource.duration slug: Web/API/MediaSource/duration translation_of: Web/API/MediaSource/duration ---
{{APIRef("Media Source Extensions")}}{{SeeCompatTable}}

{{domxref("MediaSource")}} 介面的 duration 屬性用來取得以及設置正被表示的媒體時間長度。

語法

mediaSource.duration = 5.5; // 5.5 seconds

var myDuration = mediaSource.duration;

回傳值

單位為秒的 double 型別。

錯誤

當設置此屬性一個新的值時以下錯誤可能發生。

錯誤 解釋
InvalidAccessError 嘗試設置的時間長度是負值,或者 NaN
InvalidStateError {{domxref("MediaSource.readyState")}} 不是 open,或者 {{domxref("MediaSource.sourceBuffers")}} 中一個或多個以上的 {{domxref("SourceBuffer")}} 物件正在被更新(例如:他們的 {{domxref("SourceBuffer.updating")}} 屬性為 true。)

範例

以下的片段基於 Nick Desaulniers 所編纂的簡單範例(觀看實際演示,或者下載原始碼以利更進一步研究。)

function sourceOpen (_) {
  //console.log(this.readyState); // open
  var mediaSource = this;
  var 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);
  });
};

...

規格

規格 狀態 注釋
{{SpecName('Media Source Extensions', '#widl-MediaSource-duration', 'duration')}} {{Spec2('Media Source Extensions')}} Initial definition.

相容性表格

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23 {{CompatVersionUnknown}} {{CompatGeckoDesktop("25.0")}}[1]
{{CompatGeckoDesktop("42.0")}}
11[2] 15 8
Feature Android Edge Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support 4.4.4 {{CompatVersionUnknown}}

{{CompatNo}}

{{CompatNo}} 11 30 {{CompatNo}}

[1] 在切換 about:config 偏好設定 media.mediasource.enabledtrue時可以使用。此外,支援只限於白名單內的網站,如:YouTube, Netflix, 以及其他熱門的串流網站。白名單已經被移除且 Media Source Extensions 在 42+ 對所有網站已預設為啟用。

[2] 只在 Windows 8+ 上有效。

相關資料