<p><b>基於HTTP的動態自適應流</b>（英語：<span lang="en"><b>Dynamic Adaptive Streaming over HTTP</b></span>，縮寫<b>DASH</b>，也稱<b>MPEG-DASH</b>）是一種自適應位元速率串流技術，使高品質串流媒體可以通過傳統的HTTP網路伺服器以網際網路傳遞。類似蘋果公司的HTTP Live Streaming（HLS）方案，MPEG-DASH會將內容分解成一系列小型的基於HTTP的檔案片段，每個片段包含很短長度的可播放內容，而內容總長度可能長達數小時（例如電影或體育賽事直播）。內容將被製成多種位元速率的備選片段，以提供多種位元速率的版本供選用。當內容被MPEG-DASH客戶端回放時，客戶端將根據當前網路條件自動選擇下載和播放哪一個備選方案。客戶端將選擇可及時下載的最高位元速率片段進行播放，從而避免播放卡頓或重新緩衝事件。也因如此，MPEG-DASH客戶端可以無縫適應不斷變化的網路條件並提供高品質的播放體驗，擁有更少的卡頓與重新緩衝發生率。
</p><p>MPEG-DASH是首個基於HTTP的自適應位元速率串流解決方案，它也是一項國際標準。MPEG-DASH不應該與傳輸協定混淆——MPEG-DASH使用TCP傳輸協定。
</p><p>MPEG-DASH使用現有的HTTP網路伺服器基礎設施。它允許如網際網路電視、電視機上盒、桌上型電腦、智慧型手機、平板電腦等裝置消費通過網際網路傳送的多媒體內容（如影片、電視、廣播等），並可應對變動的網際網路接收條件。自適應流解決方案的標準化是為向市場提供信心，使該解決方案可以用於通用部署，抗衡類似但更專有的解決方案，如微軟Smooth Streaming與Adobe的HDS。
</p><p>不同於HLS、HDS和Smooth Streaming，DASH不關心編解碼器，因此它可以接受任何<span data-orig-title="编码格式" data-lang-code="en" data-lang-name="英語" data-foreign-title="Video coding format"><span>編碼格式</span></span>編碼的內容，如H.265、H.264、VP9等。</p>


