空飛ぶ木造船

借り物ばかりの備忘録です。意味のあるものになると嬉しいです。

HLSとDASHについて

ライブ配信技術について調べる中でよく利用されているプロトコルHLSとDASHについて相似点と相違点をまとめました。素人知識でRFCなどを参照せずにとりあえずまとめたので、間違いがあるかもしれません。見つけ次第修正したいと思います。

HLS(HTTP Live Streaming)とDASH(MPEG-DASH: Dynamic Adaptive Streaming over HTTP)はともにHTTP上で動画をストリーミング方式で配信するためのプロトコルです。どちらもオンデマンド配信・ライブ配信に利用可能です。

大まかな流れ

HLSとDASHでは次のような流れで動画を配信します。

  1. エンコーディング
    配信する動画を特定の方式でエンコーディングします。
  2. セグメンテーション
    配信する動画を数秒単位でセグメントに分割します。このとき同時にセグメントの順番がわかるようにインデックスファイルを作成します。
  3. 配信
    セグメント化された動画をクライアントの元まで送信します。
  4. デコーディングと再生
    クライアントのデバイスでインデックスファイルを参照して動画ファイルを正しい順番に並べ、デコードして再生します。

アダプティブビットレートストリーミングとは

アダプティブビットレートストリーミングは、ネットワークの状態が変化したときに、ストリームの途中で動画の画質を調整する機能です。MPEG-DASHとHLSはどちらもこの機能を持っています。

動画を配信するサーバがいくつかの画質(480p、720p、1080pなど)であらかじめ動画セグメントをエンコードして多くことで、動画を中断することなく画質を切り替えることができます。このようにすることで、ネットワーク帯域幅が突然減少した場合にビデオが完全に停止するのを防いでいます。

相違点について

HLSとDASHは以下の4点で異なっています。

参考文献