瞭解 DASH 自適應流媒體演示

DASH 是現代解決方案中部署最廣泛的自適應流技術,用於在各種場景中提供視訊。理解 DASH 演示的最佳方法是觀察播放期間發生的網路活動。

此示例使用 Fiddler 捕獲和分析瀏覽器網路流量,但任何類似的工具也足夠了。我們將使用 dash.js 開源播放器進行視訊播放。

對於我們的演示內容,我們將使用 Axinom DASH 測試向量 ,特別是 Clear 測試向量的單週期 1080p 變體。

StackOverflow 文件

執行網路捕獲後,在任何現代瀏覽中開啟 dash.js 每晚構建示例播放器,並在文字框中輸入 URL http://media.axprod.net/TestVectors/v6-Clear/Manifest_1080p.mpd 。按 Load 開始播放。你將觀察到正在下載的以下檔案:

http://media.axprod.net/TestVectors/v7-Clear/Manifest_1080p.mpd
http://media.axprod.net/TestVectors/v7-Clear/2/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/15/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/18/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/18/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/2/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/15/0001.m4s
http://media.axprod.net/TestVectors/v7-Clear/15/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/5/init.mp4
http://media.axprod.net/TestVectors/v7-Clear/5/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/18/0002.m4s
http://media.axprod.net/TestVectors/v7-Clear/5/0003.m4s
...

第一個檔案是表示清單 - 一種 XML 文件,其格式在 ISO / IEC 23009-1 中定義。這將 DASH 演示描述到足以允許玩家理解如何播放的深度。

如果你檢視清單內部,你將看到各種 AdaptationSet 元素,每個元素都描述了內容的單一調整。例如,存在一個用於視訊軌道的自適應集,用於三種音訊語言的三個自適應集和用於五種字幕語言的五個自適應集。

內部適應集是 Representation 元素。對於視訊自適應集,有幾個 - 每個表示包含使用不同質量級別編碼的相同可視內容。每個音訊和文字自適應集僅具有一個表示。

StackOverflow 文件

為了執行回放,玩家將需要決定向觀看者呈現哪些適應組。它可以基於其期望的任何自定義或內建業務邏輯(例如,語言順序的偏好)來做出該決定。內容作者認為主要的適應集在清單中具有 Role 元素,宣告主要角色。

此外,玩家將需要決定向觀眾呈現哪種表示(如果適應集提供多種表示)。大多數玩家保守地開始並應用啟發式演算法,該演算法將嘗試呈現觀眾的網路連線可以維持的最高質量水平。

玩家可以隨時更改活動的表示和/或適應集,可以響應使用者操作(選擇不同的語言)或自動邏輯(頻寬啟發式結果導致質量等級變化)。

SegmentTemplate 元素定義了播放器可用於訪問不同表示的 URL 結構。DASH 演示的一個關鍵因素是內容被分成幾段,每段幾秒(我們的樣本電影只有 4 秒),這些片段是獨立下載的。每個表示還有一個初始化段,名為“init.mp4”,用於此示例影片,其中包含特定於表示的解碼器配置,因此必須在處理該表示的任何其他段之前載入。

此處描述的行為對於 DASH Live 配置檔案是準確的,DASH Live 配置檔案是 DASH 最常用的變體。還存在其他具有略微不同行為的配置檔案,此處未涉及。請注意 DASH 清單根元素上的 profile 屬性,以確保此說明適用於你的視訊!

在檢查從網路流量捕獲中獲取的 URL 列表並與清單提供的資訊進行比較時,你將得出結論:在下載清單後,播放器執行了以下操作:

  1. 下載表示 2(360p 視訊),15(英語音訊)和 18(英語字幕)的初始化段。
  2. 下載以上三個表示的第一部分(0001.m4s)。
  3. 下載音訊表示的第二部分。
  4. 從第二個視訊片段開始,切換到 1080p 視訊流! 這通過下載初始化段和第二段表示 5(1080p 視訊)來指示。
  5. 繼續下載更多活動表示段。

通過觀察網路活動,可以很容易地觀察到 DASH 自適應流媒體播放器在執行中做出的決定。這種播放器只是一種機制,它可以下載各種音軌的片段,並連續地將它們提供給媒體播放引擎,適當地切換音軌。

Axinom DASH 測試向量還包含讓你下載的檔案系統級的分析整個簡報檔案檔案。你會發現磁碟上的檔案與網路級別的檔案完全相同。這意味著 DASH 簡報可以由任意 HTTP 伺服器提供,而無需任何自定義伺服器端邏輯。

實時配置檔案 DASH 的一個方面使分析複雜化,即媒體樣本分佈在大量片段中。大多數媒體分析工具無法處理單個段,僅在整個軌道上執行。你通常可以通過簡單地連線單個表示的段,從初始化段開始,來克服此限制。例如,在 Windows 上,你可以使用以下命令:

copy init.mp4 /b + 0001.mp4 /b + 0002.mp4 /b + 0003.mp4 /b track.mp4

這將建立一個 track.mp4 檔案,其中包含來自表示的前三個媒體段。雖然結構與獨立的 MP4 檔案不完全相同,但大多數工具(例如 mp4info 和 FFmpeg)仍然可以分析這樣的檔案而不會顯著損失功能。