基於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的自適應比特率串流解決方案，它也是一項國際標準。MPEG-DASH不應該與傳輸協議混淆——MPEG-DASH使用TCP傳輸協議。
MPEG-DASH使用現有的HTTP網絡服務器基礎設施。它允許如互聯網電視、電視機頂盒、臺式電腦、智能手機、平板電腦等設備消費通過互聯網傳送的多媒體內容（如視頻、電視、廣播等），並可應對變動的互聯網接收條件。自適應流解決方案的標準化是為向市場提供信心，使該解決方案可以用於通用部署，抗衡類似但更專有的解決方案，如微軟Smooth Streaming與Adobe的HDS。
不同於HLS、HDS和Smooth Streaming，DASH不關心編解碼器，因此它可以接受任何Video coding format編碼的內容，如H.265、H.264、VP9等。

**標準化**
MPEG-DASH技術在MPEG之下開發。對DASH的工作始於2010年。2011年1月，它成為一項國際標準草案，並在2011年11月成為國際標準。MPEG-DASH標準已於2012年4月發佈為 ISO/IEC 23009-1:2012 date=20200826031107 。
DASH是一項與Adobe Systems HTTP Dynamic Streaming、蘋果公司HTTP Live Streaming（HLS）微軟Smooth Streaming相關的技術。DASH基於3GPP第9版中的Adaptive HTTP streaming（AHS）和Open IPTV Forum Release 2中的HTTP Adaptive Streaming（HAS）。作為與MPEG協作的一部分，3GPP Release 10採用DASH（具有特定的編解碼器和操作模式）用於無線網絡。
DASH行業論壇（DASH-IF）進一步促進和催化了MPEG-DASH的採用，並幫助將其從規範轉變為實際業務。主要的流媒體和媒體公司，包括微軟、Netflix、Google、愛立信、三星、Adobe等都在實際業務中嘗試使用，併為不同使用環境創建了DASH使用指南。
MPEG-DASH也被集成在其他標準中，例如HbbTV中的MPEG-DASH支持（截至1.5版本）。

**概述**
DASH是一項自適性串流技術，其將多媒體文件分割為一個或多個片段，並使用超文本傳輸協議傳遞給客戶端。
媒體演示描述（Media Presentation Description）描述片段信息（計時、統一資源定位符，以及媒體特徵，例如視頻分辨率和比特率），並且可以根據使用環境以不同的方式組織，例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline。
片段可以包含任何媒體數據，但是規範提供了與兩種容器類型一起使用的特定指導和格式：ISO基礎媒體文件格式（例如MP4文件格式）或MPEG-2傳輸流。
DASH不關心音頻/視頻的編解碼器。多媒體文件通常有一種或多種表示（即不同分辨率或比特率版本），並可基於不同的網絡條件、設備功能和用戶偏好進行選擇，達到自適性串流和QoE (Quality of Experience) fairness。DASH也與底層的應用層協議無關，因此可以配合任何協議中使用。例如，基於CCN的DASH。
2015年7月27日，MPEG LA宣佈呼籲與MPEG-DASH相關的專利，以便為該技術創建一個專利池。

**實現**
通過ExoPlayer，MPEG-DASH在Android上可原生使用，如三星智能電視2012+、LG智能電視2012+、索尼電視2012+、飛利浦NetTV 4.1+、松下Viera 2013+和Chromecast。YouTube以及Netflix已經支持MPEG-DASH，並且可使用多種MPEG-DASH播放器。
中國大陸方面，bilibili已經支持MPEG-DASH。
雖然HTML5不直接支持MPEG-DASH，但是已有一些MPEG-DASH的JavaScript實現允許在網頁瀏覽器中通過HTML5 Media Source Extensions（MSE）使用MPEG-DASH。另有其他JavaScript實現，如bitdash播放器支持使用HTML5加密媒體擴展播放有DRM的MPEG-DASH。當WebGL結合使用，MPEG-DASH基於HTML5的自適應比特率流還可實現360°視頻的即時和按需的高效流式傳輸。

**客戶端和程序庫**
 Dash.js是Dash行業論壇官方參考和生產播放器。- Shaka是出自Google的開源dash播放器。- VLC多媒體播放器3.0將為MP4/MPEG和即時流媒體發佈一個新客戶端插件。
*跨平臺FOSS多媒體框架GStreamer自從至少1.4版本以來支持MPEG-DASH和WebM DASH。- 開源程序庫libdash獨立於平臺，可在Android、iOS、Windows Phone等移動平臺上運行。- bitmovin為HTML5和Flash提供了bitdash MPEG-DASH播放器。-  THEOplayer date=20170831000741 目前正在尋找夥伴來測試他們的MPEG-DASH視頻播放器。 - Viblast Player支持HTML5中的MPEG-DASH，併為iOS和Android提供SDK。- 巴黎電信學院中GPAC的OSMO4支持MPEG-DASH。- 克拉根福大學ITEC中的DASH-JS支持MPEG-DASH。- Radiant Media Player支持HTML5中的MPEG-DASH（DASH264和WebM DASH）。- Videogular是AngularJS面向桌面和移動平臺提供的一個視頻應用框架，AngularJS為HTML5提供的視頻播放器-  libndash date=20200917155723 是一個開源（Apache許可證）的C++程序庫，提供構建一個全功能MPEG-DASH媒體播放器所需的所有功能（不包括解碼/渲染幀到顯示器）。

**服務器**
請注意，除了Live Streaming外，DASH內容不需要服務器的特定支持。- Brightcove Zencoder已支持MPEG-DASH transmuxing/transcoding。- Elemental Technologies視頻處理解決方案支持DASH。- Helix Universal Server已支持各種模式下的DASH。- nginx-rtmp-module支持生成MPEG-DASH即時流。但在1.2.0版本以前，只能使用dash.js的修改版本和bitdash播放。- nginx-ts-module支持即時MPEG-DASH- Nimble Streamer有即時和點播MPEG-DASH的支持。對點播來說，它支持H.265和H.264編解碼器- Unified Origin支持MPEG-DASH。

**服務**
 Amazon Web Services  Elastic Transcoder date=20210119084319 已支持MPEG-DASH。- Level 3通信 CDN支持DASH。- Akamai CDN支持DASH。- Amazon CloudFront CDN支持DASH。- Azure Media Services平臺已支持MPEG-DASH。- bitmovin提供的雲轉碼服務bitcodin.com支持MPEG-DASH。- Limelight Networks CDN支持DASH。- Tata Communications CDN支持DASH。- StreamRoot的混合CDN模型支持MPEG-DASH。- ScaleEngine Video CDN支持DASH。

**內容生成器**
 ITEC的DASHEncoder。- MP4Box及其來自Telecom ParisTech的GPAC的多媒體框架- 巴黎電訊的dashcast支持MPEG-DASH即時流- MediaGoom MPEG-DASH Packager- Bento4開源工具和SDK

**其他**
 ITEC為MPEG-DASH媒體演示描述（MPD）文件提供驗證服務- Alpen-Adria克拉根福大學的信息技術研究所（ITEC）、巴黎電信學院GPAC小組和Digital TV Labs已提供多個DASH數據集。- BBC有DASH測試流，包括基於HTTP/2的DASH。

**參考資料**

**外部鏈接**
  MPEG-DASH Standard date=20200927232058 -  DASH subscription mailing list date=20140307184030 -  DASH research at Alpen-Adria Universität Klagenfurtdate=2013-04-03 -  Mailing list of the open-source DASH client library libdash