SourceBuffer:abort() 方法

可用性有限

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

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

SourceBuffer 接口的 abort() 方法会中止当前段并重置段解析器。

语法

js
abort()

参数

无。

返回值

无(undefined)。

异常

InvalidStateError DOMException

如果父级媒体源的 MediaSource.readyState 属性不等于 open,或者此 SourceBuffer 已从 MediaSource 中移除,则会抛出此异常。

示例

abort() 的规范描述有点令人困惑——例如,可以考虑 重置解析器状态 的第 1 步。MSE API 是完全异步的,但这一步似乎暗示了一个同步(阻塞)操作,这似乎说不通。

尽管如此,在某些情况下,当前实现会很有用,当您想要停止在源缓冲区上正在进行的分段附加(或其他操作)时,然后立即再次对它执行操作。例如,考虑以下代码:

js
sourceBuffer.addEventListener("updateend", (ev) => {
  // …
});

sourceBuffer.appendBuffer(buf);

假设在调用 appendBufferupdateend 事件触发之前(即,正在附加缓冲区但操作尚未完成),用户“拖动”视频,跳转到新的时间点。在这种情况下,您将希望手动调用源缓冲区的 abort() 来停止当前缓冲区的解码,然后获取并附加与视频当前新位置相关的、新请求的段。

规范

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

浏览器兼容性

另见