基于HTTP的动态自适应流(英语:Dynamic Adaptive Streaming over HTTP,缩写DASH,也称MPEG-DASH)是一种自适应比特率流技术,使高质量流媒体可以通过传统的HTTP网络服务器以互联网传递。类似苹果公司的HTTP Live Streaming(HLS)方案,MPEG-DASH会将内容分解成一系列小型的基于HTTP的文件片段,每个片段包含很短长度的可播放内容,而内容总长度可能长达数小时(例如电影或体育赛事直播)。内容将被制成多种比特率的备选片段,以提供多种比特率的版本供选用。当内容被MPEG-DASH客户端回放时,客户端将根据当前网络条件自动选择下载和播放哪一个备选方案。客户端将选择可及时下载的最高比特率片段进行播放,从而避免播放卡顿或重新缓冲事件。也因如此,MPEG-DASH客户端可以无缝适应不断变化的网络条件并提供高质量的播放体验,拥有更少的卡顿与重新缓冲发生率。

DASH为一项自适性流技术,其将多媒体文件分割为一个或多个片段,并使用超文本传输协议传递给客户端。媒体演示描述(MPD)描述片段信息(计时、统一资源定位符,以及媒体特征,例如视频分辨率和比特率),并且可以根据使用环境以不同的方式组织,例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline。片段可以包含任何媒体数据,但是规范提供了与两种容器类型一起使用的特定指导和格式:ISO基础媒体文件格式(例如MP4文件格式)或MPEG-2传输流。

DASH不关心音频/视频的编解码器。多媒体文件通常有一种或多种表示(即不同分辨率或比特率版本),并可基于不同的网络条件、设备功能和用户偏好进行选择,达到自适性流和QoE (Quality of Experience) fairness。DASH也与底层的应用层协议无关,因此可以配合任何协议中使用。例如,基于CCN的DASH。

优势

  • 允许客户端根据网络带宽情况可以自动选择合适的码流进行播放,便于适应网络带宽抖动,同时最大程度上为终端用户提供最好的服务质量
  • 允许进行一次编码后安全地分发到通用平台的所有设备中(包括移动设备,OTT设备,通过插件方式到桌面设备或者 HTML5设备),便于实现面向多终端的流媒体内容传送
  • 支持多种编码格式,包括H.265、H.264、VP9
  • 支持多种DRM,支持PlayReady、Widewine,采用通用加密技术,支持终端自带DRM,可以大幅度降低DRM投资成本
  • 支持多种文件封装,支持MPEG-4、MPEG-2 TS(Transport Stream)
  • 支持异构终端,浏览器原生不用插件就可以支持,Android/iOS/Windows/Flash可以通过JITP将DASH转换为HLS、HDS、HSS等,已支持Legacy终端类型,支持一份存储,大幅度减少文件存储量;
  • 支持直播、点播、录制、时移等丰富的视频特性;
  • 支持动态码率适配,支持多码率平滑切换;
  • 支持客户端和服务端的广告插入;
  • 是事实上的国际标准,被行业内产业链的众多企业所支持,具有更长久的生命力
  • 的实现方式更适合通过CDN进行内容分发,从而有效降低大规模内容分发的成本

封装格式

Dash生成的片段可以选择不同格式封装,但相对于.ts(MPEG-TS),大多人更推荐.mp4(MPEG-4)

  • .ts文件一般用于m3u8中, 或者提供了流媒体基础信息的前提下使用
  • .mp4文件因为其头部记录moov信息(moov box 中包含编码、分辨率、码率、帧率、时长、音频采样率等等媒体信息),可以在不下载完全媒体文件的前提下进行seek操作,而在ts文件里则不行

fMP4

全称(Fragmented mp4),可以理解为基于 mp4 的流媒体格式。mp4 可以参考前面的文章,fmp4相对mp4的特点主要是以下两点:

  • moof box 中存放的是该 Fragment 中 mdat 的视频分片的描述信息,读取 moof box 即可对该 Fragment 进行解码播放。
  • Fragmented MP4 中的 moov box 只存储文件级别的媒体信息,因此 moov box 的体积比传统的 MP4 中的 moov box 体积要小很多。

下图为两种结构的详细对比和解释

MPD

MPEG-DASH 使用 XML格式的 **MPD(Media Presentation Description)**文件来描述码流的详细信息,类似于 HLS 的 m3u8 文件。

白皮书翻译:https://juejin.im/post/5c8b6352518825106a62c682