基於HTTP的動態自適應流

基於HTTP的動態自適應流(英語:Dynamic Adaptive Streaming over HTTP,縮寫DASH,也稱MPEG-DASH)是一種自適應位元速率串流技術,使高質素串流媒體可以通過傳統的HTTP網絡伺服器以互聯網傳遞。類似蘋果公司HTTP Live Streaming(HLS)方案,MPEG-DASH會將內容分解成一系列小型的基於HTTP的檔案片段,每個片段包含很短長度的可播放內容,而內容總長度可能長達數小時(例如電影或體育賽事直播)。內容將被製成多種位元速率的備選片段,以提供多種位元速率的版本供選用。當內容被MPEG-DASH客戶端回放時,客戶端將根據當前網絡條件自動選擇下載和播放哪一個備選方案。客戶端將選擇可及時下載的最高位元速率片段進行播放,從而避免播放卡頓或重新緩衝事件。也因如此,MPEG-DASH客戶端可以無縫適應不斷變化的網絡條件並提供高質素的播放體驗,擁有更少的卡頓與重新緩衝發生率。

MPEG-DASH是首個基於HTTP的自適應位元速率串流解決方案,它也是一項國際標準。[1]MPEG-DASH不應該與傳輸協定混淆——MPEG-DASH使用TCP傳輸協定。

MPEG-DASH使用現有的HTTP網絡伺服器基礎設施。它允許如互聯網電視、電視機頂盒桌上電腦智能電話平板電腦等裝置消費通過互聯網傳送的多媒體內容(如影片電視廣播等),並可應對變動的互聯網接收條件。自適應流解決方案的標準化是為向市場提供信心,使該解決方案可以用於通用部署,抗衡類似但更專有的解決方案,如微軟Smooth Streaming與Adobe的HDS。

不同於HLS、HDS和Smooth Streaming,DASH不關心編解碼器,因此它可以接受任何編碼格式英語Video coding format編碼的內容,如H.265H.264VP9等。[2]

標準化

編輯

MPEG-DASH技術在MPEG之下開發。對DASH的工作始於2010年。2011年1月,它成為一項國際標準草案,並在2011年11月成為國際標準。[3]MPEG-DASH標準已於2012年4月發佈為ISO/IEC 23009-1:2012頁面存檔備份,存於互聯網檔案館)。

DASH是一項與Adobe Systems HTTP Dynamic Streaming蘋果公司HTTP Live Streaming(HLS)微軟Smooth Streaming相關的技術。DASH基於3GPP第9版中的Adaptive HTTP streaming(AHS)和Open IPTV Forum英語Open IPTV Forum Release 2中的HTTP Adaptive Streaming(HAS)。[4][5]作為與MPEG協同運作的一部分,3GPP Release 10採用DASH(具有特定的編解碼器和操作模式)用於無線網絡。[4]

