MPEG DASH基本概念

MPEG DASH作为三大流媒体协议之一,诞生的目的是为了统一标准,因此是兼容SmoothStreaming和HLS的,然而协议内容较多,相对复杂,从各自协议的页数对比就能看出。

MPD:Media Presentation Description.

描述整个mpeg dash码流的构成,相当于HLS协议的m3u8文件,MPD是一个XML Document,通过MPD的内容可以构造出用于HTTP GET下载的URL。MPD文件可以被加密,请参考http://www.w3.org/TR/xmlenc-core/,可以使用数字签名和验证,请参考http://www.w3.org/TR/xmldsig-core/。

注:XML标准是由W3C制定的,关于XML schema:http://www.w3.org/2001/XMLSchema。

Mpegdash和HLS,以及Smooth Streaming的对比:

Smooth Streaming我自己不太了解。mpeg dash试图同时兼容这两种协议,因此显得更为复杂,同时支持TS profile和 ISO profile,支持节目观看等级控制,支持父母锁?mpeg dash支持的DRM类型包括PlayReady和Marlin,而HLS支持的是AES128(密钥长度为128位的高级加密标准Advanced Encryption Standard)加密类型。

Period:

一条完整的mpeg dash码流可能由一个或多个Period构成,每个Period代表某一个时间段。比如某条码流有60秒时间,Period1从0-15秒,Period2从16秒到40秒,Period3从41秒到60秒。同一个Period内,意味着可用的媒体内容及其各个可用码率(Representation)不会发生变更。直播情况下,“可能”需要周期地去服务器更新MPD文件,服务器可能会移除旧的已经过时的Period,或是添加新的Period。新的Period中可能会添加新的可用码率或去掉上一个Period中存在的某些码率(Representation)。

Adaptationset:

一个Period由一个或者多个Adaptationset组成。Adaptationset由一组可供切换的不同码率的码流(Representation)组成,这些码流中可能包含一个(ISO profile)或者多个(TS profile)media content components,因为ISO profile的mp4或者fmp4 segment中通常只含有一个视频或者音频内容,而TS profile中的TS segment同时含有视频和音频内容,当同时含有多个media component content时,每个被复用的media content component将被单独描述。

media content component:

一个media content component表示表示一个不同的音视频内容,比如不同语言的音轨属于不同的media content component,而同一音轨的不同码率(mpeg dash中叫做Representation)属于相同的media content component。如果是TS profile,同一个码率可能包括多个media content components。

Representation:

每个Adaptationset包含了一个或者多个Representations,一个Representation包含一个或者多个media streams,每个media stream对应一个media content component。为了适应不同的网络带宽,dash客户端可能会从一个Representation切换到另外一个Representation,如果不支持某个Representation的编码格式,在切换时可以忽略之。

media content component,Representation,media stream的关系:

一个media content component可包含多个不同的编码版本(Encoded Versions),每一个编码版本都是一个media stream,每个Representation可包含1..N个media stream(TS profile ,在同一个Segment中复用了音频和视频。),每个media stream对应一个不同的media content component。

Sub-Representation:

一个Representation可能包含多个Sub-Representation,这种情况还没遇到过。

Segment:

与HLS协议的segment概念是一样的,每个Representation由一个或者多个segment组成,只由一个segment组成的形式不能应用于网络直播。每个segment由一个对应的URL指定,也可能由相同的URL+不同的byte range指定。dash 客户端可以通过HTTP协议来获取URL(+byte range)对应的分片数据。MPD中描述segment URL的形式有多种,如Segment list,Segment template,Single segment。

Initialization Segment:

Representation的Segments一般都采用1个Init Segment+多个普通Segment的方式,还有一种形式就是Self Initialize Segment,这种形式没有单独的Init Segment,初始化信息包括在了各个Segment中。Init Segment中包含了解封装需要的全部信息,比如Representation中有哪些音视频流,各自的编码格式及参数。对于 ISO profile来说(容器为MP4),包含了moov box,H264的sps/pps数据等关键信息存放于此(avCc box)。

另外,同一个Adaptation set的多个Representation还可能共享同一个Init Segment,该种情况下,对于ISO profile来说,诸如stsd box,avCc box等重要的box会含有多个entry,每个entry对应一个Representation,第一个entry对应第一个Representation,第二个entry对应第二个Representation,以此类推。

Subsegment:

Segment可能进一步划分为subsegment,每个subsegment由数个Acess Unit组成,Segment index提供了subsegment相对于Segment的字节范围和presentation time range 。客户端可以先下载Segment index。

Subset:

每个Period可能包含多个Subset,Subset定义 了一个集合,该集合包含1个或者多个AdaptationSet。客户端在播放mpeg dash流时,要求任何时间播放的所有AdaptationSets必须是某个Subset包含的AdaptationSets的一个子集。

SAP和无缝切换以及SEEK

