WebRTC とは?
この記事は、当社パートナーの Wowza Media Systems の記事 What Is WebRTC? (Update) の翻訳記事です。この記事では、WebRTC ストリーミングプロトコルを詳しく説明します。
ビデオ会議からオンラインの賭けや入札まで、インタラクティブなライブ ストリーミング ソリューションでは、Web リアルタイム コミュニケーション (WebRTC) が不可欠な基盤技術になっています。 WebRTC の普及は、速度と互換性の組み合わせに行き着きます。
より具体的には、WebRTC は 500 ミリ秒未満のビデオ配信で最も遅延の低いストリーミング形式です。 また、ブラウザーでのネイティブ サポートにより、エンド ユーザーが (不格好な) アプリをダウンロードして配信されるストリームを再生する必要がなくなります。
とは言え、WebRTC が設計された純粋なチャット ベースのアプリケーションから外に出て開発者が他のシナリオを検討しはじめると、課題が発生する可能性があります。 この記事では、WebRTC ビデオ ストリーミングの仕組み、それがもたらす利点、WebRTC の制限、および、それらを解決する方法について説明します。
WebRTCとは?
WebRTC は、その名前の通り、リアルタイム通信 (RTC) を可能にする Web のためのフリーのオープン フレームワークです。 標準仕様、プロトコル、および、JavaScript API の組み合わせとして、WebRTC はブラウザー間でのピアツーピア接続を活用して、サードパーティのソフトウェアやプラグインを必要とせずに、ほぼ同時にデータを交換することができます。
つまり、WebRTC を使用すると、ユーザーはブラウザからクリックして開始するビデオ チャットを開始し、対面でのやり取りと同様の十分な速さで情報を交換できます。これにより、一連の標準プロトコルを介したブラウザ間の通信が実現でき、個人間のインタラクティブなライブ ストリーミングのシナリオがサポートされます。
WebRTC はどのように機能しますか?
WebRTC は 3 つの HTML5 API を採用しており、ユーザーのブラウザーが相互にライブ ストリームをキャプチャ、エンコード、および、送信できるようにし、双方向通信を可能にします。このため、WebRTC はピア ツー ピア テクノロジと呼ばれ、各ブラウザは互いに直接通信します。
WebRTC の優れた点はそこにあります。追加の機器やソフトウェアは言うまでもなく、WebRTC の通信データの交換中に中間 Web サーバーが不要になります。 URL ベースのオンラインミーティングは、WebRTC が提供する利便性とリアルタイム コミュニケーションの優れた例です。
一部のストリーミング ワークフローでは、ライブ ストリーミング カメラ、エンコーダー、およびメディア サーバーが必要ですが、最も単純な WebRTC ワークフローの展開では、接続された Web カメラとブラウザーですべてを実現できます。また、Flash ベースのビデオとは異なり、WebRTC は WebRTC API をサポートする任意の HTML5 プレーヤーで再生できます。
ただし、WebRTC は中間サーバーなしでネイティブに情報交換ができるよう設計されているため、多数の視聴者を処理することはできません. WebRTC を大規模にストリーミングしようとする場合は、ストリーミング サーバーまたはサービスの助けが必要です。コンテンツをよりスケーラブルな配信が可能な形式にパッケージ化することから、カスタム構築された WebRTC コンテンツ配信ネットワーク (CDN) を介してライブ ストリームを配信することまで、Wowza では WebRTC ワークフローを構成して最大 100 万人の視聴者の視聴に対応するためのオプションを提供できます 。
WebRTC スナップショット
- オーディオコーデック: Opus、iSAC、iLBC
- ビデオコーデック: H.264、VP8、VP9
- 再生の互換性: Chrome、Firefox、および Safari は、プラグインなしで WebRTC をサポートします
- 利点: 超高速でブラウザベース
- 欠点: ビデオ会議用に設計されており、拡張性がないため、大勢の視聴者にストリーミングする場合は Wowza のようなストリーミング プラットフォームが必要です
- 遅延 (レイテンシ): サブ 500 ミリ秒の配信
WebRTC の成り立ち
WebRTC は、ブラウザがプラグインなしでリアルタイムの音声およびビデオ通信をサポートできることを目的とした Google オープンソース プロジェクトとして始まりました。多くの点で RTMP や Flash などの独自のストリーミング技術に対するアンチテーゼとなる WebRTC は、IETF と W3C によって標準化されています。 WebRTC は、コミュニティ主導のプロジェクトの力と確立された仕様のクロスプラットフォーム サポートが組み合わさったことで、最初の開発の後、その後の 10 年間で成長しました。
現在、WebRTC は Chrome, Safari, Firefox, Opera, Microsoft Edge, Android, iOS (iOS 15 + Safari を除く) でサポートされています。また、Google ハングアウト, Facebook Messenger, Houseparty などのビデオ チャットを強化する技術でもあります。 Google によると、
WebRTC をサポートする Chrome, Edge, Firefox, Safari によって、世界中でインストールされているすべてのブラウザーの 85% 以上が インターネット上のリアルタイム通信のクライアントになっている
とのことです。
WebRTC の利点
WebRTC がユーザーと開発者の両方に提供する多くの利点を考えると、WebRTC がこれほどまでに誇大宣伝されている理由は理にかなっています。低遅延の配信から相互運用性まで、すべてが魅力的な選択肢となっています。
- 本来の低遅延の性質: 配信速度に関して言えば、WebRTC は群を抜いています。 500 ミリ秒未満の Glass-to-Glass 遅延 (訳注: 送信元の画面の表示から受信先の画面の表示までの遅延) で、WebRTC はインターネット経由でビデオを転送するための最速の方法を提供します
- プラットフォームとデバイスの非依存性: すべての主要なブラウザーとデバイスは WebRTC をサポートしているため、専用のインフラストラクチャーなしで幅広く Web アプリに簡単に統合できます; WebRTC は HTML5 API を使用するため、開発者は HTML5 プログラミング言語に組み込まれた多くの機能を軽量の組み込みフレームワークを通じて利用でき、さらに、ブラウザベースのエンコーディングにより、すべてのユーザーにとってアクセスしやすいエンド ユーザー エクスペリエンスが保証されます
- オープンソースの標準化: オープンソース フレームワークは IETF と W3C によって標準化されているため、独自のストリーミング テクノロジに伴う相互運用性の問題が解消されます; Computerworld の Shan Sinha 氏は次のように説明しています
:
WebRTC は、何千人ものソフトウェア開発者が協力して作業し、会議プロトコルを標準化し、相互運用性をあまり気にしないという利点があります
ほとんどの企業は、プラットフォームにコードを提供する何千もの独立した開発者と競争することはできません — Google や Apple のような大規模な組織でさえ、Web コミュニティ主導の取り組みと比較すると見劣りします
- 様々なネットワーク条件に適応: WebRTC は、アダプティブ ネットワーク エンコーディングにより、劣悪なネットワーク環境でも信頼性の高いパブリッシング (訳注: ビデオの送出) を保証します。これは、“サイマルキャスト” と呼ばれる機能をサポートしているためです。この用語の従来の定義である、「複数の宛先へのブロードキャスト」と混同しないよう注意してください。 WebRTC サイマルキャストを使用すると、クライアントはさまざまなビットレートと品質で複数のストリームを生成するため、ネットワークの状態が悪くてもビデオの送出が妨げられることはありません。再生中にストリームが動的に調整されるアダプティブ ビットレート ストリーミングとは異なり、これはパブリッシング側 (訳注: ビデオの送出側) で行われ、ストリームの途中でビットレートを適応させる機能ではなく、複数のエンコーディングを提供します。
WebRTC の制限
WebRTC ストリーミングでは、低遅延配信が最優先されます。その結果、その他の追加の技術なしで WebRTC を展開する場合、スケーラビリティと配信品質に制限があります。
- スケーラビリティ
- WebRTC はスケーラビリティを考慮して設計されていません。
- 帯域幅を集中的に使用するような構成では、参加している各ブラウザーがピア接続を介して相互に接続する必要があります。WebRTC の専門家である Tsahi Levent-Levi は 50 を超える同時ピア接続を避けることを推奨しています 。
- 配信品質
- 一般的な誤解としては、ビットレートの制限により WebRTC の品質が十分でないというものです。
- ブラウザーベースの配信では、解像度の面では本質的にはネットワークの接続性とカメラの機能に依存しますが、高ビットレートのエンコーディングは依然として可能です。
- とはいえ、プロのエンコーダーとカメラを使用してストリーミングしたいコンテンツのディストリビューターにとっては、制作されたコンテンツのストリーミングにはこのタイプのワークフローが理想的とは言えないかもしれません。
- さらに、アダプティブ ビットレート ストリーミングのサポートは、WebRTC では制限されています。
WebRTC ストリーミングのユースケース
WebRTC は、速度と双方向性に依存するアプリケーションにとって理想的な配信フレームワークです。たとえば、オンライン オークションを主催しているとします。カメラで入札を募っていますが、5 秒の遅延は、視聴者が少し遅れて入札することを意味します。 1 回、2 回、最終的なオファーを受け入れます。最後の 1 秒で誰かがより良い入札を入れようとしますが、その遅延のせいですでに入札を閉じてしまっているかもしれません。
WebRTC の 500 ミリ秒未満の遅延では、その遅延は問題とはなりません。 その最終入札をほぼリアルタイムで受け付けることができます。 WebRTC は、次のようなアプリケーションにも役立ちます。
- ゲーム
- e-スポーツ
- ライブスポーツ
- フィットネス
- ギャンブル
- 緊急対応
- 監視
- 遠隔医療
- その他の様々なアプリケーション
配信するストリームをリアルタイムに近づける必要があるほど、WebRTC による解決の可能性が高くなります。
WebRTC セキュリティとは?
WebRTC は、SRTP (Secure Real Time Protocol) 暗号化およびその他の標準のグループ (結局のところ、単なるプロトコル以上のものとなっている) を義務付けているため、安全です。 WebRTC の標準化を支援した組織の 1 つである Internet Engineering Task Force は、暗号化を必要としない WebRTC 接続を完全に禁止しています。
プロトコル レベルで暗号化されるだけでなく、WebRTC はブラウザとコミュニティによってサポートされたセキュリティも活用しています。 Firefox, Chrome, Safari, Edge などの主要なブラウザはすべて WebRTC セキュリティを真剣に考えているため、WebRTC フレームワークにアクセスするために HTTPS、IP アドレス漏洩の保護、カメラとマイクへのアクセスを許可する前にユーザーが個々のサイトにアクセス許可を付与すること、および、その他のプライバシー コントロールを必要とします。オープンソース プロジェクトとして、WebRTC の開発者コミュニティも協力して、最高のセキュリティを確保しています。
標準の Web 暗号化とセキュリティが WebRTC の追加レイヤーとどのように比較されるか、理解を深めるために次のワークフローを確認してください。
WebRTC は他のプロトコルとの比較
上記に説明したように、WebRTC は単なるプロトコルではありませんが、HLS, RTMP, RTSP, SRT など、プロトコルのみの観点ではいくつかのビデオ配信形式に代わるものになります。WebRTC はこれらと比べてどのようになるでしょうか?
WebRTC と HLS
HTTP ライブ ストリーミング (HLS) は、通常、ラストマイル配信に使用される Apple 独自のプロトコルです。 Apple は、当初、ライブ ストリーム中の iPhone での再生に関する問題を解決するためにこのプロトコルを開発しましたが、その後、人気を博し、現在では無数のデバイスとブラウザーがサポートするほぼ普遍的に受け入れられているプロトコルになっています。
再生の互換性は、プロトコルを比較する主な理由となります。WebRTC と HLS をサポートしていないシステムはほとんどないため、視聴者を除外してしまうことを心配する必要はありません。
これらのプロトコルの主な違いは、遅延 (レイテンシー) とスケーラビリティにあります。 HLS 自体は実際にはかなり遅く、レイテンシーは 6 ~ 30 秒です。 Apple の Low Latency HLS 拡張機能を使用すると、その遅延を約 2 秒に短縮することができますが、それでも WebRTC で実現できる 500 ミリ秒未満の配信とは比較になりません。
ただし、HLS はスケーラブル配信を可能とします。このプロトコルにより、数千から数百万の視聴者に簡単に配信することができます。 WebRTC は大量の視聴者にコンテンツをストリーミングすることが意図された設計ではないため、最大 50 人の視聴者まではパフォーマンスが向上します。ただし、Wowza の Real-time Streaming at Scale のようなソリューションのカスタム CDN 部分を使用して、WebRTC のスケーラビリティの問題を克服し、何百万人もの視聴者にリーチすることは可能です。
WebRTC 対 RTMP および SRT
Real-Time Messaging Protocol (RTMP) は、Adobe Flash との緊密な関係のため、かつて業界で最も重要なプロトコルでした。 RTMP は、Flash の廃止後、ストリーミング ワークフローの特定の部分でほとんどサポートされなくなりましたが、エンコーダーとの互換性により、最初の 1 マイル (ファーストマイル) のビデオの入力では依然として人気があります。たとえば、多くのワークフローでは、ビデオ ストリームを HLS にトランスコードしてラストマイル配信する前に、RTMP でエンコードして入力します。
RTMP の遅延は約 5 秒で、WebRTC の非の打ちどころのない遅延にはほど遠いですが、低遅延の拡張機能を使用しない場合、HLS と DASH (の引き起こす遅延) を凌駕しています。 WebRTC は、セキュリティや互換性 (RTMP をサポートするブラウザーはほとんどありません) など、他の多くの面で RTMP に匹敵するか、または、RTMP よりも優位性がありますが、キャプション、時刻付きのメタデータ、広告マーカーなどの機能では、RTMP が優位に立っています。 WebRTC は、トランスコーディングを必要としない Glass-to-Glass ストリーミングに最適な選択肢です (特にどちらか一方の終端に Web ブラウザーだけが利用できる場合)。
また、WebRTC と Secure Reliable Transport (SRT) の比較を検討することも重要です。 SRT は RTMP の代替として開発され、低遅延で信頼性の高いストリームを配信するためにネットワーク品質の低さを補うことができます。そのため、SRT の長所と短所は、WebRTC と比較すると似ています。トランスコードする前に、最初の 1 マイル (ファーストマイル) のビデオの入力に使用でき、SRT を使用してジッターやパケット損失などの問題を解決できます。
WebRTC 対 RTSP
リアルタイム ストリーミング プロトコル (RTSP) は、厳密には、クライアントからサーバーへのデータの転送を行いません。データ転送は、リアルタイム トランスポート プロトコル (RTP) の役割です。しかし、RTSP/RTPは、マルチメディアの再生に対応し、RTMP とよく比較されます。
RTSP は多くの場合、IP カメラの既定のプロトコルであるため、RTSP と WebRTC は互いに補完し合うことがあります。これらのカメラは、最初の 1 マイル (ファーストマイル) のビデオの入力には RTSP を使用し、最後の 1 マイル (ラストマイル) の配信には映像を WebRTC にトランスコードすることで、レイテンシを劇的に短縮します (これは監視のシナリオでは特に重要となります)。 WebRTC はまだほとんどがブラウザベースの実装であるため、プロセスの両端で使用されていないので、IP カメラでのエンコードには RTSP を使ってこのワークフローが実現されます。
訳注: この記事の投稿時点では、WebRTC 出力をサポートする IP カメラはありませんので、IP カメラからの出力は RTSP となりますが、Wowza のソリューションを使うことで、WebRTC の出力で配信することができます
WebRTC スケーラビリティの問題の解決
従来のピアツーピア WebRTC 接続では、それぞれのブラウザーはグループ内の他のすべてのブラウザーに直接接続し、その結果として帯域幅を消費します。 Wowza は、WebRTC のスケーラビリティの制約を克服するための 3 つのオプションを提供します
Wowza Video の大規模なリアルタイム ストリーミング
Wowza Video の大規模なリアルタイム ストリーミング機能は、カスタム CDN 全体に WebRTC を展開し、ほぼ無限のスケールを提供します。コンテンツの配信者は、0.5 秒未満で 100 万人の視聴者にストリーミングできるため、リアルタイム配信と大規模なブロードキャストを組み合わせることができます。
Wowza ストリーミング エンジンを搭載した WebRTC
すべてのライブストリーミングの参加者を Wowza Streaming Engine のようなライブ ストリーミング サーバーに接続することで、コンテンツ配信者は大規模なリアルタイム ストリーミングの恩恵を受けながら、それぞれのクライアントが確立および維持する必要のある接続数を最小限に抑えて帯域幅を最適化します。数百人の視聴者を超えて配信をスケーリングするには、追加のインフラストラクチャが必要になります。その場合、Wowza Video を使用した大規模なリアルタイム ストリーミングがより適切な方法です。
WebRTC を HLS または DASH に変換する
最後に、ライブ ストリーミング サーバーまたはクラウドベースのサービスを使用して、WebRTC ストリームを HLS などのプロトコルにトランスコードし、数千人に配信できます。こうすることで、コンテンツ配信者は、待ち時間は長くなりますが、シンプルなブラウザー ベースのパブリッシングと大規模なブロードキャストを組み合わせることができます。 WebRTC をストリーミング ワークフローに組み込む主な理由がコンテンツの単純な配信 (リアルタイム配信ではない) である場合、このソリューションが最適です。
訳注: CDN を組み合わせることで数千から数百万の大規模の視聴者に配信することが可能となります。
WebRTC 配信品質の問題の解決
WebRTC 経由でストリーミングされるコンテンツの品質を向上させる場合、上記で概説した 2 つのオプションが再び有効になります。
Wowza Video の大規模なリアルタイム ストリーミング
Wowza Video の大規模なリアルタイム ストリーミングは、RTMP インジェストを使用するか、カスタムの OBS 統合を活用して、任意のエンコーダーを介してストリーミングを入力する柔軟性を提供します。つまり、コンテンツ配信者は、制作されたコンテンツの配信を検討する際に、ブラウザ ベースのキャプチャとエンコーディングに限定されないということです。
WebRTC を HLS または DASH に変換する
HLS と DASH は、アダプティブ ビットレート ストリーミングを活用して、接続、ソフトウェア、またはデバイスに関係なく、可能な限り最高のビデオ品質と視聴者体験を提供します。そのため、WebRTC ストリームをこれらのプロトコルのいずれかに変換すると、配信規模と配信品質が解決されます。重要なトレードオフは遅延であるため、リアルタイム配信が優先されない場合にのみ、このワークフローをお勧めします。
WebRTC と Wowza を組み合わせる理由
リアルタイムの双方向性、大規模なブロードキャスト、または、その両方をサポートする必要がある場合でも、Wowza の WebRTC ソリューション はニーズに合わせてカスタマイズすることができます。小売業からゲーム業界まで、様々な業界の組織が、リアルタイム配信、ブラウザベースのビデオの取り込み、および、大規模なビデオ配信の実現のために、Wowza を利用した WebRTC に依存しています。
無限のスケーリング
WebRTC は、参加者が少数のビデオ チャット環境向けに設計されていますが、Wowza の技術と組み合わせることで、最大 100 万人の視聴者にブロードキャストすることができます。 Wowza Video の大規模なリアルタイム ストリーミングにより、超高速配信をシームレスに実現することができます。
拡張された可能性
ビデオ録画、セキュリティ、その他の機能強化など、WebRTC に追加機能を追加するには、バックエンドに強力なストリーミング ソフトウェアが必要となります。 Wowza は、WebRTC の標準機能を強化するための強力なツール、API、および、モジュールを提供します。また、Wowza のライブ ストリーミング プラットフォームを使って、コンテンツ配信者が、ニーズに適した他のストリーミング プロトコルと WebRTC とを組み合わせたハイブリッド ワークフローを構築できます。
シンプルなブラウザベースのブロードキャスト
WebRTC はブラウザーベースのパブリッシングを強化しますが、バックグラウンドで Wowza を使用することで、無数のユーザーにコンテンツをブロードキャストすることができます。Wowza の WebRTC ストリーミング ソリューションは、エンコーダーを必要とせずに、あらゆる宛先へのシンプルなエンド・ツー・エンドのブロードキャストを保証します。
Wowza で WebRTC を強化する方法についての詳細は、以下のリンクのビデオをご覧ください。
大規模なリアルタイム ストリーミングのための Wowza Video と WebRTC : Wowza Video を使用すると、インタラクティブなアプリケーションに必要なリアルタイム エクスペリエンスを備えた 100 万人の視聴者にすぐにスケーリングするライブ ストリーミング イベントを作成できます。
Wowza Streaming Engine と WebRTC : Wowza Streaming Engine に搭載された WebRTC を使用すると、強力な方法で トランスコード、再ストリーミング、WebRTC の機能を強化することができます。
結論
Mozilla の共同創設者である Brandan Eich は WebRTC を「オープンで邪魔されない Web を求める長い戦争の新たな最前線 」と表現しましたが、WebRTC は、ブラウザベースのストリーミングとリアルタイムの双方向性を組み合わせています。フリーでオープンなフレームワークは、小規模なビデオベースの環境に最適です。また、大規模な配信や追加のストリーミング機能が必要な場合は、Wowza の技術は必要なサポートを提供します。