WebRTC サイマルキャスティング:WebRTC とは何か、どのように機能するか [ Wowza Blog 翻訳 ]

オリジナル:https://www.wowza.com/blog/webrtc-simulcast-what-it-is-and-how-it-works(2022 年 9 月投稿分)

様々な処理をされたリソースを、秒以下の遅延で複数の視聴者に配信するにはどうすればよいでしょうか?

WebRTC  サイマルキャスティングは、WebRTC でメディアファイルを準備し、ユーザーの帯域幅に関係なくスムーズかつ適度に高品質なストリーミングを可能にするプロセスのことを指します。

この記事では、この技術が類似の技術名や互換性のある目標とどのように異なるかを掘り下げて説明します。WebRTC の優れた利点は何か、WebRTC サイマルキャスティングは超低遅延ストリーミングという特長を失うことなく、どのようにワークフローを向上させているのかについても掘り下げていきます。

WebRTC とは?

WebRTC Logo

Google は、ほぼリアルタイムの超低遅延ストリーミングを目的とした、Web Real Time Communications(WebRTC)プロトコルを作りました。しかし、目的はそれだけではありません。WebRTC は、部分的には、ビットレート適応とリモート帯域幅制御という考えに基づいています。これらの要素は、UDP プロトコルの基礎とともに、高速かつ信頼性の高いストリーミングソリューションを提供するために組み合わされました。

WebRTC はなぜ速いのか?

WebRTC の超低遅延配信は 500 ミリ秒以下で、利用可能なストリーミングプロトコルの中で最速です。しかし、なぜ他の多くのプロトコルをここまで圧倒することができるのでしょうか?

このブラウザベースのプロトコルは、リアルタイムの音声、テキスト、ビデオ通信を提供します。WebRTC の中核は P2P のプロトコルです。つまり、視聴者の端末に到達するためにサーバーを経由してデータを転送することがないため、実質的に中間経路を排除できます。この場合、クライアントデバイスがサーバーとして機能し、データの要求と処理を行います。もちろん、WebRTC を使ったサイマルキャスティングを行う場合は、ストリームを促進するサーバーが必要になりますが、これについては後ほど詳しく説明します。

UDP プロトコルの概略

UDP(User Datagram Protocol)は WebRTC の基盤となっているプロトコルです。UDP は「確実性よりも速度を優先する」という原則に基づいて設計された通信プロトコルです。このプロトコルは、クライアントとサーバーの”ハンドシェイク”を必要とせずにストリーミングを開始することができます。つまり、データパケットは迅速に配信されますが、それらがどのように受信されるか、また伝送中に失われるものがあるかどうか分かりません。とはいえ、UDP はチェックサムというビットサイズのデータテストを使って、送信されるデータの品質を確認することができます。しかし、この方法には限界があります。

ここで注目すべきは、WebRTC が UDP を使ってデータを送信する方法は少し複雑だということです。WebRTC だけでは P2P 接続を確立できず、P2P セッションに関する重要な情報と ICE 候補(パブリック IP アドレス)の交換を伝えるために、セッション記述プロトコル(SDP)が必要となります。

WebRTC サイマルキャストとは?

WebRTC はオープンソースですので、多くのストリーミングソリューションがその機能を活用する方法を見出しています。より広範な配信に、早いストリームを望まない人はいないでしょう。しかし、ストリームに視聴者を追加すればするほど、誰かが帯域幅についていけなくなる可能性が高くなります。そこで、WebRTC サイマルキャストの出番です。

WebRTC サイマルキャストは、様々な帯域幅に対応できるよう代替ストリームを用意し、誰もが安定したストリームを受信できるようにします。これは、帯域幅のニーズを予測し、そのニーズに応じて配信する複数の代替ストリームをエンコードすることで実現されます。しかし、このプロセスについて詳しく説明する前に、 WebRTC について、もう少し詳しく説明します。

WebRTC サイマルキャスティングとマルチストリーミングの比較

