Easy Tech:什么是MPEG-DASH协议
點擊上方“LiveVideoStack”關注我們
翻譯 | Alex
技術審校 | 趙軍
本文來自OTTVerse,作者為Krishna Rao Vijayanagar。
MPEG-DASH
Easy Tech
#014#
MPEG-DASH是最流行的視頻流協議之一,它廣泛用于點播和直播,將媒體傳輸給各種終端設備,包括手機、平板、智能電視、游戲機等。MPEG-DASH是一種基于HTTP的流媒體傳輸協議,負責將視頻從HTTP服務器傳輸給終端用戶。在MPEG-DASH中,一個視頻被分割成許多切片,這一信息被一個MPD記錄。該MPD首先被傳輸給播放器,播放器基于當前網絡條件和緩沖情況,基于MPD信息來請求合適碼率&分辨率的視頻切片。
本篇文章中,讓我們一起來學習MPEG-DASH的基礎知識、歷史和它的重要特性等。
?首先,何謂ABR技術?
DASH是Dynamic Adaptive Streaming over HTTP的簡稱,是一種自適應碼率流媒體技術。學習ABR技術很重要,因為它可以幫助我們更好地理解什么是DASH以及為什么使用DASH。
如果你已經很熟悉ABR,那么MPEG-DASH對你來說也就沒有那么難了,因為它描述了ABR相關的機制。
ABR是Adaptive Bit-Rate streaming的簡稱,是指為確保視頻在互聯網上的流暢傳輸,而根據帶寬條件自適應地調節視頻碼率和質量的過程。
使用ABR技術后,視頻被轉碼為多種分辨率和碼率的組合,這種組合被稱為“rendition”,這些rendition的集合形成了碼率階梯(Bitrate Ladder)。
下面就是一個碼率階梯:
1.? ?1080p 5.0 mbps
2.? ?720p 4.0 mbps
3.? ?640p 3.2 mbps
4.? ?480p 2.0 mbps
5.? ?270p 1 mbps
讓我們假設視頻已經按上述碼率階梯編碼。當播放器開始播放視頻時,它感知到的可用帶寬假設是20mpbs。該帶寬遠大于碼率階梯中最高的5 mbps,所以播放器可以安全地以5mbps下載第一個視頻切片(時長6s)。當播放器再次感知帶寬變化,如果帶寬依然很高,那么同樣請求最高帶寬的視頻。
如果帶寬突然下降到5mbps,播放器將有可能向服務器請求4mbps的切片(因為這時如果再請求5mbps的切片會很有風險)。收到4mbps的切片后,便開始播放這個視頻切片。
整個視頻都會持續這個過程。這就是碼率和質量如何通過自適應帶寬條件來不斷變化的。在介紹了ABR之后,讓我們來看看MPEG-DASH是如何助力ABR技術的。
?什么是MPEG-DASH?
正如我們在前文所述,ABR技術用于在視頻傳輸時通過動態改變視頻碼率和質量來適應帶寬變化和播放器的緩沖程度。
然而,如果一次性傳輸整個流媒體文件,將很難做到這一點,想象一下從Dropbox、S3或者 Google Drive下載視頻文件。和其他類型的文件一樣(如文本、數據),這個文件僅有一個,根本沒有辦法暫停下載并將其切換到一個不同的碼率-分辨率組合(rendition),對吧?所以ABR技術并不適用于龐大而單一的文件。
為了定期在文件之間動態切換,需要將文件處理并分解成小塊。每一塊都應該能夠獨立傳輸。除此之外,應該有一種機制來促進這種自適應的動態下載。
為了解決這些問題并為ABR視頻流制定行業規范,2009年,MPEG組織為基于HTTP的視頻流標準發布了CFP。在幾家公司和行業組織的協作下,MPEG-DASH標準終于在 2012年4月被開發并發布出來。它在2019年被修訂為MPEG-DASH ISO/IEC 23009-1:2019。
?MPEG-DASH如何工作?
從名字就可以看出,DASH(Dynamic Adaptive Streaming over HTTP)基于ABR工作原理,下圖為DASH的工作原理:
一組電影的編碼(或碼率-分辨率組合, 即rendition)由MPEG-DASH打包服務或軟件去打包,打包的過程是將每個rendition分割成指定時間的小片或小塊(例如,2秒或4秒長)。
打包器還將其如何分割視頻以及視頻的交付順序記錄在一個稱為MPD或清單(manifest)的文本文件中。
打包過的視頻和清單被存儲在源站服務器,并等待被分發給播放器(通常使用CDN)。
在另一端,有一個兼容了MPEG-DASH的播放器,其中內置了ABR引擎。
當用戶按下播放鍵,應用程序或者視頻播放器請求視頻的MPD文件,在收到MPD后,播放器對其進行解析然后理解如何播放視頻。
播放器開始按照預定義順序請求視頻切片,解碼它們并將視頻顯示給用戶。
播放器持續監測帶寬條件。根據可用帶寬,播放器選擇MPEG-DASH MPD中描述的碼率之一,并請求CDN從該變體(Variant)中發送下一個視頻塊。
整個過程會一直持續,直到視頻播放結束(電影結束或者用戶停止觀看)。
再來回顧一下MPEG-DASH的工作原理:
MPD文件描述了電影視頻的切割、排序方式以及傳輸信息。
打包過的視頻被存儲在服務器上并通過CDN發送。
視頻播放器首先下載MPD,然后需要理解視頻傳輸機制,感知可用帶寬,再開始播放。
根據緩沖大小和可用帶寬,視頻播放器請求該電影某個碼率組合的視頻切片。
通過不斷感知帶寬條件和緩沖水平,播放器自適應地傳輸內容,以提供良好的用戶體驗。
?如何創建MPEG-DASH視頻流?
如果你擁有一個單一的視頻或者同一視頻的幾個碼率-分辨率組合(rendition),你就可以創建與MPEG-DASH兼容的視頻流。這個過程被稱為打包,由專業的軟件打包器完成。
目前市面上有多種打包器,其中最有名的包括:
FFmpeg
谷歌的Shaka Packager
GPAC的mp4box
Bento4的mp4dash
它們都是由命令行驅動,最基本的操作就是在視頻文件中指定打包器,并確認DASH參數(直播、點播、切片列表和切片時間線等),打包器將生成DASH兼容的視頻流和DASH MPD文件。
?MPEG-DASH的清單(MPD)示例
下面是一個簡單的MPEG-DASH清單(MPD)示例,通過DASH協議可以向DASH兼容的播放器傳輸視頻。
更多DASH MPD的詳盡列表,可在OTTVerse上查看:https://ottverse.com/free-mpeg-dash-mpd-manifest-example-test-urls/。
?MPEG-DASH特性
MPEG-DASH擁有很多特性,這些特性對于視頻服務提供商充滿吸引力。讓我們來看下這些特性:
MPEG-DASH獲得了播放器公司的廣泛支持,并由國際社區積極發展。持續的Bug修復、改進以及各種特性使得MPEG-DASH成為視頻服務的最佳選擇。
MPEG-DASH同時支持點播和直播。
獲得了Android生態的支持,這對于在Android手機、電視以及其他設備上觀看視頻尤為重要。考慮到世界上很多人無法負擔IPhone和Apple TV昂貴的價格,所以MPEG-DASH會是HLS很好的替代。
MPEG-DASH對編解碼器沒有要求,可以很好地與 H.264/AVC、AV1 或其他Codec一起使用。
MPEG-DASH同時支持MPEG-TS和fMP4容器格式。(審校者注:MPEG DASH最新版本和Fragmented MP4 關聯更緊密一些,它確實也在老版本的標準中支持了 MPEG-TS。)
MPEG-DASH支持廣告插入(包括客戶端和服務器端的廣告插入)。
?哪些播放器支持MPEG-DASH?
很多播放器支持MPEG-DASH且服務于各種應用和設備。一些播放器可以通過原生應用或者瀏覽器在Web上、Android Exoplayer、Roku、智能電視上播放MPEG-DASH視頻。
MPEG-DASH兼容播放器包括:
DASH.js
帶有MPEG-插件的VideoJS 或帶有native DASH 播放的VideoJS7
Bitmovin
THEOPlayer
CastLabs
JWPlayer
NexPlayer
Radiant Media Player
Android Exoplayer
Roku
Roku可以播放MPEG-DASH視頻流
下面是一個免費、開源的MPEG-DASH兼容Web播放器。
DASH.js Reference Player[1]
DASH.js reference player 是最佳MPEG-DASH在線播放器之一,它可以免費播放MPD文件。在我看來,它擁有非常易于使用的界面,并可以提供大量便捷且重要的信息來調試視頻流。
這些便捷的信息包括緩沖水平,可以告訴你正在使用的是哪個rendition,以及所有數據的時間線等等。它由開源 dash.js 播放器提供支持,并不斷更新到最新版本,以便用戶始終可以使用最新版本來調試MPD視頻流。
?小? ? ? ?結
我希望這篇文章可以幫助你更好地理解MPEG-DASH。本篇文章中,我們介紹了ABR技術的基礎知識、MPEG-DASH的歷史及其工作原理、MPD文件示例、DASH兼容的視頻播放器等等。在未來的文章中,我們會介紹更多MPD的基礎知識,以及如何使用打包器(如Shaka、mp4box等等)打包MPEG-DASH。
我們下次見!祝大家觀影愉快!
注釋
[1] https://reference.dashif.org/dash.js/latest/samples/dash-if-reference-player/index.html
致謝
本文已獲得作者Krishna Rao Vijayanagar授權翻譯和發布,特此感謝。
原文鏈接:
https://ottverse.com/mpeg-dash-video-streaming-the-complete-guide/
掃描圖中二維碼或點擊閱讀原文
了解大會更多信息
喜歡我們的內容就點個“在看”吧!
總結
以上是生活随笔為你收集整理的Easy Tech:什么是MPEG-DASH协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音视频技术开发周刊 | 233
- 下一篇: 【今晚七点半】:白板与开源