DASH(Dynamic Adaptive Streaming over HTTP)是在2011年底由MPEG和ISO共同制定的标准,通过HTTP共同影音档案通讯协定,可使高品质影音内容通过网路传送到联网电视、机顶盒及移动终端设备。在MPEG-DASH之前,市场上已有Apple的HLS、Microsoft的Smooth Streaming以及Adobe的Dynamic Streaming等渐进式流媒体协议,但彼此并不相容,MPEG-DASH整合了这三种流媒体协议,同时支持TS profile和ISO profile,更具通用性。

DASH

一种服务端、客户端的流媒体解决方案:
服务端:
将视频内容分割为一个个分片,每个分片可以存在不同的编码形式(不同的codec、profile、分辨率、码率等);
播放器端:
就可以根据自由选择需要播放的媒体分片;可以实现adaptive bitrate streaming技术。不同画质内容无缝切换,提供更好的播放体验。

DASH中的重要概念

  • MPD
    媒体文件的描述文件(manifest),作用类似HLS的m3u8文件。MPD文件以XML格式组织,其层次结构参图1。
  • Representation
    对应一个可选择的输出(alternative)。如,480p video,720p video, 44100采样 audio,22050采样audio,都使用Representation描述。
  • Segment(分片)
    每个Representation会划分为多个Segment。Segment分为4类,其中,最重要的是:Initialization Segment(每个Representation都包含1个Init Seg),Media Segment(每个Representation的媒体内容包含若干Media Seg)
  • fMP4
    fMP4(fragmented MP4),可以简单理解为分片化的MP4,是DASH采用的媒体文件格式,文件扩展名通常为(.m4s或直接用.mp4)。普通MP4 由索引文件头文件moov box和媒体数据mdat box组成。
    fMP4 由分片组成,可以按整个文件存储,也可以按分片存储,如果按照单个文件存储,每个输出是一个m4s文件。 完整的fMP4视频可以描述为如下形式: moov + (moof + mdat) * N 其中moof box是分片(fragment)的标识, mdat box存放的是当前分片的媒体数据;如果按照分片存储,每个分片是一个m4s文件,输出对应了多个m4s。fMP4中的第一个分片,对应了DASH协议中Initialization Segment;其后的分片,则对应Media Segment。

DASH自适应码率下载

HTTP Server端将媒体文件切分成一个个时间长度相等的小分片(Segments),每个分片被编码为不同的码率和分辨率;这些分片可以通过GET请求下载,客户端通过评估自身的性能和带宽情况,下载相应码率和分辨率的切片。码率切换以Segment为单位,当自身带宽较好时,在下载下一个切片时,就可以请求对应码率的较高分辨率的切片;而当带宽变差时,则当前切片下载完成后,可以下载码率和分辨率较低的下一个切片。由于不同质量的切片在时间上都是对齐的,因此,在不同质量的切片之间切换时,是自然流畅的。

描述Segments之间在时间和结构上的关系

MPEG-DASH引入了Media Presentation Description (MPD)的概念。MPD是一个XML文件,它完整表示了视频的所有信息,包括视频长度,不同Segments的码率和分辨率、分片时长以及对应的URL等等,客户端通过首先下载并解析MPD文件,可获取到与自身性能和带宽最匹配的切片序列。

  • Periods
    一个MPD文件可以包含一个或多个Periods,每个Period代表某一个时间段,比如某条码流有60s长,Period1为015s,Period2为1640s,Period3为41~60s。在同一个Period内,可用的媒体内容及其各个可用码率(Representation)不会发生变更。直播情况下,可能需要周期性地去服务器请求新的MPD文件,服务器可能会移除已过时的Period,添加新的Period,而新的Period中可能会添加新的可用码率,或去掉上一个Period中存在的某些码率。

  • AdaptationSet
    一个Period由一个或多个AdaptationSets组成,AdaptationSet包含了逻辑一致的媒体呈现的格式,例如,相同的codec、language、resolution,以及音频通道数(5.1,stereo等)的媒体内容可以组成一个AdaptationSet。每个AdaptationSet由一组可供切换的不同码率的码流(Representation)组成,这些码流中可能包含一个(ISO profile)或多个(TS profile)media content components,因为ISO profile的mp4或fmp4 segment中通常只含有一个视频或者音频内容,而TS profile中的TS segment同时含有视频和音频内容,当同时含有多个media component content时,每个被复用的media contentcomponent将被单独描述。

  • Representation
    一个AdaptationSet由一组媒体内容版本可切换的Representations构成。每个Representation包含了相同媒体内容的不同版本,即不同的分辨率、码率等,以供客户端根据自身的网络条件和性能限制来选择合适的版本下载播放。

  • Segment
    每个Representation中的内容都被切分成一段段Segments,使得客户端在播放时能够方便在不同的Representations之间切换。每个Segment由一个对应的URL指定,也可能由相同的URL与不同的byte range指定。DASH客户端可以通过HTTP协议来获取URL对应的分片数据。MPD中描述Segment URL的形式包括Segment list,Segment template,Single segment。

  • Subsegment
    Segments可以进一步划分为更小的Subsegments,Subsegments表示Segment中一些更小的access units。Segment index描述了Subsegments的presentation time range和byte position,客户端可以先获取Segment index,再通过HTTP 1.1的byte range requests去请求相应的Subsegment。

