为了寻找而非按顺序加载MPEG-DASH段

Chr*_*alo 6 javascript html5-video media-source mpeg-dash dash.js

用JavaScript构建MPEG-DASH播放器.但是,我在实现搜索时遇到了问题,并且似乎没有太多关于如何使用MSE和相应的Source Buffer对象处理它的参考资料.

据我所知,只要段正确编码(我通过SegmentTemplate使用单独的m4s文件,而不是字节范围),就应该只需要为所需的任意点附加段(比如10秒标记) ),然后将VideoElement的currentTime参数设置为标记.所有这些都有效,我可以确认段缓冲区没有错误,并且段的第一帧甚至可以在VideoElement中直观地加载.但是,它不会播放,擦洗是不可能的.也没有错误.它只是在等待更多数据.

这可以通过添加所有先前的段来解决,直到任意点,但这是不切实际的.例如,dash.js不会这样做(但是我不能确切地确定它做什么不同以允许正确的搜索).我猜我必须以某种方式动态修改sidx,mfhd和/或tfdt框,以欺骗浏览器相信我正在按顺序加载段 - 但这对于这样的标准来说似乎过于顶层.

当将碎片化的MP4段馈送到MSE源缓冲区时,任何人都知道如何跳转到任意点并继续播放?

Chr*_*alo 0

解决了。

事实证明,只要满足以下条件,这就会自动起作用:

A) I 帧正确对齐。(确实如此,但有时在这种情况下,要判断是否由于编码或其实现而引入错误是一个挑战。)

B) 段在搜索点处(及其之后)加载。因此,如果寻找 10 秒标记,段加载应从 10 秒标记开始并继续向前。

奇怪的是,我之前曾多次进行过这种(相当明显的)设置,但它未能正常播放或引入了许多渲染问题。但据我所知,这些都是由于段导入/缓冲区例程中的一个小实现错误造成的。