HLS (HTTP Live Streaming)とは何か? [ Wowza Blog 翻訳 ]

HLS (HTTP Live Streaming)とは何か? [ Wowza Blog 翻訳 ]

原文: "What Is HLS (HTTP Live Streaming)?"(2020 年 7 月投稿分)

 

2020 年、ついに Flash の時代が終わりを迎えます − 現在は Flash に代わり、Apple の HTTP Live Streaming(HLS)がストリーミングビデオを視聴者に配信するために好ましいプロトコルとして、多く利用されています。HLS とは、メディアサーバーから視聴者のスクリーンに映像とオーディオデータを転送するために使用される、様々な視聴環境への対応が考慮された、適応型の「HTTP ベース」のプロトコルです。テレビやモバイルアプリ等、視聴者がどのデバイスを介してライブビデオを視聴しているか、テレビのオンデマンドコンテンツを視聴しているかに関わらず、HLS ストリーミングが関与している可能性があります。Apple デバイスを使用している場合は、その可能性がより高くなります。

HTTP を使用して配信される動画は、技術的には「ストリーム = 連続的なデータの送受信」ではありません。むしろ、通常のWebサーバーを経由して送信される「プログレッシブなダウンロード」です。HTTP ベースのプロトコルは、接続、ソフトウェア、デバイスに関係なく、「可能な限り最高のビデオ品質と視聴体験を提供する」ために、業界ではこれらのプロトコルが好まれるようになりました。現在、最も一般的な HTTP ベースのプロトコルは MPEG-DASH、そして  Apple の HLS です。

Wowza 2019 年 Video Streaming Latency Report で、参加者の 45% 以上がコンテンツの配信に HLS プロトコルを使用していると回答しています。HLS の人気は、再生の互換性と高品質なユーザー体験にあり、MacAndroidMicrosoftLinux デバイスすべてが HLS を使用して配信されたストリームを再生出来るからです。

Apple HLS の概要

概要:

HLS とは、HTTP Live Streaming の略で、ライブやオンデマンドのストリーミングコンテンツを配信するために開発されたプロトコルです。HTTP 技術を活用してスケーラビリティとアダプティブ・ビットレート・ストリーミングを実現しています。

特長:

  • クローズドキャプション
  • 早送り・巻き戻し
  • 複数の音声やビデオの切り替え
  • 冗長構成
  • 時間指定メタデータ
  • 広告挿入
  • コンテンツの保護

経緯:

2015 年 1 月: マイクロソフトが Windows 10 で HLS のネイティブサポートを発表

2016 年 6 月: Apple が fMP4 形式のサポートを発表

2019 年 6 月: Apple が Low-Latency HLS 拡張の仕様を発表

2019 年 11 月: Wowza が WowzaStreaming Engine 4.7.8 リリースの一環として Apple Low-Latency HLS のサポートを発表

2020 年 5 月: Low-Latency HLS の仕様が包括的な HLS 標準に組み込まれる

Apple HLS の技術仕様

  • オーディオコーデック: AAC-LC、HE-AAC+ v1 & v2、xHE-AAC、Apple Lossless、FLAC
  • ビデオ、映像コーデック: H.265、H.264
  • 再生互換性: すべての Google Chrome ブラウザ、Android、Linux、Microsoft、MacOS デバイス、複数のセットトップボックス、スマートテレビ、その他のプレイヤー
  • 特長、利点: アダプティブビットレート、信頼性が高く、広くサポートされています。
  • 欠点: 低遅延よりも体験の質が優先されます。
  • レイテンシ、遅延: 今まで HLS は 6 30 秒の遅延で提供してきましたが、HLS の機能セットとして低遅延 HLS 拡張が組み込まれ、2 秒以下の遅延を提供することを目指しています。

HLS の採用

HLS は現在使用されている最も一般的なストリーミングプロトコルです。

Wowza 社の 2019 年 Video Streaming Latency Report(ビデオストリーミング遅延レポート)によると、放送局の 45% 以上が HLS を使用しています。以下の図の様に、RTMP も人気のある選択肢ですが、ほとんどの放送局では、ストリーミングサーバに到達すると HLS プロトコルに再パッケージしています。これは、視聴者がプラグインをダウンロードする必要が無く広範囲のデバイスで再生出来る事が保証されているからです。

HLS のスケーラビリティ

Flash Player と連携して使用される RTMP プロトコルとは異なり、HLS はコンテンツ配信ネットワーク(CDN)を介して、一般的な Web サーバーを使って簡単に配信を行うことができます。サーバーのネットワーク上で作業負荷を共有することで、CDN は爆発的な視聴者の急増や、予想以上のライブ視聴者に対応します。また、CDN はオーディオやビデオのセグメントをキャッシュすることで、視聴者の体験を向上させるのにも役立ちます。