ストリーミングのビジネスに携わっている方なら、WebRTC のサイマルキャスティングとマルチストリーミングの比較という言葉を聞いたことがあるかもしれません。しかし、広い意味でのストリーミングであるサイマルキャスティングは、マルチストリーミングとも呼ばれ、全くの別物です。マルチストリーミングとは、SNS など、さまざまなプラットフォームに対して同時にストリーミングを行うことを指します。マルチストリーミングは、再生場所に関するものであり、様々な帯域幅で再生するためのメディアのエンコードに関するものではありません。とはいえ、最終的な目標は同じではあります。

WebRTC サイマルキャスティングとアダプティブ・ビットレート・ストリーミングの比較

Wowza はビットレートについてこれまで多くのことを話してきました。アダプティブ・ビットレート(ABR)ストリーミングはライブストリーミングのホットな話題ですが、それには理由があります。ABR という用語は幅広い内容を連想させるかもしれませんが、エンコーディングラダーと利用可能な帯域幅の調整を含む特定のプロセスを指していることに注目する必要があります。これは、WebRTC サイマルキャスティングに期待されるより初歩的なアダプティブ・ビットレート・アクティビティとは異なるものです。

WebRTC サイマルキャスティングでは、クライアントで少数のビットレートオプションをエンコードし、各帯域幅の利用可能性に基づいて配信用に選択します。視聴者 1 人につき 1 つのビットレートが選択され、ABR のように帯域の変動によってビットレートが変化することはありません。一方、ABR は複数のビットレートが用意されており、エンドユーザー端末はその中から必要に応じて選択します。そして、ストリームの途中で必要に応じて切り替えることで、視聴体験を止めることなく、信頼性を損なわずに品質を最大限に高めることができます。

このように、ABR は視聴者ごとに変動する帯域幅に対応しやすく、WebRTC サイマルキャスティングは最初の予測値で止まってしまいます。しかし、サイマルキャスティングでは、代替ストリームを自ら生成してサーバーに送信するため、サーバーへの負担が少ないのが一般的です。サーバーがすべきことは、それをエンドユーザーのデバイスに転送するだけです。いずれにしても、この 2 つの技術には大きな共通点があります。

WebRTC でサイマルキャストを行うには?

全体像を理解することは大切なことですが、実際にそれを実現するにはどうしたらよいのでしょうか。WebRTC を使ったサイマルキャスティングは、思っているよりもずっとシンプルです。それは、SFU(Selective Forwarding Unit)メディアサーバーを用意することだけです。

SFUとは?

SFU は SFM(Selective Forwarding Middlebox) とも呼ばれ、データソースから複数のデータストリームを受信し、それらのストリームを適切な再生場所へ再ルーティングを行います。つまり、トランスコードやホスティングは行わず、 WebRTC 単体では不可能な方法でデータの選別を行います。

WebRTC サイマルキャストのワークフロー

WebRTC サイマルキャストのワークフローを見て、P2P の WebRTC 機能との違いについて説明します。

  1. パブリッシャーは、ターゲット出力解像度を選択します。
  2. サイマルキャストは、ターゲット出力解像度を使用して、設定されたアルゴリズムに基づき、3 つの異なるビットレートオプションを決定します。
  3. サイマルキャスト は 3 つのストリームをエンコードし、各ビットレートオプションに 1 つずつ対応します。
  4. 各代替ストリームは、選別のために SFU サーバに送信されます。パブリッシャーと SFU 間の帯域幅が低すぎて 3 つのストリームをすべて送信できない場合、より低いビットレートで再エンコードされます。
  5. SFU サーバは、利用可能な帯域幅に基づいて、各エンドユーザーデバイスに 1 つの代替ストリームを送信します。
  6. ユーザーは、ストリームの信頼性と高い品質を体験できます。

このように、WebRTC サイマルキャストは非常にシンプルです。ここで、他の WebRTC 機能との違いを明確にし、この仕組みがどのように機能するかをさらに明確にします。

WebRTC サイマルキャスト vs WebRTC 帯域幅

