Adaptation Set 包含了一个媒体流或者一组媒体流,最简单的情况下,一个Period用一个Adaptation Set包含所有的视频和音频,但是为了减少带宽每个流可以分到独立的Adaptation Set里。常见做法就是一个视频流,多个音频流(多语言)。Adaptation Set也可以包含字母或者Arbitrary元信息。
Representation
Representation可以让一个Adaptation Set 通过不同的方式包含同一个内容。大部分情况下Representation用来提供不同屏幕尺寸和带宽,这样就可以让客户端在不缓冲的情况下选择最高的画质,并且不会浪费带宽来获取不需要的分辨率(720P的屏幕不需要1080P的画质)。Representation还可以用不同的编码,允许不同的客户端选择其支持的编码格式(比如浏览器中,有些支持MPEG-4AVC/H.264,另一些支持VP8),或者提供更高的质量的Representation给更新客户端,并且同时还支持老的(比如同时提供H264和H265)。多个编码格式在需要省电的设备上也很有用,有些设备可能会选择老的编码,因为它可以硬解(即便它可以软解更新的编码格式)。
Media Segment是DASH客户端实际播放的媒体文件, 通常是一个接一个地播放,就好像他们是同一个文件一样(当然在切换Representation时要复杂的多)。格式问题会在我的另一篇关于profiles的文章中讲到,但是MPEG中描述的两个容器:ISO Base Media File Format(ISOBMFF)是和MPEG-4类似的容器格式;MPEG-TS。Dash里的WebM在这里描述http://wiki.webmproject.org/adaptive-streaming/webm-dash-specification
Media Segment的地址可以用BaseURL来描述一个单段Representation,Segment的列表或者模版(SegmentTemplate)。SegmentBase里的信息会应用到所有的segment上。Segment开始时间和持续时间可以用SegmentTimeline来描述(对于直播流特别重要,使客户端可以快速决定最新的一段)。这个信息也可以在MPD的更高层出现,这种情况下,这个信息主要提供的是默认的信息,除非XML结构的底层覆盖了这个信息。这一点是SegmentTemplate最有用的地方。
Index Segment有两种类型:一个Representation用一个Presentation Index Segment,或者一个Media Segment配一个Single Index Segment。Presentation Index Segment永远是一个单独的文件,而Single Index Segment可以是同和Media Segment同一个文件的字节范围。