注:英語太爛基礎太差,本翻譯文檔僅供本中本身參考,包含一大堆本身YY的意譯。並且我如今以爲看白皮書啥用沒有,還得把標準仔細讀一遍才行,大坑!web
BTW吐槽,這個白皮書的做者英語真的很爛,寫做也很隨意,真不知道這玩意兒咋發佈的緩存
注:MPEG-DASH標準中第1-4部分爲核心功能,一些版本:服務器
編號:ISO/IEC JTC 1/SC 29/WG 11 N16708websocket
時間:2017年1月網絡
標題:MPEG-DASH新功能白皮書架構
隨着2012年4月MPEG-DASH標準初版(ISO/IEC 23009-1)的發佈,對於這第一個將整個行業兼容到同一流媒體協議中的開放國際標準,網絡視頻媒體業表現出極大的關注度。該標準由流媒體行業大量技術領先的公司共同制定,用開放的、任何人可用的單一標準,實現了更佳更爲有效的技術。這是首個真正具備兼容性、融合度的流媒體協議,基於此標準,服務提供商們能夠大大減小他們的內容副本。 異步
MPEG-DASH標準(ISO/IEC 23009)目前包含6個部分。第一部分[1]定義了協議的MPD(Media Description Presentation)文件和分片格式,這是該規範的核心部分。DASH標準能夠在包括HTTP/1.1在內的諸多傳輸協議上使用。這部分並未指定具體的編碼標準,它容許使用任何能被封裝在MP4[2]或TS文件中的編碼器。這部分給出了MPD文件的定義,用於描述媒體內容的時序模型。其中,表示(Representation)被用來描述媒體內容,同一內容的全部表示(如碼率、分辨率、幀率等)集合稱爲一個自適應子集(Adaptation Set)。MPD文件在內容註解方面表現極佳。對每一個媒體組件,MPD能夠定義它的角色、可訪問性、視角、音軌乃至DRM(數字版權管理)和加密信息(針對受版權保護的內容)。MPD文件的更新機制可用於添加新的內容,這在直播場景中尤其重要。同時,它還支持多CDN及多分片尋址方案。socket
MPEG-DASH標準中的媒體分片格式支持將媒體內容按分片傳輸(乃至按子分片的粒度)。將分片按序組合,能夠構成完整的媒體流。正確編碼生成的分片,保證了網絡波動時DASH客戶端在多個表示之間無縫切換。ide
該標準第一部分初版於2012年發佈,兩年後,MPEG增長了包括事件消息和屬性標識符在內的附加功能。事件消息用於傳遞時間軸事件,能夠在MPD文件或媒體分片中存在。它爲DASH客戶端或使用DASH客戶端的應用提供了一種發送稀疏信息的靈活機制。好比,MPD更新事件用於通知客戶端對所使用的MPD文件進行更新,SCTE35消息也能夠插入某個事件中,用來通知有廣告插入。工具
從2014年之內,MPEG-DASH第一部分已經增長了許多新的功能,預計將在2017年上半年發佈的第三版中包含。在此,咱們列舉其中的一些最新的功能。
因爲大尺寸/多攝像機等場景的普及,一體式傳輸這些場景下的視頻內容可能效率不高,取而代之,能夠將視頻劃分爲拼接陣列,客戶端只需獲取與其視角相關的流媒體分片數據。MPD文件中的空間關係描述(Spatial Relationship Description,SRD)工具標識了拼接視頻塊相對於整個視頻的座標和大小。這些信息使得客戶端能夠計算每一個拼接視頻塊的相對位置,所以,客戶端能夠決定是傳輸一小部分視頻塊覆蓋的小片區域,或是同時傳輸每一個獨立的視頻塊來覆蓋整個視頻。SRD提供了一個很是靈活的座標系,容許重疊、ROI拼接及不一樣大小分塊的拼接。SRD是VR流高效傳輸的關鍵技術之一。
MPD文件能夠在當前所有節目的組合預覽頻道與每一個單一的節目/音軌之間創建關聯。在觀看組合頻道的內容時,用戶能夠瀏覽到全部的節目,並決定本身想選擇的某個頻道。而後,用戶點擊並選擇,播放端開始全屏播放當前頻道的內容。外部MPD連接(External MPD Linking)[4]爲這種場景提供支持。在組合頻道的MPD文件中,每一個節目用一個空的自適應子集(Adaptation Set,AS)來表示,用來描述該節目頻道的AS,存在於每一個頻道自身的MPD文件中。連接機制容許從組合頻道MPD文件中的空AS跳轉至對應頻道的MPD文件。
媒體會話中的時間線能夠劃分爲多個時段。MPD文件中的區段(Period)就是將時間軸分段的簡易途徑。該機制容許在MPD文件中插入動態廣告的區段,或直播場景中加入新的區段。因爲不屬於同一媒體流的區段也能夠順序播放(好比動態廣告插入場景中,先播放媒體流的一個區段,緊接着播放廣告內容的區段,而後繼續播放媒體流區段),DASH中給出了一個標識[4]用於標記當前區段與前一區段是否具有連續性。區段連續性標識還爲區段切換期間的時間戳校準提供了參考。
在以廣告驅動的流服務中,在正式流媒體內容前播放貼片廣告是經常使用的一項功能。在這種場景下,當用戶選擇了某一內容時,貼片廣告應在媒體內容前被播放,所選擇的媒體內容能夠是點播(提早錄製存儲)或直播(實時產生)。點播場景下支持貼片廣告較爲簡單:只需建立一個新的MPD文件,將廣告的區段放在媒體內容的區段前便可。但直播場景下存在一個問題,咱們指望看到的是,用戶點擊時,先播廣告,而後再創建直播鏈路開始播放直播流。但直播中每個時間點的內容都不同,很難組建一個新的MPD文件。爲此,MPEG標準中提出了MPD鏈(MPD chaining)工具,容許兩個以上的MPD文件互相連接。這樣,播放器能夠先將第一個MPD對應內容(好比,廣告的)播放完成,再用直播當前的MPD文件開始播放。
本工具在MPEG-DASH標準第二版第四修訂案[5]中也有說起,它將碼流的切換點及隨機接入點(RAP)標識進行了區分。切換點用於動態碼率調整時實現無縫切換,而隨機接入點則表示能夠在該處開始播放(好比頻道切換時)。在DASH的基本屬性中,爲了相對簡單的格式實現,切換點和隨機接入點是一樣的。但隨機接入點的增長會致使切換點的對應增長,這樣將形成壓縮率的降低(因爲產生了更多的IDR幀)。靈活分片格式(Flexible Segment Format)機制容許拆分切換點和隨機接入點。基於此,媒體內容能夠用較高的壓縮率編碼,保證較多隨機接入點的同時,減小切換點的數目。這種機制對流媒體和廣播電視(混合傳輸)都適用。
DASH客戶端能夠基於可用帶寬和其餘本地資源,用客戶端拉取方式來調整它們的請求。事實證實,這比在CDN上部署服務端推送機制更爲容易。然而,當須要爲高級用戶提供持續的、更高質量服務時,DASH的這種分散性帶來了新的挑戰。好比,如下場景時服務質量可能受到影響:
MPEG-DASH標準第五部分:DASH的服務端和網絡支持(Server and Network-assisted DASH,SAND)[6]解決了以上這些問題。SAND的關鍵功能是實現了網絡到客戶端、網絡與網絡之間對於質量相關信息的異步通訊。
HTTP/2和WebSocket的引入和部署,爲DASH提供了基於這些協議傳輸及使用其優越性的機會。HTTP/2和WebSocket都容許服務端啓動或客戶端啓動機制、數據請求取消機制、多個請求響應數據的複用。
DASH標準的第六部分[7]爲每種協議提供了服務端推送模式下的交互操做。該規範定義了當客戶端發送多個請求時,服務端如何合併響應並推送。每一個推送指令都定義了不一樣的推送策略。好比,使用按需推送(push-next)指令,客戶端請求服務端推送後續的K個分片,其中K值由客戶端定義;使用按時推送(push-time)指令,客戶端請求服務端在接下來的N秒內推送當前流的全部可用分片,其中N值由客戶端定義;使用按列表(push-list)指令,客戶端請求服務端推送指定列表中的對應分片。該規範還定義了服務端響應指令時的推送確認消息。
基於服務端推送和WebSocket傳輸的DASH流主要用於低延時直播場景。這種狀況下,客戶端接收的數據在時序上很是接近播放點。爲了減小延遲,應在儘量短的時間內將分片發送到客戶端上。在這種場景下,若是服務端已收到相應的推送指令,就無需等待來自客戶端的HTTP GET請求,當服務器上某個數據分片可用時,直接將其推送到客戶端。