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 表格仅在浏览器中加载