DASH行業討論區(DASH-IF英語DASH-IF[6]進一步促進和催化了MPEG-DASH的採用,並幫助將其從規範轉變為實際業務。主要的串流媒體和媒體公司,包括微軟、Netflix、Google、愛立信、三星、Adobe等都在實際業務中嘗試使用,並為不同使用環境建立了DASH使用指南。

MPEG-DASH也被整合在其他標準中,例如HbbTV中的MPEG-DASH支援(截至1.5版本)。[7]

概述

編輯

DASH是一項自適性串流技術,其將多媒體檔案分割為一個或多個片段,並使用超文字傳輸協定傳遞給客戶端。[8] 媒體演示描述(MPD)描述片段資訊(計時、統一資源定位符,以及媒體特徵,例如影片解像度和位元速率),並且可以根據使用環境以不同的方式組織,例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline。[9] 片段可以包含任何媒體數據,但是規範提供了與兩種容器類型一起使用的特定指導和格式:ISO基礎媒體檔案格式英語ISO base media file format(例如MP4檔案格式)或MPEG-2傳輸流

DASH不關心音頻/影片的編解碼器。多媒體檔案通常有一種或多種表示(即不同解像度或位元速率版本),並可基於不同的網絡條件、裝置功能和用戶偏好進行選擇,達到自適性串流[10]QoE (Quality of Experience) fairness英語Fairness_measure#QoE_fairness[11]DASH也與底層的應用層協定無關,因此可以配合任何協定中使用。例如,基於CCN英語Content centric networking的DASH。[12]

2015年7月27日,MPEG LA宣佈呼籲與MPEG-DASH相關的專利,以便為該技術建立一個專利池。[13]

實現

編輯

通過ExoPlayer,MPEG-DASH在Android上可原生使用,如三星智能電視2012+、LG智能電視2012+、索尼電視2012+、飛利浦NetTV 4.1+、松下Viera 2013+和Chromecast。[14]YouTube以及Netflix已經支援MPEG-DASH,並且可使用多種MPEG-DASH播放器。[15]

中國大陸方面,bilibili已經支援MPEG-DASH[16]

雖然HTML5不直接支援MPEG-DASH,但是已有一些MPEG-DASH的JavaScript實現允許在網頁瀏覽器中通過HTML5 Media Source Extensions(MSE)使用MPEG-DASH。[17]另有其他JavaScript實現,如bitdash播放器[18]支援使用HTML5加密媒體擴充播放有DRM的MPEG-DASH。[19]當WebGL結合使用,MPEG-DASH基於HTML5的自適應位元速率流還可實現360°影片的即時和按需的高效串流傳輸。[20]

客戶端和程式庫

編輯
  • Dash.js是Dash行業討論區官方參考和生產播放器。[21]
  • Shaka是出自Google的開源dash播放器。[22]
  • VLC多媒體播放器3.0將為MP4/MPEG和即時串流媒體發佈一個新客戶端外掛程式。[23][24][25]
  • 跨平台FOSS多媒體框架GStreamer自從至少1.4版本以來支援MPEG-DASH和WebM DASH。[26]
  • 開源程式庫libdash[27]獨立於平台,可在Android、iOS、Windows Phone等流動平台上執行。
  • bitmovin為HTML5和Flash提供了bitdash MPEG-DASH播放器。[28]
  • THEOplayer頁面存檔備份,存於互聯網檔案館)目前正在尋找夥伴來測試他們的MPEG-DASH影片播放器。[29]
  • Viblast Player支援HTML5中的MPEG-DASH,並為iOS和Android提供SDK。[30]
  • 巴黎電信學院中GPAC的OSMO4支援MPEG-DASH。[31]
  • 克拉根福大學ITEC中的DASH-JS支援MPEG-DASH。[32]
  • Radiant Media Player支援HTML5中的MPEG-DASH(DASH264和WebM DASH)。[33]
  • Videogular是AngularJS面向桌面和流動平台提供的一個影片應用框架,AngularJS為HTML5提供的影片播放器
  • libndash頁面存檔備份,存於互聯網檔案館)是一個開源(Apache許可證)的C++程式庫,提供構建一個全功能MPEG-DASH媒體播放器所需的所有功能(不包括解碼/渲染幀到顯示器)。

伺服器

編輯

請注意,除了Live Streaming外,DASH內容不需要伺服器的特定支援。

服務

編輯

內容生成器

編輯
  • ITEC的DASHEncoder。[47]
  • MP4Box及其來自Telecom ParisTech的GPAC的多媒體框架[48]
  • 巴黎電訊的dashcast支援MPEG-DASH即時流[49]
  • MediaGoom MPEG-DASH Packager[50]
  • Bento4開源工具和SDK[51]

其他

編輯
  • ITEC為MPEG-DASH媒體演示描述(MPD)檔案提供驗證服務
  • Alpen-Adria克拉根福大學的資訊科技研究所(ITEC)、巴黎電信學院GPAC小組和Digital TV Labs已提供多個DASH數據集。[52][53][54]
  • BBC有DASH測試流,包括基於HTTP/2的DASH。[55]

參考資料

