情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

ライブ動画配信プロトコル(HTTP Live Streaming, HLS)の概要図解メモ(AbemaTV/FRESH!)

AbemaTV (12) FRESH! (2) HTTP Live Streaming (1)

FRESH!で再生が止まってしまったときに、Chrome DevToolsのNetworkタブを見ていたところ、.m3u8というファイルの取得に失敗していることが分かりました。そこから、.m3u8ファイルと.tsファイルを用いて実現されるライブ動画配信の仕組みHTTP Live Streaming (HLS)の挙動について調べ、実際の通信内容と比較して、クライアント側の動作や、ファイルの内容などの仕組みが見えてきました。

その基本的なところについての理解を図解してみたので、ここにメモ&紹介しておきます。

実際の挙動については、サイバーエージェントの動画配信サービス「FRESH!」および、「AbemaTV」の挙動を参考にしました。

HTTP Live Streaming (HLS)

HTTP Live Streaming (HLS)は、もともとAppleが開発した、HTTPベースのライブ動画配信プロトコルです。

HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of its QuickTime, Safari, OS X, and iOS software. 引用元

2種類のファイルを用意して動画配信する

HLSでは、(1)「.ts」形式の「動画」ファイルと、(2)「.m3u8」形式のプレイリストファイルという、2種類のファイルのみでライブ動画配信を実現します。

.tsファイル(動画)

.tsファイルは、配信映像が数秒の長さに分割された動画ファイルです。ひとつのライブ配信に対して、大量の.tsファイルが使用されます。

.m3u8(プレイリスト)

一方、.m3u8ファイルは、ひとつのライブ配信に対してひとつで十分です。

しかし.m3u8は、ライブ配信「全体」のプレイリストではなく、ライブ配信の「一部」の.tsファイルについてのみのプレイリストとなっています。

どういうことかというと、時間が経過するに従って、.m3u8ファイルの内容は更新され、プレイリストの内容が少しずつ前進していくのです。

そのため、.m3u8には、「何番目の.tsファイルを起点とするプレイリストか」という情報と「各.tsファイルのURL・長さ」という情報に加えて、「プレイリスト自体の更新頻度(秒)」に関する情報が掲載されています。

実際の.m3u8ファイル

実際の.m3u8ファイルには、それらの情報が次のような形式で記載されています。

各行、次の意味を持ちます。

  • #EXTM3U:ファイル形式を表現
  • #EXT-X-VERSION:ファイル形式のバージョン番号
  • #EXT-X-MEDIA-SEQUENCE:このプレイリストの先頭にある.tsファイルが、全体で何番目の.tsファイルか
  • #EXT-X-TARGETDURATION:各.tsファイルが何秒以下になるように分割したか(サーバー側は、この値の0.5倍~1.5倍の間で、このプレイリストファイルを更新する義務がある。そのためクライアントは、だいたいこの値を「更新頻度」と見なすことができる)
  • #EXTINF:次の行の.tsファイルの動画の長さ
  • ....ts:.tsファイルのURL

再生プロトコル・配信プロトコル

ファイル形式が、ほぼほぼ動作をもう表しているわけですが、一応再生手順は次のようになります(※図中の具体的な数字は、FRESH!のパラメータが参考)

基本的には、(1).m3u8ファイルを取得して.tsのURLを確認し、(2)先頭から.tsファイルを再生する一方で、(3)定期的に.m3u8ファイルを再取得することで後続の.tsファイルのURLを補充し、.tsファイルの再生を続けるということをします。

そしてサーバー側は、.tsファイルの用意をしつつ、.m3u8の更新を続けることで、配信を継続します。

.m3u8ファイルの実例

FRESH!が利用している.m3u8ファイルはこんな感じです:

一方、「AbemaTV」はもう少し複雑ですが、プロトコルは同じでこんな感じです:

AbemaTVのいろいろな.m3u8ファイルを見てみると、CMと本編が分割されていたり、本編が暗号化されている様子が分かります。

資料

コメント(0)

新しいコメントを投稿