<h2><span id=".E6.A0.87.E5.87.86.E5.8C.96"></span><span id="标准化">標準化</span></h2>
<p>MPEG-DASH技術在MPEG之下開發。對DASH的工作始於2010年。2011年1月，它成為一項國際標準草案，並在2011年11月成為國際標準。MPEG-DASH標準已於2012年4月發布為ISO/IEC 23009-1:2012 （頁面存檔備份，存於網際網路檔案館）。
</p><p>DASH是一項與Adobe Systems HTTP Dynamic Streaming、蘋果公司HTTP Live Streaming（HLS）微軟Smooth Streaming相關的技術。DASH基於3GPP第9版中的Adaptive HTTP streaming（AHS）和<span data-orig-title="Open IPTV Forum" data-lang-code="en" data-lang-name="英語" data-foreign-title="Open IPTV Forum"><span>Open IPTV Forum</span></span> Release 2中的HTTP Adaptive Streaming（HAS）。作為與MPEG協同運作的一部分，3GPP Release 10採用DASH（具有特定的編解碼器和操作模式）用於無線網路。</p><p>DASH行業論壇（<span data-orig-title="DASH-IF" data-lang-code="en" data-lang-name="英語" data-foreign-title="DASH-IF"><span>DASH-IF</span></span>）進一步促進和催化了MPEG-DASH的採用，並幫助將其從規範轉變為實際業務。主要的串流媒體和媒體公司，包括微軟、Netflix、Google、愛立信、三星、Adobe等都在實際業務中嘗試使用，並為不同使用環境建立了DASH使用指南。
</p><p>MPEG-DASH也被整合在其他標準中，例如HbbTV中的MPEG-DASH支援（截至1.5版本）。</p>
<h2><span id=".E6.A6.82.E8.BF.B0"></span><span id="概述">概述</span></h2>
<p>DASH是一項自適性串流技術，其將多媒體檔案分割為一個或多個片段，並使用超文字傳輸協定傳遞給客戶端。
媒體演示描述（MPD）描述片段資訊（計時、統一資源定位符，以及媒體特徵，例如影片解析度和位元速率），並且可以根據使用環境以不同的方式組織，例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline。
片段可以包含任何媒體資料，但是規範提供了與兩種容器類型一起使用的特定指導和格式：<span data-orig-title="ISO基础媒体文件格式" data-lang-code="en" data-lang-name="英語" data-foreign-title="ISO base media file format"><span>ISO基礎媒體檔案格式</span></span>（例如MP4檔案格式）或MPEG-2傳輸流。
</p><p>DASH不關心音訊/影片的編解碼器。多媒體檔案通常有一種或多種表示（即不同解析度或位元速率版本），並可基於不同的網路條件、裝置功能和使用者偏好進行選擇，達到自適性串流和<span data-orig-title="Fairness_measure#QoE_fairness" data-lang-code="en" data-lang-name="英語" data-foreign-title="Fairness_measure#QoE_fairness"><span>QoE (Quality of Experience) fairness</span></span>。DASH也與底層的應用層協定無關，因此可以配合任何協定中使用。例如，基於<span data-orig-title="Content centric networking" data-lang-code="en" data-lang-name="英語" data-foreign-title="Content centric networking"><span>CCN</span></span>的DASH。</p><p>2015年7月27日，MPEG LA宣布呼籲與MPEG-DASH相關的專利，以便為該技術建立一個專利池。</p>
<h2><span id=".E5.AE.9E.E7.8E.B0"></span><span id="实现">實現</span></h2>
<p>通過ExoPlayer，MPEG-DASH在Android上可原生使用，如三星智慧型電視2012+、LG智慧型電視2012+、索尼電視2012+、飛利浦NetTV 4.1+、松下Viera 2013+和Chromecast。YouTube以及Netflix已經支援MPEG-DASH，並且可使用多種MPEG-DASH播放器。</p><p>中國大陸方面，bilibili已經支援MPEG-DASH。
</p><p>雖然HTML5不直接支援MPEG-DASH，但是已有一些MPEG-DASH的JavaScript實現允許在網頁瀏覽器中通過HTML5 Media Source Extensions（MSE）使用MPEG-DASH。另有其他JavaScript實現，如bitdash播放器支援使用HTML5加密媒體擴充播放有DRM的MPEG-DASH。當WebGL結合使用，MPEG-DASH基於HTML5的自適應位元速率流還可實現360°影片的即時和按需的高效串流傳輸。</p>
<h3><span id=".E5.AE.A2.E6.88.B7.E7.AB.AF.E5.92.8C.E7.A8.8B.E5.BA.8F.E5.BA.93"></span><span id="客户端和程序库">客戶端和程式庫</span></h3>
<ul><li>Dash.js是Dash行業論壇官方參考和生產播放器。</li>
<li>Shaka是出自Google的開源dash播放器。</li>
<li>VLC多媒體播放器3.0將為MP4/MPEG和即時串流媒體發布一個新客戶端外掛程式。</li>
<li>跨平台FOSS多媒體框架GStreamer自從至少1.4版本以來支援MPEG-DASH和WebM DASH。</li>
<li>開源程式庫libdash獨立於平台，可在Android、iOS、Windows Phone等行動平台上執行。</li>
<li>bitmovin為HTML5和Flash提供了bitdash MPEG-DASH播放器。</li>
<li>THEOplayer （頁面存檔備份，存於網際網路檔案館）目前正在尋找夥伴來測試他們的MPEG-DASH影片播放器。</li>
<li>Viblast Player支援HTML5中的MPEG-DASH，並為iOS和Android提供SDK。</li>
<li>巴黎電信學院中GPAC的OSMO4支援MPEG-DASH。</li>
<li>克拉根福大學ITEC中的DASH-JS支援MPEG-DASH。</li>
<li>Radiant Media Player支援HTML5中的MPEG-DASH（DASH264和WebM DASH）。</li>
<li>Videogular是AngularJS面向桌面和行動平台提供的一個影片應用框架，AngularJS為HTML5提供的影片播放器</li>
<li>libndash （頁面存檔備份，存於網際網路檔案館）是一個開源（Apache許可證）的C++程式庫，提供構建一個全功能MPEG-DASH媒體播放器所需的所有功能（不包括解碼/彩現影格到顯示器）。</li></ul><h3><span id=".E6.9C.8D.E5.8A.A1.E5.99.A8"></span><span id="服务器">伺服器</span></h3>
<p>請注意，除了Live Streaming外，DASH內容不需要伺服器的特定支援。
</p>
<ul><li><span data-orig-title="Brightcove" data-lang-code="en" data-lang-name="英語" data-foreign-title="Brightcove"><span>Brightcove</span></span> <span data-orig-title="Zencoder" data-lang-code="en" data-lang-name="英語" data-foreign-title="Zencoder"><span>Zencoder</span></span>已支援MPEG-DASH transmuxing/transcoding。</li>
<li><span data-orig-title="Elemental Technologies" data-lang-code="en" data-lang-name="英語" data-foreign-title="Elemental Technologies"><span>Elemental Technologies</span></span>影片處理解決方案支援DASH。</li>
<li><span data-orig-title="Helix Universal Server" data-lang-code="en" data-lang-name="英語" data-foreign-title="Helix Universal Server"><span>Helix Universal Server</span></span>已支援各種模式下的DASH。</li>
<li>nginx-rtmp-module支援生成MPEG-DASH即時流。但在1.2.0版本以前，只能使用dash.js的修改版本和bitdash播放。</li>
<li>nginx-ts-module支援即時MPEG-DASH</li>
<li><span data-orig-title="Nimble Streamer" data-lang-code="en" data-lang-name="英語" data-foreign-title="Nimble Streamer"><span>Nimble Streamer</span></span>有即時和點播MPEG-DASH的支援。對點播來說，它支援H.265和H.264編解碼器</li>
<li><span data-orig-title="Unified Origin" data-lang-code="en" data-lang-name="英語" data-foreign-title="Unified Streaming Platform"><span>Unified Origin</span></span>支援MPEG-DASH。</li></ul><h3><span id=".E6.9C.8D.E5.8A.A1"></span><span id="服务">服務</span></h3>
<ul><li>Amazon Web Services Elastic Transcoder （頁面存檔備份，存於網際網路檔案館）已支援MPEG-DASH。</li>
<li>Level 3通信 CDN支援DASH。</li>
<li>Akamai CDN支援DASH。</li>
<li>Amazon CloudFront CDN支援DASH。</li>
<li>Azure Media Services平台已支援MPEG-DASH。</li>
<li><span data-orig-title="bitmovin" data-lang-code="en" data-lang-name="英語" data-foreign-title="bitmovin"><span>bitmovin</span></span>提供的雲轉碼服務bitcodin.com支援MPEG-DASH。</li>
<li><span data-orig-title="Limelight Networks" data-lang-code="en" data-lang-name="英語" data-foreign-title="Limelight Networks"><span>Limelight Networks</span></span> CDN支援DASH。</li>
<li><span data-orig-title="Tata Communications" data-lang-code="en" data-lang-name="英語" data-foreign-title="Tata Communications"><span>Tata Communications</span></span> CDN支援DASH。</li>
<li><span data-orig-title="StreamRoot" data-lang-code="en" data-lang-name="英語" data-foreign-title="StreamRoot"><span>StreamRoot</span></span>的混合CDN模型支援MPEG-DASH。</li>
<li>ScaleEngine Video CDN支援DASH。</li></ul><h3><span id=".E5.86.85.E5.AE.B9.E7.94.9F.E6.88.90.E5.99.A8"></span><span id="内容生成器">內容生成器</span></h3>
<ul><li>ITEC的DASHEncoder。</li>
<li>MP4Box及其來自Telecom ParisTech的GPAC的多媒體框架</li>
<li>巴黎電訊的dashcast支援MPEG-DASH即時流</li>
<li>MediaGoom MPEG-DASH Packager</li>
<li>Bento4開源工具和SDK</li></ul><h3><span id=".E5.85.B6.E4.BB.96"></span><span id="其他">其他</span></h3>
<ul><li>ITEC為MPEG-DASH媒體演示描述（MPD）檔案提供驗證服務</li>
<li>Alpen-Adria克拉根福大學的資訊科技研究所（ITEC）、巴黎電信學院GPAC小組和Digital TV Labs已提供多個DASH資料集。</li>
<li>BBC有DASH測試流，包括基於HTTP/2的DASH。</li></ul><h2><span id=".E5.8F.82.E8.80.83.E8.B5.84.E6.96.99"></span><span id="参考资料">參考資料</span></h2>

