HTTP Live Streaming(HLS)とは、ストリーミングの技術の一つです。
ストリーミングとは、届いた部分からどんどん再生していくこと
普通は、ファイルはダウンロードが完了してから開きます。
しかし、動画のようなサイズの大きいファイルはダウンロードに時間がかかります。
そこで、ファイルをダウンロードしながらも、同時に再生していくことで、待ち時間なく動画を楽しめるようになります。
ストリーミングでは、録画された動画を、数秒ずつ等の小分けにして順番に送信することで、受信者は届いたところから再生していくことができます。
ストリーミングにHLSを使う利点
まず、HTTPでストリーミングを実現できる点です。
音声や動画用のプロトコルはあまり一般的ではありません。その点HTTPなら、通常のWebサーバを使って配信できますし、ファイアウォールなどで通信が遮断されることもないでしょう。
また、異なる質の動画を複数パターン用意しておけば、HLSがネットワークの状況に応じてそれらを切り替えてくれます。
HLS方式では、どのようにストリーミング再生を実現しているのか
HLSに対応したクライアントで、プレイリストと呼ばれるファイルにアクセスします。例えばSafariやEdge等のブラウザはデフォルトでHLSに対応したクライアントです。
このプレイリストは、拡張子がm3u8で、再生するメディアのURLが順番に書かれたテキストファイルです。
# EXTM3U
# EXT-X-TARGETDURATION:10
# EXTINF:9.009,
http://media.example.com/first.ts
# EXTINF:9.009,
http://media.example.com/second.ts
# EXTINF:3.003,
http://media.example.com/third.ts
プレイリストに書かれた各メディアファイルは「セグメント」と呼ばれます。
1つ目と2つ目のセグメントは9.009秒、3つ目は3.003秒です。
また、2行目の記述は、全てのセグメントが10秒以下であることを示しています。
クライアントは、ここに書かれているセグメントファイルを順次ダウンロードして再生していくことで、ストリーミング再生を実現します。
なお、クライアントは定期的にプレイリストをリロードする必要があります。
ライブ配信などで、プレイリストファイルには新たにセグメントが追加され続ける可能性があるからです。
参考
RFC 8216: HTTP Live Streaming Specification
ストリーミング - Wikipedia