HLS 與 DASH:串流協定究竟如何運作

在串流技術出現以前,線上看影片只有一種方式:先下載完整檔案,再開始播放。即使只想看前 30 秒,也得等整部 500 MB 的影片下載到裝置。串流協定正是為了解決這個問題:將影片切成小片段,在剩餘內容還在下載時就能開始播放。

分段:串流的基本組成

以最常見的 HLS(HTTP Live Streaming,由 Apple 開發)為例:伺服器會將完整影片切成許多稱為片段的小檔案,每段通常長 2~10 秒,並採用 MPEG-TS 或 fMP4 封裝。同時產生一份播放清單檔案(.m3u8),記錄片段的順序與位址。播放器先取得清單,再按需求下載片段:播完一段就取下一段,幾乎不必等待。

線上影片播放器

自適應位元率:網路變差時,影片為何還能繼續播放

HLS 與 DASH(Dynamic Adaptive Streaming over HTTP,由 Microsoft 等業者推動)都會為同一部影片準備多組不同解析度與位元率的片段,例如各有一組 1080p、720p 與 480p,並全部列在主播放清單中。播放器會即時監控下載速度與緩衝量:網路順暢時切換到較高位元率,變差時則降低位元率,讓播放維持連續。這就是自適應位元率串流(ABR),也是你搭捷運時影片會自動變模糊的原因。

為什麼直接下載 m3u8 連結經常失敗

直接下載 .m3u8 網址,只會取得幾 KB 的文字,也就是播放清單,而不是影片本身。要真正儲存影片,工具必須解析清單、下載每個片段,再依序合併。因此,許多下載工具不是完全不支援 HLS 影片,就是需要額外執行「合併片段」。TakeVid 內建片段偵測與自動合併功能,下載完成後就是可直接播放的完整檔案。

M3U8 下載器

  • HLS:由 Apple 開發,使用 .m3u8 播放清單,iOS/Safari 原生支援,可用於直播與隨選播放
  • DASH:使用 .mpd 資訊清單的開放標準,YouTube、Netflix 等平台大量採用
  • 兩者都透過一般 HTTP 傳輸,適合搭配 CDN,是現今串流的主流協定

DASH 下載器

返回文章列表