編輯
  1. ^ MPEG ratifies its draft standard for DASH. MPEG. 2011-12-02 [2012-08-26]. (原始內容存檔於2012-08-20). 
  2. ^ MPEG-DASH vs. Apple HLS vs. Microsoft Smooth Streaming vs. Adobe HDS. 2015-03-29 [3 June 2016]. (原始內容存檔於2020-11-24). 
  3. ^ ISO/IEC DIS 23009-1.2 Dynamic adaptive streaming over HTTP (DASH). [2017-08-30]. (原始內容存檔於2017-01-29). 
  4. ^ 4.0 4.1 ETSI 3GPP 3GPP TS 26.247; Transparent end-to-end packet-switched streaming service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP (3GP-DASH)
  5. ^ Open IPTV Forum Solution Specification Volume 2a – HTTP Adaptive Streaming V2.1. [2017-08-30]. (原始內容存檔於2011-10-09). 
  6. ^ DASH Industry Forum
  7. ^ HbbTV Specification 1.5 (PDF). [2017-08-30]. (原始內容存檔 (PDF)於2014-07-03). 
  8. ^ Overview of Dynamic Adaptive Streaming over HTTP (DASH). [2017-08-30]. (原始內容存檔於2020-11-24). 
  9. ^ MPEG-DASH Overview. [2017-08-30]. (原始內容存檔於2016-03-08). 
  10. ^ 3GPP Dynamic Adaptive Streaming over HTTP – Standards and Design Principles頁面存檔備份,存於互聯網檔案館) by T. Stockhammer
  11. ^ Towards Network-wide QoE Fairness using OpenFlow-assisted Adaptive Video Streaming. [2017-08-30]. (原始內容存檔於2020-08-21). 
  12. ^ Y. Liu, J. Geurts, J.-P. Point, S. Lederer, B. Rainer, C. Mueller, C. Timmerer and H. Hellwagner, "Dynamic Adaptive Streaming over CCN: A Caching and Overhead Analysis", In Proceedings of the IEEE International Conference on Communication (ICC) 2013 – Next-Generation Networking Symposium, Budapest, Hungary, June, 2013. [2017-08-30]. (原始內容存檔於2019-02-06). 
  13. ^ MPEG LA Announces Call for Patents to Organize Joint License for MPEG-DASH (PDF). [2017-08-30]. (原始內容存檔 (PDF)於2015-08-07). 
  14. ^ Device Compatibility. [2017-08-30]. (原始內容存檔於2016-04-01). 
  15. ^ The Status of MPEG-DASH today, and why Youtube & Netflix use it in HTML5. [2017-08-30]. (原始內容存檔於2016-04-03). 
  16. ^ 关于引入DASH技术,提升用户播放体验的说明. [2020-02-26]. (原始內容存檔於2020-08-21). 
  17. ^ HTML5 Media Source Extensions. [2017-08-30]. (原始內容存檔於2019-03-23). 
  18. ^ bitdash DRM Testarea. [2017-08-30]. (原始內容存檔於2015-07-03). 
  19. ^ HTML5 Encrypted Media Extensions. [2017-08-30]. (原始內容存檔於2021-01-20). 
  20. ^ 360° Streaming in HTML5. [2017-08-30]. (原始內容存檔於2017-09-03). 
  21. ^ A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.. [2017-08-30]. (原始內容存檔於2021-01-14). 
  22. ^ Cimpanu, Catalin. Meet Shaka Player, Google's HTML5 Video Player for Low Bandwidth Conditions. Softpedia. 2015-08-24 [2016-08-13]. (原始內容存檔於2020-08-03). 
  23. ^ DASH at ITEC, VLC Plugin, DASHEncoder and Dataset頁面存檔備份,存於互聯網檔案館) by C. Mueller, S. Lederer, C. Timmerer
  24. ^ C. Müller and C. Timmerer, "A VLC Media Player Plugin enabling Dynamic Adaptive Streaming over HTTP", In Proceedings of the ACM Multimedia 2011 , Scottsdale, Arizona, November 28, 2011. (PDF). [2017-08-30]. (原始內容存檔 (PDF)於2020-09-04). 
  25. ^ VLC 3.0 features. [2017-08-30]. (原始內容存檔於2020-07-30). 
  26. ^ HTTP Adaptive streaming with GStreamer. [2017-08-30]. (原始內容存檔於2020-10-29). 
  27. ^ libdash: Open-source DASH client library頁面存檔備份,存於互聯網檔案館) by bitmovin Gmbh
  28. ^ bitdash MPEG-DASH Player Feature Details. [2017-08-30]. (原始內容存檔於2016-06-06). 
  29. ^ HLS HTML5 Video Player | THEOplayer. [2016-02-15]. (原始內容存檔於2021-01-04) (美國英語). 
  30. ^ 存档副本. [2017-08-30]. (原始內容存檔於2021-01-04). 
  31. ^ OSMO4 Player of GPAC. [2017-08-30]. (原始內容存檔於2016-03-17). 
  32. ^ DASH-JS at ITEC of Klagenfurt University. [2017-08-30]. (原始內容存檔於2019-02-20). 
  33. ^ Radiant Media Player Compatibility Table. [2017-08-30]. (原始內容存檔於2020-09-30). 
  34. ^ DASH Streaming and Playlists. [2017-08-30]. (原始內容存檔於2017-08-31). 
  35. ^ MPEG-DASH in nginx-rtmp-module 1.0.8. [2017-08-30]. (原始內容存檔於2017-08-31). 
  36. ^ MPEG-DASH improvements in nginx-rtmp-module 1.2.0. [2017-08-30]. (原始內容存檔於2017-11-19). 
  37. ^ MPEG-DASH live streaming in nginx-rtmp-module. [2017-08-30]. (原始內容存檔於2018-02-25). 
  38. ^ bitdash MPEG-DASH player for HTML5 and Flash. [2017-08-30]. (原始內容存檔於2016-07-10). 
  39. ^ Introducing nginx-ts-module for HLS and MPEG-DASH live streaming. [2017-08-30]. (原始內容存檔於2017-11-19). 
  40. ^ MPEG-DASH support in Nimble Streamer. [2017-08-30]. (原始內容存檔於2020-09-22). 
  41. ^ Netview and Unified Streaming streaming DASH. [2017-08-30]. (原始內容存檔於2015-04-02). 
  42. ^ USP Factsheet. [2017-08-30]. (原始內容存檔於2015-04-21). 
  43. ^ Amazon Elastic Transcoder Now Supports MPEG-DASH. Amazon Web Services, Inc. [2016-06-03]. (原始內容存檔於2021-01-19). 
  44. ^ Akamai Announces Native MPEG-DASH and HDS Support for Live Video Workflows. [2017-08-30]. (原始內容存檔於2015-05-13). 
  45. ^ MPEG-DASH and streaming reference and resources. [2017-08-30]. (原始內容存檔於2014-12-26). 
  46. ^ bitcodin.com Supported Formats. [2017-08-30]. (原始內容存檔於2016-03-28). 
  47. ^ S. Lederer, C. Mueller and C. Timmerer, "Dynamic Adaptive Streaming over HTTP Dataset", In Proceedings of the ACM Multimedia Systems Conference 2012, Chapel Hill, North Carolina, February 22-24, 2012. (PDF). [2017-08-30]. (原始內容存檔 (PDF)於2020-07-07). 
  48. ^ GPAC Telecom ParisTech. [2017-08-30]. (原始內容存檔於2016-11-21). 
  49. ^ dashcast of Telecom ParisTech. [2017-08-30]. (原始內容存檔於2016-08-04). 
  50. ^ MediaGoom. Essential Web Streaming.. [2021-01-20]. (原始內容存檔於2020-09-19). 
  51. ^ Bento4 MPEG DASH Documentation. [2017-08-30]. (原始內容存檔於2020-09-24). 
  52. ^ MPEG DASH Dataset Overview. [2017-08-30]. (原始內容存檔於2016-05-10). 
  53. ^ S. Lederer, C. Mueller, C. Timmerer, C. Concolato, J. Le Feuvre and K. Fliegel, Distributed DASH Dataset, In Proceedings of the ACM Conference on Multimedia Systems (ACM MMSys) 2013, Oslo, Norway, 2013.. [2017-08-30]. (原始內容存檔於2019-02-06). 
  54. ^ MPEG DASH Test Suite. [2017-08-30]. (原始內容存檔於2014-03-07). 
  55. ^ MPEG DASH Test Streams. [2017-08-30]. (原始內容存檔於2017-03-10). 

外部連結

編輯