在没有初始化段的情况下播放 mpeg dash 流

Posted

技术标签:

【中文标题】在没有初始化段的情况下播放 mpeg dash 流【英文标题】:Playing a mpeg dash stream without initialization segment 【发布时间】:2014-12-29 10:57:24 【问题描述】:

我正在尝试生成可在仪表板播放器中播放的仪表板流。我有一个 mp4 视频,我已将其分成多个视频,每个视频大约 10 秒。现在我想在每个片段都是自我初始化的破折号播放器中播放这些视频。 如果不创建初始化段,我怎么可能实现这一点。

【问题讨论】:

你是如何“分块”它们的? 如果您的片段可以自己播放,那么它们不是片段,而只是小的 mp4 文件。 DASH 视频和片段必须遵循特定格式。如果您可以提供有关您用于创建这些视频的工具的信息,我也许可以就如何使用这些工具正确生成 DASH 视频给出答案。 你说得对,我拥有的是小型 mp4 文件。我使用bento4 将这些文件转换为破折号段。现在我遇到的问题是为所有组合的文件生成一个初始化文件。将所有这些文件组合成一个文件,然后生成破折号流不是一种选择。 【参考方案1】:

根据规范,这是可能的。 这是来自 MPEG-DASH ISO/IEC 23009 规范的引用:

一个表示由一个或多个段组成。 每个表示要么应包含一个初始化段,要么 表示中的每个媒体段都应该是自初始化的, 即媒体段本身符合指定的媒体类型 在此 Representation 的 @mimeType 属性中。

当一个表示不是从属表示时,即 @dependencyId 属性不存在,则连接 初始化段(如果存在)和所有连续的媒体段 在一个 Representation 中,应将符合条件的段序列表示为 在 4.5.3 中定义 符合 此表示的@mimeType 属性

此外,初始化元素不是强制性的 (0...1)。

【讨论】:

【参考方案2】:

这是不可能的。初始化段包含初始化解码器所需的信息。例如 AVC 编解码器的 NalLengthSize,或 AAC 的音频特定配置。

【讨论】:

没有自初始化段的概念吗?我所有的片段都可以单独播放。 您是如何创建细分的? 我使用 ffmpeg 创建了小型 mp4 文件。这些文件一起形成一个视频。我想在没有初始化段的情况下播放这些小文件,比如破折号流。 这正是我的想法。 mp4 片段由 moov 和 mdat 组成。破折号段(通常是 m4s)是 moof、sidx 和 mdat。它们是不同的格式。您不能将一个用作另一个。 谢谢萨特玛丽。现在我已经设法使用bento4 为每个段创建适当的破折号片段。我想为所有组合的片段创建一个初始化段。有可能吗?

以上是关于在没有初始化段的情况下播放 mpeg dash 流的主要内容,如果未能解决你的问题,请参考以下文章

VLC 播放器上的 MPEG-DASH 支持

MPEG DASH 部分片段

Mpeg Dash html5 播放器或直播视频

在任意段开始 MPEG-DASH 流

Chromecast Receiver CAF,无限加载 MPEG-DASH 流,ShakaPlayer 访问

用于实时流媒体的 MPEG-DASH 编码