MediaSource.readyState

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格

**readyState**是 MediaSource 接口的一个只读属性。它返回一个集合表明当前 MediaSource 的状态。它有三种可能的返回值:

  • closed:当前源并未附着到一个 media 元素上。
  • open:当前源已附着到一个 media 元素并准备好接收 SourceBuffer 对象。
  • ended:当前源已附着到一个 media 元素,但流已被 MediaSource.endOfStream() 结束。

语法

js
var myReadyState = mediaSource.readyState;

一个 DOMString

示例

以下片段基于 Nick Desaulniers 编写的一个简单示例(查看完整的在线演示,或者下载源代码进行进一步研究)。

js
if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
  var mediaSource = new MediaSource();
  //console.log(mediaSource.readyState); // closed
  video.src = URL.createObjectURL(mediaSource);
  mediaSource.addEventListener("sourceopen", sourceOpen);
} else {
  console.error("Unsupported MIME type or codec: ", mimeCodec);
}

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();
      video.play();
      //console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
}

规范

Specification
Media Source Extensions™
# dom-mediasource-readystate

浏览器兼容性

BCD tables only load in the browser

参见