如何解析 MPD 清单视频文件并获取图像适配集的片段?

Posted

技术标签:

【中文标题】如何解析 MPD 清单视频文件并获取图像适配集的片段?【英文标题】:How to parse a MPD manifest video file and get segments of an image adaptation set? 【发布时间】:2021-05-27 21:20:54 【问题描述】:

我正在使用 mpeg-dash mpd 文件通过 videoJS 流式传输视频。

我正在尝试在使用搜索栏时显示视频的缩略图。

在清单文件中接收到图像的适配集。现在我正在尝试解析 mpd 文件并从中获取片段。我如何使用 javascript 实现这一点?

我尝试使用 https://www.npmjs.com/package/mpd-parser 这个插件解析清单文件,但这只会提取音频、视频、字幕和隐藏式字幕的片段。

是否有插件可以处理相同的图像适配集?

【问题讨论】:

MPD 文件只是文本。您是否在文本编辑器中打开它并查看是否有任何关于缩略图的内容?您的选择是... (1) 使用 String 函数提取这些图像路径。或者(2)编辑MPD Parser的源代码来处理缩略图.. 是的,我可以看到一个单独的图像适配集(缩略图)。并且还适用于视频和音频。当使用上面提到的插件解析时,我得到了视频和音频的片段(整个视频的每个时间间隔),而不是图像。我只想像视频和音频一样获取图像片段 【参考方案1】:

我想你知道,图像位于单独的适配集中 - 来自 DASH 互操作性规范 (https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf):

为了提供易于访问的带有时间的缩略图,可以在 MPD 中使用带有新 @contentType="image" 的 Adaptation Sets。一个典型的用例是用视觉提示增强擦洗条。所指的实际资产是时间上等距的缩略图的矩形图块,它们组合成一个 jpeg 或 png 图像。因此,从 MPD 时序的角度来看,图块与视频片段非常相似,但通常要长得多。

通常期望 DASH 客户端能够通过下载图像并使用基于浏览器的处理将缩略图分配给媒体演示时间轴来处理此类适应集。

听起来您需要一个工具或一些代码来让您能够查看缩略图 - 一些播放器在用户级别提供此功能,例如在此处查看 TheoPlayer 信息:

https://www.theoplayer.com/blog/in-stream-thumbnail-support-dvr-dash-streams

您还可以利用并可能重用已内置于开源播放器中的解析 - 请参阅 Shaka Player 支持问题中的讨论,该讨论提供了解析和检索缩略图的方法以及缩略图格式本身:

https://github.com/google/shaka-player/issues/3371#issuecomment-828819282

上面的线程还包含一些提取图像的示例代码。

【讨论】:

以上是关于如何解析 MPD 清单视频文件并获取图像适配集的片段?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 媒体播放器源清单

如何从 .mpd 播放列表文件下载视频

用 JS 解析 MPD

如何使用 edash 打包器生成 mpd 文件?

如何创建具有多个后备 URL 的 MPEG-DASH 清单?

如何从 XML/MPD 文件中获取属性值?