SAP (Stream Access Point)

在媒体播放过程中,虽然可以方便地在不同的码率(Representations)之间,但并不能做到在码流的任意点切换。需要注意的是,Segments之间不允许互相覆盖(overlap),而且Segments之间是解码独立的,也就是每个Segments可以单独解码,而不依赖其之前或之后的其他Segments。

SAP可以简单理解为I帧或IDR帧,一般每个Segments的起始帧都是IDR帧(H.264 / AVC),这样就保证了每个Segments传输完成之后,可以切换到其他的Representation。

Segment URL的几种形式

Representation中会包含(且仅包含)这几个选项之中的一个
(1) 一个或多个SegmentList元素;
(2) 一个SegmentTemplate;
(3) 一个或多个BaseURL元素,最多一个SegmentBase元素,不含有SegmentTemplate或SegmentList元素。

  • SegmentList
    SegmentList包含了一个SegmentURL的列表,客户端按照segment列表元素在MPD文件中出现的顺序来请求和播放相应的Segments。SegmentURL即为每个Segment的地址,可以是绝对地址,也可以是相对地址,也可能是字节范围。

  • SegmentTemplate
    SegmentTemplate提供了一种通过给定的模板构造出一个segment list的机制,这意味着一些特定的标识符将被动态值取代。在SegmentList模式中为每个Segment构造一个URL,当Representation中分段较多时,会使得MPD文件变得很大,而SegmentTemplate模式则可以通过少数几行描述来构造出一系列segments。有两种形式的SegmentTemplate,一种是基于数字的SegmentTemplate,另一种是基于时间的SegmentTemplate。
    基于数字的SegmentTemplate: 通过“SegmentTemplate”元素中的地址和startNumber就可以构造出不同的segmentlist了,只需要短短几行表述,使得MPD文件更加简洁和紧凑。这种方式特别适用于含有多个Representations的长视频,能够有效压缩MPD文件的大小,提升客户端的下载速度和播放启动速度。
    基于时间的SegmentTemplate:“SegmentTimeline”字段中描述了当前Representation中第一个Segment的起始时间,duration,以及段的repeat次数(个人理解,应该是具有相同duration的segments的个数,这样读取完一个Segment之后,就可以根据该数值直接去读取下一个Segment,而不需要重新去读取一遍MPD)。

  • SegmentBase
    在MPEG-DASH中,SegmentBase是当Representation中只有一个media segment存在时使用的方式。