それに比べて、RTMP に対する CDN のサポートは急速に減少しています。RTMP は専用のストリーミングサーバーを使用する必要があることからも、導入に多くのリソースを必要とします。

HLS を用いたアダプティブ・ビットレート・ストリーミング

HLS ストリーミングは、小さな画面や接続環境の悪い視聴者も含めて、すべての視聴者に可能な限り最高品質のストリームを配信するために、各視聴者の状況に合わせて解像度を動的に適応させます。アダプティブ・ビットレート・ストリーミングと呼ばれるこの方法により、放送局は、優れた帯域幅と処理能力を持つ視聴者に高品質のストリームを配信できるだけでなく、回線速度や処理能力が不足している視聴者にも対応できます。

1 つのビットレートで 1 つのライブストリームを作成するのではなく、トランスコーダ(通常はサーバーに設置されている)を使用して、異なる解像度とビットレートのストリームの組み合わせを複数作成します。その後、メディアサーバーは、各視聴者の画面と接続速度に合わせて、可能な限り最高解像度のストリームを送信します。

1 つのストリームに複数のレンディションを作成することで、バッファリングやストリームの中断を防ぐことができます。加えて、視聴者の端末の電波の強さを示す「アンテナ」が 2 本から 3 本になると、ストリームは動的に調整され、より良いレンディションで提供されます。

 

HLS の仕組み

HLS コンテナフォーマット

ほとんどの HTTP ベースのプロトコルが使用する MPEG-4 Part 14(MP4)コンテナ形式とは異なり、HLS は当初 MPEG-2 トランスポートストリーム(TS)コンテナの使用を指定していました。これは、Apple がフラグメント MP4 (fMP4) フォーマットのサポートを発表した 2016 年に変更されました。最近では fMP4 はすべての HTTP ベースのストリーミング(MPEG-DASH や Microsoft Smooth を含む)で多く活用されるフォーマットとなっています。これらのビデオファイルは、一般的に AVC/H.264 エンコードされたビデオと AAC エンコードされたオーディオを含んでいます。

HLS セグメント配信

上述の様に、HLS を介して配信されるビデオストリームは連続的な情報の流れとして配信されるのではなく、メディアサーバーでデータのセグメント(チャンクやパケットとも呼ばれる)に分割されます。セグメント化された配信により、プレイヤーは利用可能なリソースに応じて異なるレンディションの間でシフトすることが出来、同時に遅延を低減することが可能です。

HLS エンコーディング要件

Apple は HLS でストリーミングを行う際のビットレートの典型的なセットの例として、以下のようなエンコーディングターゲットを提供しています。

アスペクト比 16:9

H.264/AVC(kbit/s)

フレームレート

416 x 234

145

≤ 30 fps

640 x 360

365

≤ 30 fps

768 x 432

730

≤ 30 fps

768 x 432

1,100

≤ 30 fps

960 x 540

2,000

ソースと同じ

1280 x 720

3,000

ソースと同じ

1280 x 720

4,500

ソースと同じ

1920 x 1080

6,000

ソースと同じ

1920 x 1080

7,800

ソースと同じ

外部資料: HLS エンコーディングターゲット

 

.M3U8マニフェストファイル

HLS のビデオセグメントは、ビデオプレイヤーがデータの整理方法を理解できるように、メディアプレイリストにインデックス化されます。また、マスター .m3u8 プレイリストファイルも作成する必要があります。これを「インデックスのインデックス」とお考えください。これは一方でマニフェストファイルとも呼ばれています。ストリームを配信する人は誰でも、.m3u8 参照 URL を Web ページに埋め込んだり、ファイルをダウンロードするアプリケーションを作成したりして、コンテンツを配信することができます。

 

 

セグメントサイズと遅延

2016 年までは、Apple は HLS に 10 秒のセグメントを使用することを推奨していました。この仕様では、再生を開始する前に 3 つのセグメントをロードする必要がありました。10 秒の推奨事項に固執することで、放送局はセグメントサイズだけで 30 秒の遅延で再生開始することになります。Apple は最終的にデフォルトのセグメントサイズを 6 秒に減らしましたが、それでもライブストリームでは 20 秒近く遅れてしまうことになります。

遅延を減らすための一般的な方法として、セグメントのサイズを小さくすることがありますが、これは低遅延のための「チューニング」と呼ばれています。チャンクを短くすることで、ダウンロード時間を短縮し、高速化することができます。しかし、HLS でストリーミングを高速化する唯一の方法はそれだけではありません。2019 年、Apple は「Apple Low-Latency HLS」と呼ばれる拡張機能の仕様を発表しました。さらに最近では、この拡張機能が機能セットとして包括的な HLS 規格に組み込まれています。

