SourceBuffer: mode 属性

mode 属性 SourceBuffer 接口控制是否可以以任意顺序或严格顺序将媒体片段追加到 SourceBuffer

两个可用值是

  • segments: 媒体片段时间戳决定片段播放的顺序。 可以以任意顺序将片段追加到 SourceBuffer
  • sequence: 将片段追加到 SourceBuffer 的顺序决定它们播放的顺序。 会自动为观察此顺序的片段生成片段时间戳。

使用 MediaSource.addSourceBuffer() 创建 SourceBuffer 时,最初会设置 mode 值。 如果媒体片段已经存在时间戳,则该值将被设置为 segments;如果不存在,则该值将被设置为 sequence

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

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

字符串。

异常

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

InvalidAccessError DOMException

如果尝试在初始值为 sequence 时将值设置为 segments,则会抛出此异常。

InvalidStateError DOMException

如果 SourceBuffer 对象正在更新(即其 SourceBuffer.updating 属性当前为 true),追加到此 SourceBuffer 的最后一个媒体片段不完整,或者此 SourceBuffer 已从 MediaSource 中删除,则会抛出此异常。

示例

此代码段将 sourceBuffer 模式设置为 'sequence',如果它当前设置为 'segments',则将播放顺序设置为追加媒体片段的顺序。

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

规范

规范
媒体源扩展™
# dom-sourcebuffer-mode

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