HLSストリーミング
HLS(HTTP Live Streaming)は、Appleが2009年に開発した動画ストリーミングプロトコルで、現在ではWebでの動画配信における事実上の標準となっています。動画を小さく連続したセグメント(通常は2〜10秒)に分割し、それぞれを通常のHTTPで配信する仕組みです。
動作の仕組み
- エンコーダーが動画を複数の解像度・ビットレート(360p、720p、1080pなど)で出力します。
- 各バリアントはセグメント分割され、固定長のチャンクに切り分けられます。
- マスタープレイリスト(
.m3u8ファイル)が全バリアントとそれぞれの帯域要件を列挙します。 - 各バリアントはメディアプレイリストを持ち、セグメントを順に並べます。
- プレイヤーはマスターを取得し、バリアントを選び、セグメントを順次ダウンロードして連続再生に繋ぎます。
- プレイヤーは適応します。ダウンロード速度を測定し、セグメント境界でバリアントを上下に切り替えます。
なぜHLSが勝ったか
- HTTP配信 — あらゆるファイアウォール、CDN、ブラウザを通過します。特殊なプロトコルが不要です。
- アダプティブビットレート — ネットワーク状況に応じて画質がシームレスに調整されます。
- キャッシュ可能なセグメント — 不変なセグメントはCDNエッジで非常に良くキャッシュされます。
- ネイティブ対応 — 主要ブラウザ、TVプラットフォーム、モバイルOSはHLSをネイティブまたはライブラリ(Chrome/Firefox向けのHLS.js)で対応します。
- 暗号化との親和性 — セグメントはセグメント単位でAES-128暗号化(暗号化)でき、鍵は別経路で配信されます。
代替手段
- DASH(Dynamic Adaptive Streaming over HTTP)— HLSに似ていますがMPEGによって標準化されています。コーデックの柔軟性は高いものの、ブラウザのデフォルト対応は限定的です。
- WebRTC — サブ秒のレイテンシ、P2PまたはSFU経由。ライブインタラクティブ用途(会議)向けで、VODには不向きです。
- プログレッシブダウンロード(HTTP越しの素のMP4)— シンプルだが適応もストリーミング制御もありません。短いクリップには適し、長尺動画には不向きです。
拡張子
.m3u8— プレイリストファイル(マスターまたはメディア).ts— MPEG-TSセグメント(レガシー).m4s— フラグメンテッドMP4セグメント(モダン、HLSは2017年以降これを使用)
AVCaptionでは
AVCaptionにアップロードされた動画はすべて、AES-128マルチキー暗号化付きのHLSとしてエンコードされます。プレイヤーは非Safariブラウザ向けにHLS.jsを、SafariではネイティブHLSを自動選択します。詳細はアダプティブビットレートストリーミングを参照してください。