SAP:Stream Acess Point,可以简单理解为I帧,每个Segment的第一个帧都是SAP,因此Seek时可直接Seek到某一个Segment的起始位置,利用Init Segment+Seek到的某个Segment的数据,在解封装后可实现完美解码。一般来说,同一个Adaptation set中的多个Representation是Segment Align的(当Adaptation set的属性@segmentAlignment不为false时),因此,当从Representation A切换到Representation B时,如果当前Representation A的第N个Segment已经下载完成,切换时直接下载Representation B的第N+1个Segment即可。

时间: 2024-10-07 03:19:05

MPEG DASH基本概念的相关文章

DASH简介及使用方法(FFmpeg, MP4Box)

DASH 为什么选择DASH YouTube采用DASH!其网页端及移动端APP都使用了DASH.DASH的其他采用者包括:Netflix, Hulu, - 什么是DASH 一种服务端.客户端的流媒体解决方案: 服务端: 将视频内容分割为一个个分片,每个分片可以存在不同的编码形式(不同的codec.profile.分辨率.码率等): 播放器端: 就可以根据自由选择需要播放的媒体分片:可以实现adaptive bitrate streaming技术.不同画质内容无缝切换,提供更好的播放体验. DA

Android 流媒体播放 live streaming

安卓支持的协议 RTSP (RTP, SDP)HTTP/HTTPS progressive streamingDynamic adaptive streaming on HTTP => MPEG DASHHTTP/HTTPS live streaming => VLS (m3u, m3u8) 不支持的协议RTMP (Real Time Messaging Protocol)HDS (Adobe HTTP Dynamic Streaming)Microsoft Smooth Streaming

RFC 3986 URI的结构

mpeg dash 的element BaseURL语法规则遵循RFC 3986,需要做简单了解: I.1 URI各个部分的名称 foo://example.com:8042/over/there?name=ferret#nose \_/   \______________/\_________/ \_________/ \__/ |                   |                          |                     |             

Adaptive Streaming 学习笔记之一

有了时间就打算做点事情.打算在这里记录自己在学习多媒体信息系统方面的一些点滴,希望能够在将来能够对自己的这也生涯有所裨益.从今天开始,我准备介绍如何从零开始掌握主流的Adaptive Streaming技术的系列学习笔记. 首先给出几个有用的链接: http://www.zhihu.com/question/20621558 http://www.garymcgath.com/streamingprotocols.html http://www.streamingmedia.com/Articl

[Android 新特性] Android 4.3 Top 5新功能

直播会上,Android 4.3不像Nexus 7那么Sexy,也没有Chromecast电视棒那样惹人注目,但它有许多强悍的新特点,下面来看看Top 5. 1. 权限配置 支持在一台终端设备上有多个帐号登录,但有内容限制(Restricted Profiles),比如通过内容权限设置,可以阻止你的小孩从Google Play里下载付费游戏或app. 2. OpenGL ES 3.0 全新的OpenGL ES 3.0,对用户来说,将为你的图片.视频观看.游戏带来高质量的图像品质体验.对开发者来说

HTTP Adaptive Streaming

HTTP Adaptive Streaming简称HAS,中文名称为码流自适应.随着这几年移动终端对视频播放需求的增长,HAS技术慢慢火热起来. HAS技术中流媒体服务器端需要准备各种码率的媒体数据,然后对每种码率的媒体数据都进行切割分片,每个切片时长一直,大概2~10秒钟,每个切片由一个完整的GOP序列组成,一个GOP序列里面有1个或者多个I帧,GOP序列的第一个帧必须是I帧,并且每个切片都能单独的解码播放显示.切片时需要建立每种码率切片的索引文件,以便客户端定位播放. HAS技术中流媒体播放

azure 上传blob到ams(CreateFromBlob)

遇到的错误:The destination storage credentials must contain the account key credentials,参数名: destinationStorageCredentials 解决方法:AccountName与AccountKey参数值错误 AccountName就是存储账户名字 AccountKey值获取方式:打开存储账户-->访问秘钥-->key1或者key2 Azure上传资产SDK public class AzureMedi

MPEG学习

Mpeg:moving picture experts group 移动图片专家组 视频压缩:    视频和音频都是数据化处理,那么这种数据化处理又是怎么样的呢,当然了还包括脉冲编码调制.虽然数据化处理达到了精准,但是其内容的庞大性需要占据存储器和宽带传输,所以引入压缩的概念.信息源中的信息存在冗余,所以采用压缩是一项必要的工作.无损压缩和有损压缩.有损压缩就是去除不相关的信息或者相关度比较低的信息来实现压缩.    什么是空间冗余: 图像中有一片连续的区域,这个区域的像素都是相同的颜色,那么空

mpeg文件格式分析

MPEG-1流比特层次结构分析总结 1.简要介绍Mpeg 2.Mpeg-1数据流分析 2.1视频序列层(VideoStream) 2.2画面组层(GOP) 2.3画面层(Pictures) 2.4片层(Slice) 2.5宏块层(Macroblock) 2.6块层(Block) 3.加密位置的思考 附录 MPEG-1流比特层次结构分析总结 1.简要介绍Mpeg Mpeg是Motion Picture Expert Group的缩写.活动图像专家组是在1988年由ISO和IEC联合成立的专家组,负