HLSとDASHの比較 — どちらのアダプティブストリーミングを選ぶか

HLSとDASHの比較

どちらもHTTPベースのアダプティブストリーミングプロトコルです。同じ問題(セグメント単位配信+ビットレート適応)を、設計をやや変えて解決しています。

HLS(HTTP Live Streaming)

Appleが2009年に開発。RFC 8216として標準化。

  • マニフェスト: .m3u8プレーンテキストプレイリスト
  • セグメント: 旧来は.ts(MPEG-TS)、現在は.m4s(フラグメンテッドMP4)
  • ブラウザのネイティブ対応: Safari、全iOS、全macOS
  • ライブラリ対応: Chrome/Firefox/Edge向けHLS.js
  • 暗号化: セグメント単位AES-128(最も一般的)、FairPlay向けSAMPLE-AES
  • コーデックの柔軟性: フラグメンテッドMP4でH.264 + HEVC + AV1

DASH(Dynamic Adaptive Streaming over HTTP)

MPEGが2012年に標準化。

  • マニフェスト: .mpd XML
  • セグメント: .m4s(フラグメンテッドMP4)
  • ブラウザのネイティブ対応: なし(Media Source Extensions+JSライブラリが必要)
  • ライブラリ対応: Shaka Player、dash.js
  • 暗号化: Common Encryption(CENC)、Widevine + PlayReadyを同時サポート
  • コーデックの柔軟性: MP4が運べる任意のコーデック

なぜHLSが市場を制したか

JSライブラリ不要でSafariがネイティブ対応している点が決定打です。多くのプラットフォームはまずHLSを出し、DASHを副次扱いにします。

DASHが今でも意味を持つ場面

  • スタジオDRM — 同じコンテンツをWidevine + PlayReadyで同時配信する場合、DASH+CENCが標準パターン。
  • 成熟したOTTプラットフォーム — 何年も前からDASHを採用し、周辺ツールが整っている場合。

現代の大半のプロジェクトでは、HLSがシンプルなデフォルトです。AVCaptionはHLSのみを配信します。

関連項目

← content.back_to_index