MediaSource.duration

io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/zh-tw/web/api/media_source_extensions_api/index.md)

實驗性質: 這是一個實驗中的功能
此功能在某些瀏覽器尚在開發中,請參考兼容表格以得到不同瀏覽器用的前輟。

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

語法

js
mediaSource.duration = 5.5; // 5.5 seconds

var myDuration = mediaSource.duration;

回傳值

單位為秒的 double 型別。

錯誤

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

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

範例

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

js
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);
  });
};

...

規格

Specification
Media Source Extensions™
# dom-mediasource-duration

相容性表格

BCD tables only load in the browser

相關資料