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 的浏览器中加载。