<h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li>MPEG-DASH Standard （頁面存檔備份，存於網際網路檔案館）</li>
<li>DASH subscription mailing list （頁面存檔備份，存於網際網路檔案館）</li>
<li>DASH research at Alpen-Adria Universität KlagenfurtArchive.is的存檔，存檔日期2013-04-03</li>
<li>Mailing list of the open-source DASH client library libdash</li></ul><!-- 
NewPP limit report
Parsed by mw1464
Cached time: 20230505225901
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.661 seconds
Real time usage: 0.752 seconds
Preprocessor visited node count: 2721/1000000
Post‐expand include size: 300062/2097152 bytes
Template argument size: 1284/2097152 bytes
Highest expansion depth: 12/100
Expensive parser function count: 18/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 64219/5000000 bytes
Lua time usage: 0.380/10.000 seconds
Lua memory usage: 25811433/52428800 bytes
Number of Wikibase entities loaded: 1/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  581.279      1 -total
 43.07%  250.364      1 Template:Reflist
 28.80%  167.433     48 Template:Cite_web
 20.25%  117.728      1 Template:Lang-en
 11.46%   66.598      1 Template:校对翻译
 11.04%   64.150      1 Template:NoteTA
 10.84%   63.009      1 Template:Ambox
  7.57%   43.974      2 Template:Cite_news
  5.37%   31.220     15 Template:Tsl
  2.45%   14.213      1 Template:Le
-->
**基於 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 不關心編解碼器，因此它可以接受任何編碼格式編碼的內容，如 H.265、H.264、VP9 等。

## 標準化

MPEG-DASH 技術在 MPEG 之下開發。對 DASH 的工作始於 2010 年。2011 年 1 月，它成為一項國際標準草案，並在 2011 年 11 月成為國際標準。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 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 是一項自適性串流技術，其將多媒體檔案分割為一個或多個片段，並使用超文字傳輸協定傳遞給客戶端。
媒體演示描述（MPD）描述片段資訊（計時、統一資源定位符，以及媒體特徵，例如影片解析度和位元速率），並且可以根據使用環境以不同的方式組織，例如 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 （頁面存檔備份，存於網際網路檔案館）目前正在尋找夥伴來測試他們的 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 （頁面存檔備份，存於網際網路檔案館）是一個開源（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 （頁面存檔備份，存於網際網路檔案館）已支援 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 （頁面存檔備份，存於網際網路檔案館）
* DASH subscription mailing list （頁面存檔備份，存於網際網路檔案館）
* DASH research at Alpen-Adria Universität KlagenfurtArchive.is 的存檔，存檔日期 2013-04-03
* Mailing list of the open-source DASH client library libdash
.mpd