HLSストリーミング — HTTP Live Streamingとは何か、どう動作するか

HLSストリーミング

HLS(HTTP Live Streaming)は、Appleが2009年に開発した動画ストリーミングプロトコルで、現在ではWebでの動画配信における事実上の標準となっています。動画を小さく連続したセグメント(通常は2〜10秒)に分割し、それぞれを通常のHTTPで配信する仕組みです。

動作の仕組み

  1. エンコーダーが動画を複数の解像度・ビットレート(360p、720p、1080pなど)で出力します。
  2. 各バリアントはセグメント分割され、固定長のチャンクに切り分けられます。
  3. マスタープレイリスト.m3u8ファイル)が全バリアントとそれぞれの帯域要件を列挙します。
  4. 各バリアントはメディアプレイリストを持ち、セグメントを順に並べます。
  5. プレイヤーはマスターを取得し、バリアントを選び、セグメントを順次ダウンロードして連続再生に繋ぎます。
  6. プレイヤーは適応します。ダウンロード速度を測定し、セグメント境界でバリアントを上下に切り替えます。

なぜ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を自動選択します。詳細はアダプティブビットレートストリーミングを参照してください。

関連項目

← content.back_to_index