DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

流媒体

注:
1、此篇文章立足于巨人的肩膀之上,侵必删
2、有许多内容尚未完成,包括segment的类别,HTTP协议基础等

DASH

  • DASH的起源——

    MPEG(Moving Picture Experts Group,动态影像专家小组),源自ISO与IEC等国际组织的工作小组。MPEG-DASH技术由MPEG负责开发。

    对DASH的工作始于2010年,2011年1月成为国际标准草案,2011年11月成为国际标准。

    2012年4月,被MPEG制定,标准为ISO - ISO/IEC 23009-1:2019 - Information technology — Dynamic adaptive streaming over HTTP (DASH) — Part 1: Media presentation description and segment formats,后有两版较大更新(2014与2019年),最新标准于2019年提出。

    制作DASH标准的目的,源于Adobe的HTTP Dynamic Streaming、Apple的HTTP Live Streaming(HLS)与微软的Smooth Streaming等协议无法兼容,阻碍了音视频向全世界推广的进程,故而需要一项标准加以规范。

    而DASH本身,则是基于3GPP(3rd Generation Partnership Project,第三代合作伙伴计划)第9版的Adaptive HTTP Streaming(AHS),和Open IPTV Forum Release 2中的HTTP Adaptive Streaming(HAS)而产生的。(由于年代久远,对这两种方案有兴趣的可以自行查询)

    DASH的发展流程导图——

image
image

