HTTPライブストリーミング(HLS)は、ほぼすべてのサーバー上で実行できる広く使用されている動画ストリーミングプロトコルであり、ほとんどのデバイスによってサポートされています。HLSにより、クライアントデバイスはストリームの品質を上げたり下げたりすることで動的なネットワークの変化にシームレスに適応できます。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
HTTPライブストリーミング(HLS)は、最も広く使用されている動画ストリーミングプロトコルの1つです。HTTP「ライブ」ストリーミングと呼ばれているものの、オンデマンドストリーミングとライブストリーミングの両方に使用されます。HLSは、動画ファイルを小さいダウンロード可能なHTTPファイルに分割して、HTTPプロトコルを使用して配信します。クライアントデバイスは、これらのHTTPファイルを読み込んで動画として再生します。
HLSの長所の1つは、インターネットに接続されたすべてのデバイスがHTTPをサポートしているので、特殊なサーバーを使用する必要があるストリーミングプロトコルに比べて実装が簡単であることです。もう1つの長所は、HLSストリームが再生を中断することなくネットワークの状態に応じて動画品質を上げたり下げたりすることができることです。これが、ユーザーが動画を視聴しているときに、途中で動画の品質が良くなったり悪くなったりする理由です。この機能のことを「アダプティブビットレート動画配信」または「アダプティブビットレートストリーミング」と呼びます。この機能がないと、ネットワークの状態が遅くなったときに動画をまったく再生できなくなる可能性があります。
HLSは、Apple製品に使用するためにAppleによって開発されましたが、今ではさまざまなデバイスに使用されています。
ストリーミングは、インターネットを介してユーザーにオーディオ/ビジュアルメディアをユーザーに配信する方法です。メディアファイルをユーザーのデバイスに一度にではなく、少しずつ継続的に送信することで機能します。元のメディアファイルはリモートで保管されるか、ライブストリーミングの場合は、リモートカメラ/マイクを使用してリアルタイムにて作成されます。このようにして、ユーザーのデバイスが最初にファイル全体をダウンロードしなくても動画または音声を再生できます。
HTTPは、ネットワークに接続されたデバイス間で情報を転送するためのアプリケーション層プロトコルです。通常のユーザーがアクセスできるすべてのWebサイトやアプリケーションはHTTP経由で実行されます。通常、HTTPを介したデータ転送は、リクエストとレスポンスに基づいています。ほぼすべてのHTTPメッセージはリクエストまたはリクエストに対するレスポンスのいずれかです。
HTTP経由のストリーミングでは、標準的なリクエスト・レスポンスのパターンは適用されません。クライアントとサーバー間の接続はストリームの合間はオープンのままであり、クライアントが動画データのすべてのセグメントを要求しなくても済むように、サーバーは動画データをクライアントにプッシュします。
サーバー:HLSストリームは、(オンデマンドストリーミングでは)メディアファイルが保存されているサーバーまたは(ライブストリーミングでは) ストリームが作成されるサーバーから発信されます。HLSはHTTPベースであるため、通常のWebサーバーすべてがストリームを発信できます。
サーバー上で2つの主なプロセスが実行されます:
配信:エンコードされた動画セグメントは、クラアイントデバイスがストリームを要求すると、インターネットを介してクライアントデバイスにプッシュされます。通常、コンテンツ配信ネットワーク(CDN)を利用することで地理的に分散した地域にストリームを配信することが可能になります。また、CDNはより速くクライアントに配信するためにストリームをキャッシュします。
クライアントデバイス:クライアントデバイスとは、ストリームを受信して動画を再生するデバイスのことです。たとえば、ユーザーのスマートフォンやノートパソコンなどです。クライアントデバイスは、動画を順序どおりに組み立てるために参照としてインデックスファイルを使用し、必要に応じて、高品質の画像から低品質の画像(またはその逆)に切り替えます。
HLSがほかのストリーミングプロトコルに比べて優れている点の1つは、アダプティブビットレートストリーミングです。これは、ネットワーク状態が変化したときにストリームの途中で動画品質を調整できることを意味します。これにより、ネットワーク状態が悪化した場合でも動画を再生し続けることができます。逆に、ネットワークがサポートできる最高のレベルまで動画品質を最大化します。
ネットワークの速度が低下すると、ユーザーのビデオプレイヤーはそれを検知し、アダプティブビットレートストリーミングがストリームの品質を引き下げて、動画の再生が停止しないようにします。より多くのネットワーク帯域幅が利用可能になると、アダプティブビットレートストリーミングがストリームの品質を引き上げます。
アダプティブビットレートストリーミングが可能なのは、HLSがセグメンテーションプロセスにて異なる品質レベルで複数の重複するセグメント化されたストリームを作成するからです。ユーザーのビデオプレイヤーは、動画再生時に1つのストリームから別のストリームに切り替えることができます。
TCPとUDPはトランスポートプロトコルです。つまり、インターネットを介してコンテンツを配信します。TCPはUDPより確実にデータを配信できる傾向がありますが、UDPは転送中に一部のデータが失われる可能性があるもののずっと速いです。
UDPの方が速いため、多くのストリーミングプロトコルはTCPではなくUDPを使用します。しかし、HLSはTCPを使用します。これにはいくつかの理由があります。
MPEG-DASHやHDSのように、HTTP経由で実行されアダプティブビットレートストリーミングを提供するHLSと同様のプロトコルが数多くあります。RTMPプロトコルまたはHDSで動作していたAdobe Flashは、かつては動画ストリーミングに使用される主な技術でしたが、今では多くのブラウザがAdobe Flashをサポートしていません。RTMPは今も使用されていますが、サポートは減少しています。
Cloudflareはオンデマンドとライブストリーミングの両方についてHLSをサポートしています。Cloudflare Streamは、動画ストレージ、エンコーディング、カスタマイズ可能なプレーヤーを、120か国以上、330都市以上に広がる、高速で安全、信頼性の高いCloudflareネットワークとシームレスに統合します。これにより、全世界のユーザーは高速・高品質なHLSストリームを受信することができます。Cloudflare Streamの詳細をご確認ください。