基于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 不關心編解碼器，因此它可以接受任何編碼格式編碼的內容，如 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