DASH行业论坛(DASH-IF,DASH Industry Forum | Catalyzing the adoption of MPEG-DASH (dashif.org))则进一步促进和催化了MPEG-DASH的采用,并帮助其从规范转变为实际业务。主要的流媒体和媒体公司,包括微软、Netflix、Google、爱立信、三星、Adobe等都在实际业务中尝试使用,并为不同使用环境创建了DASH使用指南。

  • DASH的工作原理(概述)

    • Server端将媒体文件分割为时间长度等长的片段(Segment),每个片段可以有不同的码率和分辨率;
    • 客户端通常通过对网络带宽的评估或者是自身缓冲区的大小,选择不同参数的片段。通过符合HTTP标准的GET请求进行对应片段的下载。

    客户端首先向服务器请求下载mpd文件,根据mpd文件和自身的条件,请求下载合适的媒体片段。由于在时间上,片段是对齐的,因此可以实现在不同片段间切换时,达到无缝切换的播放。

    image

  • DASH标准(概述)

    首先要解释的概念是MPD(Media Presentation Description,媒体表示描述)文件。

    MPD为一个XML文件,他是用HTTP 中的URL(Uniform Resource Locators,统一资源定位器)表示媒体内容中不同质量和每种质量的各个段。其是一种分层的数据模型,见下图。

    image

    • Period :

      标注了视频的时长信息,也可以看做是更新mpd文件的最长时长。

      一个Period通常表示一个媒体内容时期,包含一系列不同编码版本的的媒体组件,即不同视角或不同编解码器的视频,不同语言或者不同类型信息的音轨,字幕或标题等,这些组件具有某些特征,例如码率、帧率,音频通道等,这些特征在一个Period中是不会改变的。

      在直播场景下,MPD文件会更新Period以保证旧的Period被移除。

      客户端可以根据一个Period中可用的码率、分辨率、编解码器等进行调整。且Period可以用于分割内容,比如广告的插入,改变足球比赛的摄像机视角等。

    • AdaptationSet :

      包含了媒体呈现的形式,(视频/音频/字幕)。

      表示一个或多个逻辑相同的媒体内容组件的一系列可替换的编码版本,例如具有相同编解码器、语言、分辨率、音频通道格式等组件可以包含在同一个Adaptation Set中(但并非完全如此)。这种机制允许客户端消除一系列不满足其需求的多媒体组件。比如客户端只能解HEVC码流,自然不希望HEVC码流与AVC码流被封装在一个Adaptation Set中。

      另外,Period还可以只包含一个Adaptation Set,以满足MPD创建者的意图。例如,他只想让你看具有5.1声道音频的高清视频内容。

      如果有其他的媒体组件例如字幕等,也可以单独组合为一个Adaptation Set。

    image

    • Representaiton :

      包含不同的码率、编码方式、帧率等。

      一个Representation描述一个或多个媒体内容组件的一个可交付的编码版本。

      在使用的编解码器、解码复杂度以及因此需要的CPU资源或呈现技术方面等更为深远的特征下,Representation都可能有所不同。

      Representation包含一个或者更多的媒体流(用于多路复用中的每个媒体内容组件,多路复用的意思指将多个信号组合成一个信号的过程)。

      任何一个Representation都足以用于渲染包含的媒体内容组件。意味着客户端可以在一个Adaptation Set中动态的在Representation中进行无缝切换。

    • Segment

      Representation中每一个具体的片段,以便可以得当的访问与交付。

      每个Segment通常具有相同的时间长度,按照媒体内容的呈现时间轴进行排列。MPEG-DASH不限制段长度或给出最佳长度的建议。长段意味着更有效的压缩,而短段用于实时场景和高度可变的带宽条件,如移动网络。

      直播时的Segment还有一个“可用时间“的特征,表示在这个时间可以访问直播场景。

      为了访问一个Segment,MPD中为每一个Segment提供一个URL,因此一个segment是通过单个HTTP请求检索的最大数据单元。

      对于已经分段的Representation,包含两种小段(Subsegment)—— 初始化Segment和包含静态媒体数据的Segment。段中有一个段索引,描述子段的表示时间范围与字节范围,可以通过HTTP1.1字节范围请求提前下载子段以生成适当的子段请求。

      为了实现在Representation中切换,MPEG-DASH引入了流接入点(Streaming Access Point)。例如,每个段通常以IDR帧开始,以便于可以在传输一个段之后切换不同的Representation。

    简而言之,一个视频首先分为Period,Period中包含Adaptation Set或是字幕等媒体组件,一个Adaptation Set中包含具有不同码率\分辨率等特征的Representation,而客户端则通过请求Representation中具有URL的Segment进行媒体内容的解码与播放。

    • Segment参考方案:

      制定标准为RFC3986

  • DASH相较于HLS的优势:

    • 更加通用,由MPEG组织制定,属于公用的标准

    • 相较于多轨媒体,减少了服务器的存储空间和传输带宽

      即如果要组合不同码率的视频和音频,例如视频5种码率而音频有4种,则需要20个组合;但若使用DASH协议,服务器端仅需存储5种视频文件和4中音频文件,客户需要什么版本的音频或者视频,分别请求即可(这也满足 Youtube,Bilibili等流媒体网站的播放模式)

    • 相较于HLS分段的m3u8格式,文件体积大大减小

  • DASH的实现

不同的流媒体协议

小结——

协议类型HLS协议DASH协议RTMP协议
连接方式短连HTTP短连HTTP长连HTTP
推广公司AppleISO,OpenAdobe
切片工具FFmpegMP4Box
Beno4-mp4dash
FFmpeg
-
索引文件m3u8,m3umpd-
分片文件TSmp4/cmfv/cmfa/m4sMessage
播放方式本地播放本地播放实时播放
视频编码AVC/HEVC…AVC/HEVC…AVC/VP9…
音频编码AACAAC/mp3…AAC/mp3…
原理分片,更新索引文件同左即收即发
延时(?)10-30s<HLS,灵活>2s
参考文章

流媒体协议:互联网视频分发协议介绍(渐进式、HLS、DASH、HDS、RTMP协议) - 简书 (jianshu.com)

http推流原理 - 简书 (jianshu.com)

ITEC – Dynamic Adaptive Streaming over HTTP (aau.at)
标准小组官方网站,提供了一系列最新研究,工具,白皮书、视频序列的下载等

基于HTTP的动态自适应流 - 维基百科,自由的百科全书 (wikipedia.org)

MPEG_DASH Dynamic Adaptive Streaming Over HTTP | Bitmovin

自适应流媒体传输(四)——深入理解MPD_zhanghui_cuc的博客-CSDN博客_mpd

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值