ライブストリーミングとは?|ライブストリーミングの仕組み

ライブストリーミングは、データの作成に伴って、インターネットを介して視聴者に動画または音声データを配信することです。

Share facebook icon linkedin icon twitter icon email icon

ライブストリームエンコーディング

学習目的

この記事を読み終えると、以下のことができます。

  • ビデオファイルがエンコードされる理由を理解する
  • ライブストリームエンコーディングの仕組みを学ぶ
  • ライブストリームエンコーディングプロセスの改善によりレイテンシーを削減する方法を学ぶ

ライブストリーミングとは?

ストリーミングは、インターネットで動画を視聴するときに使用されるデータ送信の方法です。多くの場合、遠隔の保存場所から動画ファイルを少しずつ配信する方法です。インターネットを介して一度に数秒のファイルを送信することにより、クライアントデバイスは、再生を開始する前に動画全体をダウンロードする必要がなくなります。

ライブストリーミングとは、ストリーミングされる動画が先に記録および保存されることなく、インターネットを介してリアルタイムで送信される場合です。今日、テレビ放送、ビデオゲームストリーム、ソーシャルメディア動画はすべてライブストリーミングできます。

通常のストリーミングとライブストリーミングの違いは、俳優が暗記した独白を唱えることとスピーチを即興で行うことの違いと考えてください。前者では、コンテンツは事前に作成され、保存されてから視聴者に中継されます。後者の場合、視聴者は、ライブストリーミングの場合と同じように、俳優が作り出すのと同じ瞬間にコンテンツを受け取ります。

通常、ライブストリーミングという用語は、ライブストリームをブロードキャストすることを意味します。複数のユーザーに同時に送信される1対多の接続です。Skype、FaceTime、Google Hangouts Meetなどのビデオ会議テクノロジーは、1対多のライブストリームブロードキャストで使用されるプロトコルではなく、リアルタイム通信(RTC)プロトコルで動作します。

ライブストリーミングの技術レベルの仕組みとは?

ライブストリームの舞台裏で行われる主な手順は次のとおりです

ビデオキャプチャ

ライブストリーミングは、生の動画データ、つまりカメラでキャプチャされた視覚情報から始まります。カメラが接続されているコンピューティングデバイス内では、この視覚情報はデジタルデータとして表現されます。つまり、最も深いレベルの1と0です。

セグメント化

動画には多くのデジタル情報が含まれているため、短いPDFや画像をダウンロードするよりも動画ファイルをダウンロードする方が時間がかかります。一度にすべての動画データをインターネット経由で送信することは実用的ではないため、ストリーミングビデオは長さが数秒の小さなセグメントに分割されます。

圧縮およびエンコーディング

次に、セグメント化された動画データが圧縮およびエンコードされます。冗長な視覚情報を削除することにより、データが圧縮されます。たとえば、ビデオの最初のフレームに灰色の背景に対して話している人が表示されている場合、灰色の背景は、同じ背景を持つ後続のフレームに対してレンダリングする必要はありません。

動画圧縮は、リビングルームに新しい家具を追加するようなものだと考えてください。新しい椅子やサイドテーブルを追加するたびに、まったく新しい家具を購入する必要はありません。代わりに、部屋のレイアウトをほぼ同じに保ち、一度に1つの家具だけを変更していき、時に必要に応じて模様替えを行うことができます。同様に、ビデオストリームのすべてのフレームを全体としてレンダリングする必要があるわけではなく、人の口の動きなど、フレームごとに変化する部分だけをレンダリングする必要があります。

「エンコーディング」は、データを新しい形式に変換するプロセスを指します。ライブストリーミングビデオデータは、さまざまなデバイスが認識する解釈可能なデジタル形式にエンコードされます。一般的なビデオエンコーディング標準は次のとおりです

  • H.264
  • VP9
  • AV1
  • HEVC

CDNの分散とキャッシュ

ライブストリームがセグメント化、圧縮、およびエンコードされたら(すべてに数秒しかかかりません)、それを視聴したい数十万人の視聴者が利用できるようにする必要があります。さまざまな場所の複数の視聴者にストリームを配信しながら、最小限の遅延で高品質を維持するには、CDNが配信する必要があります。

CDNは、配信元サーバーに代わってコンテンツをキャッシュおよび提供するサーバーの分散ネットワークです。CDNを使用すると、ユーザー要求が配信元サーバーまで到達する必要がなくなり、代わりに近くのCDNサーバーで処理できるため、パフォーマンスが向上します。この方法でリクエストを処理し、コンテンツを配信することにより、配信元サーバーのワークロードも削減されます。最後に、CDNは世界中のユーザーにコンテンツを効率的に提供することを可能にします。これは、サーバーが単一の地理的エリアにクラスター化されるのではなく、世界中にあるためです。

CDNは、ライブストリームの各セグメントをキャッシュ(一時的に保存)するため、ほとんどの視聴者は、配信元サーバーからではなくCDNキャッシュからライブストリームを取得します。これにより、キャッシュされたデータが数秒遅れている場合でも、実際にはライブストリームがリアルタイムに近づきます。これは、配信元サーバとの間での往復時間(RTT) を削減するためです。

デコーディングとビデオ再生

