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

瀏覽器相容性

另見