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年に標準化。
- マニフェスト:
.mpdXML - セグメント:
.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のみを配信します。