CDNは、ストリームを視聴しているすべてのユーザーにライブストリームを送信します。各ユーザーのデバイスは、セグメント化された動画データを受信し、デコード、および解凍します。最後に、ユーザーのデバイスのメディアプレーヤー(専用アプリまたはブラウザー内のビデオプレーヤー)がデータを視覚情報として解釈し、動画が再生されます。

アリスがスマートフォンでライブストリームを開始し、国の反対側に住んでいるボブや、その他数十人のアリスの友人がスマートフォンでライブストリームを視聴するとします。アリスは、スマートフォンのカメラを自分に向けて、「Hello、world!」と言って、ライブストリームを開始します。国の反対側のボブやストリームを視聴している他のすべての人々にこの「Hello、world!」という動画が到達するためには何が起こる必要がありますか?

最初に、アリスのスマートフォンは、その小さな動画セグメントをエンコーディングおよび圧縮します。アリスがキッチンでライブストリームを撮影している場合、キッチンの壁は動画の最初のフレームとして記録され、その後のフレームでは背景が変わらないため除外されます。

これで、アリスが使用しているアプリは、彼女が「Hello、world」と言っている場面のエンコーディングされて圧縮されたバージョンを、アプリのCDNに送信します。ボブにとって幸いなことに、CDNサーバーの1つが彼の自宅からほんの数マイルの距離にあるため、ライブストリームの最初のセグメントに対する彼のスマートフォンからの要求はほぼ即座に回答されます。他のライブストリーム視聴者は、地理的な場所に応じて、経験するレイテンシーがボブよりも長いまたは短い場合があります。

ボブの電話はビデオセグメントをデコードし、圧縮データを再構築します。これにより、アリスのキッチンの壁がすべてのフレームに表示されます。そして最後に、アリスがキッチンで「Hello、world」と言ったわずか数秒後、国の反対側で、ボブのスマートフォンに彼女の顔が表示され、ボブは彼女の挨拶を見たり聞いたりできます。

ライブストリーミングにとってCDNが重要な理由は?

帯域幅:ネットワーク上の任意のポイントを一度に通過できるデータの量は限られています。この測定値は「帯域幅」として知られています。データのストリームがネットワーク上のこのポイントに到達し、データ量が容量を超えるた場合、これは「チョークポイント」と呼ばれます。ここでは、データ配信が絞り込まれて速度が低下します。チョークポイントは、1車線の道路を使用しようとする車が多すぎるときに交通の減速が発生することがあるのと似ています。

ストリームのすべての視聴者が配信元からストリームデータを取得している場合、配信元サーバーとその周囲のネットワークインフラストラクチャがチョークポイントになり、ストリームの速度が低下します。ただし、ストリーム配信の主な負担がCDNに移されると、チョークポイントはなくなります。

グローバルコンテンツ配信: CDNは世界中に配信されるため、コンテンツをグローバルな視聴者に配信できます。ニューヨークの配信元サーバーは、ミラノの視聴者にコンテンツを効果的に提供できません。これは特に、動画のような重いコンテンツの場合です。ただし、CDNはネットワーク上の任意のポイントからコンテンツを転送および提供できるため、ニューヨークのライブストリームを視聴しているミラノの人は、ニューヨークから読み込むのを待つのではなく、ミラノのサーバーからストリームを取得できます。

レイテンシーとRTTの削減: CDNを使用してコンテンツをグローバルに配信すると、RTT(往復時間)が削減されるため、ライブストリームの視聴者の感じるレイテンシーが削減されます。視聴者のライブストリームのリクエストがストリームの元のソースに移動する必要がなくなり、ストリーミングデータが配信元から移動する必要がなくなるため、要求と応答のラウンドトリップは距離と時間の両方の面で短くなります。これにより、遅延が減少し、ライブストリームをライブに保つことができます。

ワークロード:データに対するユーザーの要求に応答すると、サーバーにある程度の計算能力がかかります。動画データに対する多数のユーザーリクエストに応答すると、1台のサーバーが圧倒される可能性があります。CDNは、数十または数百のサーバーを利用します。これらのサーバーは、配信元サーバーから多くのワークロードを取り除いて、稼働させ続けることができます。

キャッシュ:CDNは、ライブストリームの各ビデオセグメントをキャッシュします。CDNは、配信元サーバーからデータを取得する代わりに、キャッシュからセグメントを配信できます。

キャッシュからライブストリームを提供することは矛盾のように見えます。ストリームがライブである場合、数秒後にストリームを保存して配信するのがなぜより速いのでしょう?キャッシュされたライブストリームがリアルタイムより少し遅れることは事実ですが、これは配信元サーバーに到達するよりも速いのです。往復には時間がかかるため、ストリームはさらに遅れます。CDNキャッシュを使用すると、ユーザーの経験する遅延時間は最小限となります。

Cloudflareはライブストリーミングをどのように加速するのか?

Cloudflare CDNは、同時ストリーミングアクセラレーションと呼ばれる技術を使用して、ライブストリーム配信を高速化します。他のストリームは、セグメントがキャッシュに完全に保存されるまで、複数のユーザーにビデオセグメントを提供できません。ただし、Cloudflare CDNは、これらのセグメントを読み込み中に一度に複数の視聴者に直接提供することができ、ユーザーの貴重な待ち時間を削減します。 同時ストリーミングアクセラレーションの詳細をご確認ください