不同位置的 MediaSource appendBuffer

MediaSource appendBuffer at different positions

我正在尝试使用 MediaSource 播放两个单独的流(音频和视频)。我已经成功地按任意大小的顺序附加了它们的缓冲区(通过 XHR 检索的 ArrayBuffer 类型):

视频和音频播放完美且同步,所有范围均已正确翻译。对于这些测试,我使用的是来自我的 collection、webm 格式和 vp9 编解码器的 YouTube 编码视频。

然而,问题出现在搜索场景中,在加载片段之前搜索玩家,我想从该点或该点之后附近加载它们,而不是这个新片段与任何先前附加的顺序缓冲区。

我尝试了一个明显的想法,即简单地假设 MediaSource 会识别应该将新缓冲区附加到的段位置,所以我的尝试只是获取与寻找的时间间隔相关的流数据并将其附加到缓冲区, 但它不起作用并出现以下错误:

Uncaught InvalidStateError: Failed to execute 'appendBuffer' on 'SourceBuffer':
The HTMLMediaElement.error attribute is not null.

我一直在努力寻找解决方案,尝试了 timestampOffsetappendWindowStart + appendWindowEnd 无济于事。

我在文档中找不到如何将缓冲区附加到顺序以外的位置,我将不胜感激任何帮助,如果可能的话,我将不胜感激对过程本身的简短解释。

似乎我想做的事是可能的,但不是我做的方式。用于 DASH 流式传输的正确编码文件应包含 SIDX(片段索引框)信息,这基本上是视频片段详细信息,存在于视频(或音频)本身的 start/header 文件中,或在独立的 . xml 格式的 mpd 文件。这些片段中的每一个都包含允许 MSE(MediaSource 扩展)播放未链接到先前附加缓冲区的附加片段的正确信息。