SourceBuffer:abort() 方法

abort() 方法是 SourceBuffer 接口的一个方法,它会中止当前片段并重置片段解析器。

语法

js
abort()

参数

无。

返回值

无 (undefined).

异常

InvalidStateError DOMException

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

示例

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

话虽如此,当前的实现可以在某些情况下很有用,当您希望停止当前在 sourcebuffer 上发生的追加(或任何其他)操作,然后立即开始再次对其执行操作时。例如,考虑以下代码

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

sourceBuffer.appendBuffer(buf);

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

规范

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

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