DASH( Dynamic Adaptive Streaming over HTTP )协议相关推荐

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

    流媒体 注: 1.此篇文章立足于巨人的肩膀之上,侵必删 2.有许多内容尚未完成,包括segment的类别,HTTP协议基础等 DASH DASH的起源-- MPEG(Moving Picture Ex ...

  2. A Survey of Rate Adaptation Techniques for Dynamic Adaptive Streaming Over HTTP(自适应流媒体的综述)

    为了避免出现视频卡顿或者重新缓冲的现象,目前有以下四种解决方案: 1.使用播放缓冲区.此方法可以克服短期的网络吞吐量变化. 2.编码变换.比如改变视频分辨率.压缩比或帧速率,但此方法计算量巨大,需要复 ...

  3. 浅谈HTTP Adaptive Streaming技术及其前景

    关键词:OTT  流媒体  HTTP Adaptive Streaming 本文已发表于<世界宽带网络>2011.6 第18卷第5期 总200期 HTTP Adaptive Streami ...

  4. 计算机网络自顶向下方法(二)——应用层

    不作理想的巨人,行动的矮子 文章目录 写在前面 应用层协议原理 网络应用程序体系结构 客户-服务器(C/S)体系结构 对等体(P2P)体系结构 C/S和P2P体系结构的混合体 进程通信 分布式进程通信 ...

  5. 计算机网络自顶向下——应用层

    第二章 应用层 目录: 目标: 网络应用层原理:网络应用协议的概念和实现方面 传输层的服务模型 客户--服务模型 对等模型 内容分发网络 网络应用实例:互联网留校的应用层协议 HTTP FTP SMT ...

  6. 计算机网络基础——应用层(上云必看)

    基本概念 进程:主机上运行的程序,一个主机同时可以有多个进程 通过网络报文交换通信 P2P之中一个进程即可以是客户也可以是服务器 一对进程之中,发起进程的是客户:等待联系的是服务器 Socket:连接 ...

  7. Web视频播放与数据安全

    Web视频播放与数据安全 HTML5 的 video 标签的安全性 保证媒体资源的数据安全 Referer 防盗链 Blob URL 视频⽂件加密 视频⽂件加密算法选择 AES 加密 模式 MSE,让 ...

  8. 从零开始成为GStreamer专家——MPEG-DASH HLS开发

    MPEG-DASH开发 DASH(Dynamic Adaptive Streaming over HTTP),在GStreamer中,DASH,HLS,MSS的adaptive_demux_sink_ ...

  9. 流媒体技术介绍(中篇)

    目前,HAS技术的实现方式从标准的类型来看主要有两大类:一类是企业方案,即提供了整体的技术解决方案,如Apple Live Streaming技术.Adobe Dynamic Streaming技术. ...

最新文章

  1. Easyui 让Window弹出居中与最大化后居中
  2. 华为年薪200万招募的“天才少年”,一句话让我陷入了深思
  3. NLP | 医学AI又一突破,微软开源生物医学NLP基准:BLURB
  4. SpringBoot简单使用
  5. foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别
  6. python什么是交换算法_python算法-015将链表元素两两交换元素(交换值、就地翻转)...
  7. iframe 高度根据子页面来确定
  8. 阿里巴巴对外开源液冷数据中心技术
  9. 2014手机号码归属地数据库
  10. Android Timer和TimerTask解决IllegalStateException:Task already scheduled or cancelled
  11. IDEA2017.2汉化
  12. taskmgr.exe解决方法
  13. signature=3e113c2e337ada93de6227c65daceed1,Informed Consent: It Is More Than Just a Document
  14. Java 匿名类热更新失败的原因
  15. 计算机什么是符号健,在电脑健盘上怎么打:符号
  16. 要不做一名 Prompt Engineer
  17. TcaplusDB君 · 行业新闻汇编(三)
  18. 【笔记】机器视觉 光源篇
  19. 一个简单的电子邮箱验证
  20. bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at l

热门文章

  1. 洛谷 P2071 座位安排 (最大流 + 建图)
  2. Essentially No Barriers in Neural Network Energy Landscape
  3. 360wifi在linux系统如何使用,在树莓派上使用360WIFI(也适用于小米、百度、腾讯WIFI)...
  4. 谷歌Chrome超越苹果Safari 市场份额升至第三(每日关注2009.12.16)
  5. Greenplum6 JDBC insert性能媲美MySQL
  6. JSP基础知识总结一
  7. java info是什么_什么是package-info.java
  8. MySQL面试系列:MVCC是怎么实现的?(三)
  9. Quectel_Ec600硬件练习
  10. 贵州中小学教师计算机考试题目,2019贵州教师招聘考试习题及答案:小学数学...