当前位置: 首页 > 知识库问答 >
问题:

非顺序加载MPEG-DASH片段以进行搜索

胥诚
2023-03-14

用JavaScript构建MPEG-DASH播放器。然而,我在实现seek时遇到了一个问题,关于如何使用MSE和相应的源缓冲区对象处理它,似乎没有太多参考资料。

据我所知,只要片段编码正确(我通过片段模板使用单个m4s文件,而不是字节范围),就应该只需将片段附加到所需的任意点(比如10秒标记),然后将VideoElement的currentTime参数设置为该标记。所有这些工作,我可以确认段缓冲区没有错误,段的第一帧甚至会在视频元素中视觉加载。然而,它不会播放,也不可能擦洗。也没有错误。它只是在等待更多的数据。

这可以通过添加所有之前的段来解决,直到任意点,但这不实用。例如,dash.js不这样做(但我无法准确确定它的不同之处以允许正确查找)。我猜我必须以某种方式动态修改sidx、mfhd和/或tfdt框,以欺骗浏览器相信我是按顺序加载段的——但对于这样的标准来说,这似乎有些过头了。

有人知道如何跳到任意点,并继续播放时,饲料碎片MP4段的MSE源缓冲区?

共有1个答案

黎征
2023-03-14

解决了的。

事实证明,只要:

A)I帧对齐正确。(是的,但有时很难判断,在这种情况下,是否由于编码或实现而引入错误。)

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

奇怪的是,我之前有过好几次这样的设置(相当明显),但都没有正常播放,或者出现了一些渲染问题。不过,据我所知,这是由于段导入/缓冲区例程中的一个小实现错误造成的。

 类似资料:
  • 我正在尝试使用shaka packager实现Mpeg DASH流媒体。要生成每个持续时间为5秒的分段,-segment_duration param帮助我实现这一点。 https://google.github.io/shaka-packager/html/documentation.html#chunking-选项 我可以从下面的链接中看到一段片段视频是如何呈现的 什么是碎片化mp4(fMP4

  • 我对碎片化mp4的理解是它是一个文件,但内部它是以片段的形式构建的。有人能向我解释一下如何在DASH的. mpd文件中处理这些片段吗?我看到的. mpd文件似乎使用单独的url处理不同的段,但我想碎片化mp4必须通过字节偏移量来处理同一个url。那么浏览器如何知道什么时间对应于什么字节范围?

  • 需要调试段划线文件的帮助吗 输入是带有这些细节的MP4。这是从摄像机录制的,摄像机的输出是mkv,我们通过adobe编辑音频后转换为MP4 大小:7.51 GB帧率:25帧/秒 数据速率:25326kbps 总比特率:25525kbps 使用此命令将其转换为另一个mp4 输出视频已被删除 fps:25 数据速率:761kbps 比特率:761kbps 然后,通过MP4Box创建了分段破折号 生成的

  • 我希望转换之间的HLS和MPEG破折号。我不能访问原始的完全串联的视频文件,只有个别的HLS段。 在进行到MPEG破折号的转换时,我需要为破折号manifest.mpd文件提供一个初始化段。 我的问题是: null 非常感谢。 更新:使用原始hls段的流代码段。视频一直在播放,但只是黑色的。

  • 我一直试图实现一个像丛一样的视频播放器,它可以按需转换任意视频文件,并在网页上用MPEG-Dash播放它。我能够使用引用实现来实现客户端播放器,因此它将动态地从服务器请求片段(在mpd文件中使用)。 但是我在实时生成这些块时遇到了一些问题。Ffmpeg允许我设置和来定义所需片段的边界,但是它们不能在播放机中正常播放,因为它们是“完整”视频文件,而不是破折号片段。 那么,我如何调整我的ffmpeg命

  • 我一直在尝试学习MP4Box和Dash,我正在取得一些进展,但我似乎无法让我的视频正常工作。我按照将播放器添加到一个简单的html页面的说明进行了操作,并用它测试了Dash测试页面中的已知MPD,并且播放器的一切都很完美,所以我缩小了MPD文件的范围。 我通过Dash验证器运行了我的MPD文件,但它失败了。我得到以下错误: 我正在使用MP4Box来分割mp4,所以这可能是一个错误的命令。我用的是这