Apple の低遅延 HLS

Apple はスケーリングにより遅延を下げる為に低遅延 HLS 拡張を設計しました。このプロトコルは元々、HTTP/2 プッシュ配信に依存していましたが、現在は削除されており、Internet Engineering Task Force(IETF)は最近、低遅延 HLS 拡張機能を従来の HLS に機能セットとして組み込みました。これには 2 つの意義があり、1 つ目は新技術の標準化をさらに進める事、そして 2 つ目はテクノロジープロバイダーにサポートを追加させる為です。

  • 再生互換性: 低遅延 HLS に最適化されていないプレイヤーは、標準的(高遅延の)HLS の動作に戻すことができます。
  • メリット: 低遅延で HTTP ベースのストリーミングを実現
  • 欠点: 新興の仕様である為、ベンダーがまだサポートを実装していない。
  • 遅延: 3 秒以下

Apple の低遅延 HLS は、Periscope が作ったオープンソースの低遅延 HLS(LHLS)とは違う為、混同しないように注意が必要です。両者の主な違いは配信方法にあります。Apple の拡張機能とは異なり、Periscope のバージョンはチャンク化された転送エンコードを使用しています。ビデオ開発者のコミュニティでは、Apple の低遅延 HLS が支持され、Periscope のオープンソースである低遅延 HLS は選択肢に含めていません。

Wowza は昨年末、Wowza Streaming Engine で低遅延 HLS のサポートを追加しました。先駆的アダプターとして、Wowza はこの新しい技術に対抗して開発を続けており、Wowza の製品ポートフォリオ全体にサポートを拡大する為に取り組んでいます。

HLS ハードウェアとソフトウェア

HLS ストリームの設定方法については、Apple の推奨事項を参照してください。

ほとんどのコンテンツ配信者は、RTMP や WebRTC、または SRT を使ってビデオをエンコードし 、サーバーに到達した後でビデオを HLS にトランスコードするためにストリーミングサーバーを使用しています。また、コンテンツを幅広いデバイスの視聴者へ届くように、MPEG-DASH などの追加フォーマットで動画を配信する事も 1 つの手です。Wowza Streaming Cloud のようなクラウドベースのサービスや、Wowza Streaming Engine のようなストリーミングサーバーソフトウェアを使用して、トランスコード処理などを行うことができます。

HTML5 プレイヤー

最後に、視聴者に必要なものは互換性のあるデバイスか、HTML5 プレイヤーのいずれかです。Adobe Flash の衰退に伴い HLS は事実上の標準となっており、ほとんどのデバイスやブラウザには、すでにこの機能が組み込まれているのです。

HLS を使用しない場合

Web 会議、カメラやドローンのリアルタイムデバイス制御、状況認識など、1 秒未満の配信を必要とする用途には WebRTC(Web Real-Time Communications)の様なプロトコルが必要です。Apple の低遅延 HLS であっても、この様なシナリオでは不向きな遅延が発生します。

HLS を用いる場面

現在、HLS はメディアストリーミングで最も広く使用されているプロトコルで、大くの配信では HLS を使用するのが無難です。コネクテッドデバイスにストリーミングをする場合は、少なくとも HLS の検討をすべきです。特に、品質が重要となるライブイベントやスポーツを放送する場合はなおさらです。遅延については考慮する必要がありますが、Apple Low-Latency HLS 機能セットのサポートが実装されれば、2 秒以下の配信がより一般的になるはずです。これにより、インタラクティブなストリーミングやオンライン・ギャンブル、E スポーツなどに適したものとなります。

モバイルデバイスへのストリーミングでは、HLS は必需品です。携帯電話の世界で iPhone が果たしている役割を考えてみてください。多くのスマートテレビ、セットトップボックス、プレイヤーもデフォルトで HLS になっている為、リビングルームのユーザーにリーチしようとしている放送局も HLS に注目すべきです。まだ Flash の配信に RTMP を使用している人は、今こそ切り替えるタイミングです。

とはいえ、可能な限り幅広い視聴者へリーチするには、追加の動画フォーマットに対応することから始まります。様々な形式にストリームをトランスコードすることで、デバイスの種類に関係なくビデオのスケーラビリティを確保することが可能になります。

トランスコーディングが必要な方は Wowza Streaming Engine が理想的なソリューションです。また、早急な運用が必要な方は Wowza Streaming Cloud が適しています。