第554回:HLS形式 とは

大和 哲
1968年生まれ東京都出身。88年8月、Oh!X(日本ソフトバンク)にて「我 ら電脳遊戯民」を執筆。以来、パソコン誌にて初歩のプログラミング、HTML、CGI、インターネットプロトコルなどの解説記事、インターネット関連の Q&A、ゲーム分析記事などを書く。兼業テクニカルライター。ホームページはこちら
(イラスト : 高橋哲史)


 「HLS形式」は、米アップルによって開発された、動画をストリーミング送信するためのプロトコルの1つです。HLSという名称は、“HTTPライブストリーミング”を意味する英語「HTTP Live Streaming」の略から来ています。

 iOS 3.0以上を搭載したiPhone、iPod touch、iOS 3.2以上を搭載したiPad、そしてAndroid 3.0以上でHLS形式のストリーミング配信が利用できます。パソコンでは、Windowsなどで使われているVLC Media Player 1.2以上、QuickTime Player 10以上がサポートしています(2012年2月時点)。

 米国では、CBSインタラクティブ、CNN、NETFLIX(オンラインDVDレンタル業者)、MLB.com(野球のメジャーリーグ)、Yahoo!の動画配信などにも使われています。

 一方、日本ではパソコンや携帯電話向けにNHK(日本放送協会)が提供する動画配信サービス「NHKオンデマンド」において、4月のサービスリニューアル時より、このHLSがサポートされる予定になっています。これにより、これまでFlash形式での配信のためiPhoneなどで利用できなかった「NHKオンデマンド」の動画コンテンツは、リニューアル後、HLS形式で配信されるため視聴できるようになります。

ネット環境に応じて低ビットレートも

 技術的な内容を見てみると、このHLSの原理はシンプルです。

 たとえば、地上デジタル放送などでは「MPEG-2 TS」と呼ばれる映像・音声データがそのまま用いられています。一方、HLSでは、エンコーダーによってデジタルデータ化された映像・音声信号をファイル化する際に、10秒単位の「MPEG-2 TS」として細切れにし、暗号化して、小さな連続したファイルを作ります。ちなみにエンコーダーは、デジタルデータの作成時に、ビットレートに応じたいくつかのバリエーションを作っておきます。

 そして、この細切れになった「MPEG-2 TS」ファイルの再生順や、暗号化の鍵、コンテンツのバリエーションなどを書き込んだM3U8形式の「プレイリスト」に記載しておきます。そして、これらをWebサーバーから配信する、という仕組みになっています。

HLS形式の概念図。プレイリストをクライアントが読み取り、10秒分ごとに細切れにされたTSファイルを読んで表示していく。この間の通信は全てHTTP通信

 再生側では、Webサーバーから「プレイリスト」を受け取り、動画のファイル構成か確認します。通信速度に合わせて、複数のバリエーションが用意されたファイルのうち、最適なものを選んで、細切れになった映像ファイルを1つずつダウンロードして再生します。

 この仕組みによって、サーバーと再生側(クライアント)との間の通信速度が速かったり、あるいは遅かったりしても、適切な動画ファイルで再生できるのです。また、プレイリストをたどることでエンドユーザーが簡単に巻き戻し操作をすることもできます。

 また、HLS形式の配信のメリットは、Webの配信に使われる「HTTP」というプロトコルが使われることです。従来の動画ストリーミングでは、RTP(Real-time Transport Protocol)など、UDP(User Datagram Protocol)ベースのプロトコルが使われてきましたが、HTTPというプロトコルは、一般のWebサイトを閲覧するときと同じプロトコルです。つまり、Webサイト用の環境があれば、HTTP形式で通信できる、ということになりますので、配信側は特別なサーバーを用意する必要がありません。また、特定のプロトコルを遮断するネットワークでも、Webブラウジングができるなら、HLS形式の動画を楽しめることになります。

 なお、アップルでは、HLSを標準化すべくIETF(Internet Engineering Task Force)に送るための最初の段階として、インターネット上のドラフト文書(草案)をドキュメント化していますが、たびたびマイナーアップデートが行われているようです。ちなみにIETFは、TCP/IPなどのインターネットで利用される技術を標準化する組織です。ここで策定された技術仕様は、IETFへの正式な文書を意味する“RFC”(Request For Comments)として公表されます。たとえば、メールの送信に必要なプロトコル「SMTP」はRFC5321で、メール受信に必要な「POP3」はRFC1939で定義されています。

(大和 哲)

2012/2/28 06:00