在任意段开始 MPEG-DASH 流
Posted
技术标签:
【中文标题】在任意段开始 MPEG-DASH 流【英文标题】:Start MPEG-DASH Stream at Arbitrary Segment 【发布时间】:2017-01-18 23:06:09 【问题描述】:假设 MPEG-DASH 流中有 20 个段,并且流通常从索引 0 开始。假设初始化文件/字节序列已经排入媒体源缓冲区,是否可以从索引 13 开始?这个用例很实用的一个例子是 Netflix 的恢复功能——有人可以继续在另一台设备/浏览器上流式传输。 (大概与从头开始时的初始化数据相同。)
我唯一的想法是我的假设是错误的,并且对于每个可以暂停媒体的不同点都会有不同的初始化块……但这很愚蠢……对吗?
【问题讨论】:
【参考方案1】:简单的答案是可以,并且正如您所建议的,这可用于恢复播放功能。它还可以用于直播中的“重新开始”以及向前或向后跳转到视频中的特定点。
MPEG DASH 支持两种主要文件格式(或视频容器格式) - ISO 基本媒体文件格式 (ISOBMFF - 尽管严格来说它是 MPEG-2 的概括,但通常称为 MP4) 和 MPEG-TS。
MPEG DASH 标准使用“周期”的概念作为其基本构建块之一 - 周期代表内容流的一部分,包括开始时间和持续时间。为了能够在给定时间段内播放内容,您仍然需要一些初始化数据。
查看 ISOBMFF,您建议有一个 init 段,其中包含所需的数据,W3C 将其定义为:
初始化段 包含解码媒体段序列所需的所有初始化信息的字节序列。这包括编解码器初始化数据、多路复用段的 Track ID 映射和时间戳偏移(例如,编辑列表)。
【讨论】:
以上是关于在任意段开始 MPEG-DASH 流的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python3 opencv 捕获 mpeg-dash 流?