MPEG DASH基本概念


MPEG DASH作為三大流媒體協議之一,誕生的目的是為了統一標准,因此是兼容SmoothStreaming和HLS的,然而協議內容較多,相對復雜,從各自協議的頁數對比就能看出。

 

MPD:Media Presentation Description.

    描述整個mpeg dash碼流的構成,相當於HLS協議的m3u8文件,MPD是一個XML Document,通過MPD的內容可以構造出用於HTTP GET下載的URLMPD文件可以被加密,請參考http://www.w3.org/TR/xmlenc-core/,可以使用數字簽名和驗證,請參考http://www.w3.org/TR/xmldsig-core/。

    注:XML標准是由W3C制定的,關於XML schemahttp://www.w3.org/2001/XMLSchema。

 

MpegdashHLS,以及Smooth Streaming的對比:

    Smooth Streaming我自己不太了解。mpeg dash試圖同時兼容這兩種協議,因此顯得更為復雜,同時支持TS profile和 ISO profile,支持節目觀看等級控制,支持父母鎖?mpeg dash支持的DRM類型包括PlayReadyMarlin,而HLS支持的是AES128密鑰長度為128位的高級加密標准Advanced Encryption Standard)加密類型。

 

Period:

    一條完整的mpeg dash碼流可能由一個或多個Period構成,每個Period代表某一個時間段。比如某條碼流有60秒時間,Period1從0-15秒,Period216秒到40秒,Period341秒到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 componentRepresentationmedia stream的關系:

    一個media content component可包含多個不同的編碼版本(Encoded Versions),每一個編碼版本都是一個media stream,每個Representation可包含1..Nmedia streamTS 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 listSegment templateSingle segment

 

Initialization Segment

    RepresentationSegments一般都采用1Init 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 boxavCc 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可能包含多個SubsetSubset定義 了一個集合,該集合包含1個或者多個AdaptationSet。客戶端在播放mpeg dash流時,要求任何時間播放的所有AdaptationSets必須是某個Subset包含的AdaptationSets的一個子集。

 

SAP和無縫切換以及SEEK

    SAPStream Acess Point,可以簡單理解為I幀,每個Segment的第一個幀都是SAP,因此Seek時可直接Seek到某一個Segment的起始位置,利用Init Segment+Seek到的某個Segment的數據,在解封裝后可實現完美解碼。一般來說,同一個Adaptation set中的多個RepresentationSegment Align的(當Adaptation set的屬性@segmentAlignment不為false時),因此,當從Representation A切換到Representation B時,如果當前Representation A的第NSegment已經下載完成,切換時直接下載Representation B的第N+1Segment即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM