了解 DASH 自适应流媒体演示

DASH 是现代解决方案中部署最广泛的自适应流技术,用于在各种场景中提供视频。理解 DASH 演示的最佳方法是观察播放期间发生的网络活动。

此示例使用 Fiddler 捕获和分析浏览器网络流量,但任何类似的工具也足够了。我们将使用 dash.js 开源播放器进行视频播放。

对于我们的演示内容,我们将使用 Axinom DASH 测试向量 ,特别是 Clear 测试向量的单周期 1080p 变体。

StackOverflow 文档

运行网络捕获后,在任何现代浏览中打开 dash.js 每晚构建示例播放器,并在文本框中输入 URL http://media.axprod.net/TestVectors/v6-Clear/Manifest_1080p.mpd 。按 Load 开始播放。你将观察到正在下载的以下文件:

http://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd
http://media.axprod.net/TestVectors/v7-Clear/2/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/15/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/18/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/18/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/2/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/15/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/15/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/5/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/5/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/18/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/5/0003.m4s
...

第一个文件是表示清单 - 一种 XML 文档,其格式在 ISO / IEC 23009-1 中定义。这将 DASH 演示描述到足以允许玩家理解如何播放的深度。

如果你查看清单内部,你将看到各种 AdaptationSet 元素,每个元素都描述了内容的单一调整。例如,存在一个用于视频轨道的自适应集,用于三种音频语言的三个自适应集和用于五种字幕语言的五个自适应集。

内部适应集是 Representation 元素。对于视频自适应集,有几个 - 每个表示包含使用不同质量级别编码的相同可视内容。每个音频和文本自适应集仅具有一个表示。

StackOverflow 文档

为了执行回放,玩家将需要决定向观看者呈现哪些适应组。它可以基于其期望的任何自定义或内置业务逻辑(例如,语言顺序的偏好)来做出该决定。内容作者认为主要的适应集在清单中具有 Role 元素,声明主要角色。

此外,玩家将需要决定向观众呈现哪种表示(如果适应集提供多种表示)。大多数玩家保守地开始并应用启发式算法,该算法将尝试呈现观众的网络连接可以维持的最高质量水平。

玩家可以随时更改活动的表示和/或适应集,可以响应用户操作(选择不同的语言)或自动逻辑(带宽启发式结果导致质量等级变化)。

SegmentTemplate 元素定义了播放器可用于访问不同表示的 URL 结构。DASH 演示的一个关键因素是内容被分成几段,每段几秒(我们的样本电影只有 4 秒),这些片段是独立下载的。每个表示还有一个初始化段,名为“init.mp4”,用于此示例影片,其中包含特定于表示的解码器配置,因此必须在处理该表示的任何其他段之前加载。

此处描述的行为对于 DASH Live 配置文件是准确的,DASH Live 配置文件是 DASH 最常用的变体。还存在其他具有略微不同行为的配置文件,此处未涉及。请注意 DASH 清单根元素上的 profile 属性,以确保此说明适用于你的视频!

在检查从网络流量捕获中获取的 URL 列表并与清单提供的信息进行比较时,你将得出结论:在下载清单后,播放器执行了以下操作:

  1. 下载表示 2(360p 视频),15(英语音频)和 18(英语字幕)的初始化段。
  2. 下载以上三个表示的第一部分(0001.m4s)。
  3. 下载音频表示的第二部分。
  4. 从第二个视频片段开始,切换到 1080p 视频流! 这通过下载初始化段和第二段表示 5(1080p 视频)来指示。
  5. 继续下载更多活动表示段。

通过观察网络活动,可以很容易地观察到 DASH 自适应流媒体播放器在运行中做出的决定。这种播放器只是一种机制,它可以下载各种音轨的片段,并连续地将它们提供给媒体播放引擎,适当地切换音轨。

Axinom DASH 测试向量还包含让你下载的文件系统级的分析整个演示文稿档案文件。你会发现磁盘上的文件与网络级别的文件完全相同。这意味着 DASH 演示文稿可以由任意 HTTP 服务器提供,而无需任何自定义服务器端逻辑。

实时配置文件 DASH 的一个方面使分析复杂化,即媒体样本分布在大量片段中。大多数媒体分析工具无法处理单个段,仅在整个轨道上运行。你通常可以通过简单地连接单个表示的段,从初始化段开始,来克服此限制。例如,在 Windows 上,你可以使用以下命令:

copy init.mp4 /b + 0001.mp4 /b + 0002.mp4 /b + 0003.mp4 /b track.mp4

这将创建一个 track.mp4 文件,其中包含来自表示的前三个媒体段。虽然结构与独立的 MP4 文件不完全相同,但大多数工具(例如 mp4info 和 FFmpeg)仍然可以分析这样的文件而不会显着损失功能。