1.サーバー側のWebRTCが必要なのは誰ですか?
ご存知のとおり、WebRTCは、2つのブラウザ間の通信チャネルを実装して、オーディオ、ビデオ、およびその他のデータを低遅延で転送するピアツーピアテクノロジです。このテクノロジーは完全に無料です。アプリケーションで2人のリモート参加者のブラウザーで通信を確立する必要がある場合は、適切なjavascriptコードをWebページに追加すると、問題が解決します。ブラウザは直接通信します。サーバーは必要ありません。
サーバー側のWebRTCは、3人以上の参加者が必要な場合にシーンに入り、1人の参加者からのデータが一度に複数の他の参加者に送信されます。
この場合、参加者の1人は、最初の参加者と1対1の通信を確立し、彼からデータを受信してから
、他の参加者と1対1のモードで通信を確立し、このデータを送信するサーバーにすることができます。それら。サーバーは多くのピアツーピア通信チャネルを保持し、これらすべてのチャネルにデータをコピーするだけです。 WebRTCの用語では、このようなサーバーは選択的転送ユニット(SFU)として機能します。
ただし、グループ通信はSFUだけでは不可能です。サーバーがなければ、誰もが誰にでもデータを送信できないのはなぜかと疑問に思うかもしれません。これはMESH-通信と呼ばれます。
ここには2つの重要なポイントがあります。
- MESHスキームでは、各参加者はN-1個のデータストリームを送受信します。ここで、Nはグループサイズです。それら。MESHスキームの各参加者のアップロード速度要件は、グループの成長とともに増加します。一方、SFUスキームでは、各参加者は常に1つのストリームのみを送信します。すべての参加者がN-1ストリームの送信を処理できるネットワーク接続速度を持っているわけではありません。
- , MESH - . , , - . MESH , , VP8/VP9/H264 4 . WebRTC – , . , (PeerConnection). , 720p 30% , . .
これらの2つの重要なポイントのために、MESHスキームは参加者の数が増えると不十分に実装され、SFUスキームを使用する必要があります。
そのため、通信参加者が多い場合は、サーバー(SFU)が必要になります。
サーバーが必要な場合のそのようなアプリケーションの例を挙げましょう。
- 多くの参加者とのビデオ会議(すべての同様のサービスと同様に、誰もが愛するZoomはWebRTCサーバーを使用します)。
- ビデオが1つのカメラから複数の視聴者および記録デバイスに送信される場合のライブビデオ監視。セキュリティシステム、監視。
- オンラインオークション、チュートリアル、その他のWebアプリケーションなど、オーディオ/ビデオの待ち時間を短くする必要があるインタラクティブシステム。
2.サーバー側のWebRTCがまだ必要な場合、2020年に何を使用できますか?
クラウドサービスまたはあなた自身?
ここでは、最初に、どちらか一方を支持する通常のITの議論があります。クラウドは、サーバー、構成、スケーラビリティのITコストを提供し、節約します。しかし、あなた自身で、すべてがうまくいけば(保証はありません)、それははるかに安くなります。結局のところ、クラウドサービスには毎月支払う必要があります。
次に、上記のアプリケーションに固有の引数について説明します。さまざまな国や地域にグローバルで膨大な数の視聴者がいる場合、自分ですべてをまとめることは困難です。たとえば、クラウドサービスはサザビーのオークションに適しています。ただし、異なる都市に2〜3の支社があり、ユーザー数が200〜500で、ウェビナー/会議/トレーニングなどを開催する必要がある場合は、AWSまたは同様のホスティングプラットフォームで複数のサーバーを自分でレンタルして、そこにインストールできます。ソフトウェアWebRTCサーバー、およびすべてがうまくいくでしょう。インターネット接続の速度が許せば、サーバーを社内に配置することもできます。さて、小規模のすべてのソリューションでは、すべてを自分で行うことができます。
現在、MillicastとPhenixの2つのクラウドWebRTCサービスがよく知られており、テストされています。..。どちらもグローバルなカバレッジ、異なる大陸のサーバー間の良好な接続性(必要ですか?)、そして実際に0.5秒以下のビデオレイテンシー(レイテンシー)を備えています。
それでは、「私たち自身で」について話しましょう。
ここでWebRTCサーバーソフトウェアが必要になります。このようなサーバーを入手するには3つの方法があります。
- オープンAPIを使用して自分で作成します。これらの中で最も有名なのは、Google c ++ WebRTCAPIです。GStreamerAPIを使用することもできます。Goでの興味深い実装:PionWebRTC。熟練したc ++プログラマーと、デバッグには多くの忍耐と時間が必要になります。このアプローチの難しさについては、前回の記事で詳しく説明しました。
- . Ant Media Server, Kurento, Janus, Jitsi. , , , . github , . , , , . , c++ . . , .
- . , , . Red5 Pro, Flashphoner Unreal Media Server.
WebRTC .
これは最も問題のあるトピックです。あなたの会社がWebRTCサーバーを実装する必要のあるソフトウェア製品をリリースしていると仮定します。空港ターミナル、鉄道駅、輸送ハブ向けのビデオ録画および監視システムにしましょう。または、内視鏡からビデオをブロードキャストおよび記録するための既存の付属ソフトウェアを備えた医療機器。このビデオをブラウザーにブロードキャストする前に拡張する必要があります。または、ブラウザでの視覚化やリモートユーザーとの対話の可能性を実装する必要がある飛行シミュレーションシステム。私たちは常に同様の要件に直面しています。既存のシステムには多くの制限があります。インターネットにアクセスできない場合があります。雲はありません。サーバーのポートを開くことはできません。 WindowsのみまたはLinuxのみ。既存の製品がそれのために研ぎ澄まされているので、時々Windowsの特定のバージョンだけでさえ。 WebRTCサーバー、このようなシステムに追加されるものは、これらすべての制限に合わせて調整する必要があります。
ここでは、Ant MediaServerやJanusなどのオープンソースサーバーを使用して変更する以外に選択肢がない場合があります。これはLinuxの状況です。Windowsの場合、Unreal Media Serverが適しています。これは、WindowsOS専用に作成および最適化されたソフトウェアです。
WebRTCサーバーは非常にリソースを消費します
リソースを計画するときは、このことに注意してください。このようなリソースを大量に消費する理由については、前回の記事で説明しましたが、結論として、スケーラビリティは非常に強力なプロセッサまたは物理サーバーの追加によって実現されます。
これは、AWS EC2m4.2xlargeインスタンスでUnrealMedia Serverv13.0を使用して実行されたテストの図です。IntelXeon8コアCPUE5-2686 v4 @ 2.30 GHz、32 Gb RAM、Windows Server2016。
図からわかるように、1000の同時Webプレーヤーがあります。このIPカメラの場合、プロセッサの負荷はRTMPプロトコルで5%、WebRTCプロトコルで75%です。WebRTCは、RTMPの10倍以上のリソースを消費します。