Dash Hls SmoothStreaming manifest 文件字段解释
来源:互联网 发布:c语言流程图怎么画 编辑:程序博客网 时间:2024/06/11 02:43
DASH
manfest 中以 .mpd 结尾
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" type="static" mediaPresentationDuration="PT25.959S" availabilityStartTime="2012-12-17T15:56:16Z" maxSegmentDuration="PT2.080S" minBufferTime="PT2.001S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period id="0">
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" maxWidth="640" maxHeight="360" maxFrameRate="30000/1001" par="16:9">
<SegmentTemplate presentationTimeOffset="9498" timescale="90000" initialization="seg_$RepresentationID$_init.mp4" media="seg_$RepresentationID$_n$Number$.mp4" duration="180000" startNumber="0"/>
<Representation id="b1000k_v" width="640" height="360" frameRate="30000/1001" sar="1:1" scanType="progressive" bandwidth="1000000" codecs="avc1.4D401E"/>
</AdaptationSet>
<AdaptationSet mimeType="audio/mp4" lang="en" segmentAlignment="true" startWithSAP="1"><SegmentTemplate presentationTimeOffset="2533" timescale="24000" initialization="seg_$RepresentationID$_init.mp4" media="seg_$RepresentationID$_n$Number$.mp4" duration="48000" startNumber="0"/>
<Representation id="a" audioSamplingRate="24000" bandwidth="64000" codecs="mp4a.40.5">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
</Representation>
</AdaptationSet></Period></MPD>
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即可。
HLS
主manifest 编写:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
gear1/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
gear2/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
gear3/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
gear4/prog_index.m3u8
gear1/prog_index.m3u8 是子manifest,在对应的相对路径下可以寻找到:
子manifest片段:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, no desc
fileSequence0.ts
#EXTINF:10, no desc
fileSequence1.ts
#EXTINF:10, no desc
fileSequence2.ts
#EXTINF:10, no desc
fileSequence3.ts
#EXTINF:10, no desc
fileSequence4.ts
HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
1、M3U8文件
用文本方式对媒体文件进行描述,由一系列标签组成。
#EXTM3U
#EXT-X-TARGETDURATION:5
#EXTINF:5,
./0.ts
#EXTINF:5,
./1.ts
#EXTM3U:每个M3U8文件第一行必须是这个tag。
#EXT-X-TARGETDURATION:指定最大的媒体段时间长度(秒),#EXTINF中指定的时间长度必须小于或等于这个最大值。该值只能出现一次。
#EXTINF:描述单个媒体文件的长度。后面为媒体文件,如./0.ts
2、ts文件
ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3。
ts文件分为三层:ts层Transport Stream、pes层 Packet Elemental Stream、es层 Elementary Stream. es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层就是在pes层加入数据流的识别和传输必须的信息
smoothstreaming
manifest 以 .ism结尾,并有一个附属文件ismc共同描述了一个content.
- Dash Hls SmoothStreaming manifest 文件字段解释
- [译] Android ExoPlayer Rtmp HLS DASH SmoothStreaming 其他
- MPEG DASH MPD文件字段解释
- MPEG DASH MPD文件字段解释
- ANDROID的MANIFEST.XML文件字段解析
- ANDROID的MANIFEST.XML文件字段解析
- HLS/MPEG-DASH/RTMP with nginx
- HLS/MPEG-DASH/RTMP with nginx
- 流媒体通信协议HLS与DASH的对比
- HLS/MPEG-DASH/RTMP with nginx
- ffmpeg中HLS和DASH切片
- 流媒体通信协议HLS与DASH的对比
- 流媒体通信协议HLS与DASH的对比
- 一篇介绍MSE, EME, hls, dash, html5的文章
- manifest 文件
- Manifest 文件
- manifest文件
- Manifest文件
- PCB中阻抗计算
- NumberAnimTextView
- My F
- 代理
- LeetCode 189 Rotate Array题解
- Dash Hls SmoothStreaming manifest 文件字段解释
- lwip MAC FRAME
- 指定视图的圆角个数
- OpenCV4Android学习之图像基本特征检测
- 关于Android Studio如何隐藏标题
- struts中的cookie登陆
- 中科爱讯双WiFi探针TZ007实际测试环境搭建
- Struts2配置详解_配置Action
- PC通过ADB控制Android手机模拟点击,滑动,输入等事件(包括控制多台Android手机)