このように複数のストリームを異なるビットレートでエンコードする試みは、WebRTC の帯域幅推定として知られているものと混同しがちです。P2P 接続の場合、WebRTC ではストリームを開始する前に帯域幅の推定を行います。WebRTC はエンドユーザーデバイスが使用できる帯域幅を判断し、それに応じてデータを準備します。最終的な目標は、品質を犠牲にすることなく、遅延を回避することです。

しかし、WebRTC サイマルキャスティングは SFU を使用して、さまざまなエンドユーザー・デバイスへの代替ストリームをトリアージするため、パブリッシャーはエンドユーザーのデバイスの帯域幅を「見る」ことができなくなりました。代わりに、ターゲット出力解像度と、SFU との間で利用可能な帯域幅に基づいて推定する必要があります。SFU は、代替ストリームをすでに受信した後、そこから判断します。

WebRTC サイマルキャスト vs WebRTC ビットレート制御

WebRTC のビットレート制御という用語も、調べたことがあるのではないでしょうか。この用語の定義は明確ではなく、サイマルキャスト用の代替ストリームの生成から、P2P 接続における帯域幅の推定値に対応する試みまで、あらゆるものを指す可能性があります。

後者では、WebRTC は利用可能なビットレートに対して何らかの制御を行うことができます。WebRTC は帯域幅の推定値に基づいて、最適なビットレートオプションを選択します。WebRTC サイマルキャスティングの場合、3 つのビットレートオプションが用意され、選別のために SFU に送信されます。どちらの場合も、特定のエンドユーザーのデバイスで選択されたビットレートは、ストリームの期間中のビットレートとなります。

そして、そこに問題があります。WebRTC は、視聴者の帯域幅がどのように動作するかを完全に予測することはできません。帯域幅は、視聴者のネットワークや場所の変化によって大きく変動する可能性があります。視聴者の帯域幅で許容される最大限のビットレートを利用しようとすると、最初の見積もりではここまでしかいかないということがあります。

なぜ WebRTC サイマルキャストを使用するのか?

シンプルであること。WebRTC の超低遅延と、品質を犠牲にすることなく様々な帯域幅の制限を持つより多くの視聴者にストリーミングする能力が必要です。WebRTC サイマルキャストは、さまざまな帯域幅に対応したビットレートオプションを提供し、帯域幅の下限にいる視聴者に対応しながら、上限にいる視聴者まで幅広く対応しています。

WebRTC の問題点

WebRTC は、その優れた性能の反面、いくつかの大きな制約があります。この技術は歴史的に、大規模な放送ではなく、ビデオ会議のような限られたブラウザ内でのピアツーピア配信を意図しています。超低遅延を実現するための方法は、信頼性や拡張性に問題があるのと同じです。

しかし、より高いスケールでのWebRTCの需要は存在し、多くのワークフローや中間ソリューションがそのギャップを埋めるために歩み寄りました。サイマルキャスティングは、WebRTCがより広いオーディエンスやそれに伴うさまざまな帯域幅の制限に適応できるようにするために、不可欠な要素です。

WebRTC サイマルキャスティングのメリット

  • 帯域幅の制限に対応することで、視聴者のスケールアップができます。
  • SFU サーバーが適切なエンドユーザーデバイスに配信できるビットレートオプションを多数用意することで、映像品質を維持できます。
  • 様々な帯域幅のニーズに対応し、信頼性を向上させます。
  • 上記を実現しながらも、超低遅延を実現します。

WebRTC サイマルキャストと Wowza 

Wowza の Real Time Streaming at Scale ソリューションは、WebRTC を飛躍的に拡大し、様々なプラットフォームで最大 100 万人の視聴者に超低遅延のストリーミングを可能にします。Real Time Streaming at Scale は、3 つの異なるビットレートオプションとそれらを選別する SFU サーバを持つなど、上記のステップと同様に機能します。

私たちのワークフローでは、データは様々なデバイスから Wowza Video API に送信されます。その後、大規模配信のための SFU としても機能するカスタムのコンテンツ配信ネットワーク(CDN)を通じて、動画を配信します。さらに、Wowza は、WebRTC の約束であるリアルタイムの体験のための秒以下の遅延で提供しながら、これらすべてを実行します。

お問い合せ

    * のある項目は必ずご記入ください。