SourceBuffer: mode 属性

可用性有限

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

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

SourceBuffer 接口的 mode 属性用于控制媒体段是都可以按任意顺序附加到 SourceBuffer,还是必须按严格的顺序附加。

可用的两个值是:

  • segments:媒体段的时间戳决定了播放段的顺序。段可以按任意顺序附加到 SourceBuffer
  • sequence:段附加到 SourceBuffer 的顺序决定了它们的播放顺序。段时间戳是自动生成的,以反映此顺序。

mode 值在创建 SourceBuffer 时通过 MediaSource.addSourceBuffer() 初始化。如果媒体段已存在时间戳,则值将设置为 segments;如果不存在,则值将设置为 sequence

如果您尝试在初始值为 sequence 的情况下将 mode 属性值设置为 segments,则会抛出异常。在 sequence 模式下必须保持现有的段顺序。但是,您可以将值从 segments 更改为 sequence。这仅仅意味着播放顺序将被固定,并且会生成新的时间戳来反映这一点。

SourceBuffer 处理 appendBuffer()remove() 调用期间,此属性无法更改。

字符串。

异常

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

InvalidAccessError DOMException

当尝试将值设置为 segments 而初始值为 sequence 时抛出。

InvalidStateError DOMException

SourceBuffer 对象正在更新(即,其 SourceBuffer.updating 属性当前为 true),附加到此 SourceBuffer 的最后一个媒体段不完整,或者此 SourceBuffer 已从 MediaSource 中移除时抛出。

示例

此代码片段会将 sourceBuffer 的模式设置为 'sequence'(如果当前设置为 'segments'),从而将播放顺序设置为附加媒体段的顺序。

js
const curMode = sourceBuffer.mode;
if (curMode === "segments") {
  sourceBuffer.mode = "sequence";
}

规范

规范
Media Source Extensions™
# dom-sourcebuffer-mode

浏览器兼容性

另见