この記事では、Janus WebRTC サーバーと SFU を使用してビデオ通話アプリを作成します
また、Metered.ca SFU について、そしてそれが Janus Server よりも優れた選択肢である理由についても学びます
Janus は、オープンソースの汎用 WebRTC SFU サーバーです。これは、複雑な WebRTC プロトコルを処理することでリアルタイム通信アプリを容易にし、メディア交換を目的とした安定したサーバーを提供するモジュール式ゲートウェイです
モジュラー アーキテクチャ: Janus には、各プラグインが特定の機能を備えたプラグイン ベースのシステムがあります。このモジュール性により、カスタマイズと拡張が可能です
プロトコル処理: Janus は、webrtc 接続の確立に必要なシグナリングとネゴシエーションを管理します。
相互運用性: Janus はメディア コーデックをサポートし、さまざまなクライアントやブラウザと互換性があるため、Janus には幅広い互換性があります
スケーラビリティ: 複数の接続を効率的に処理するように設計された Janus は、特定の地理的ゾーン内でスケーラブルです。 (つまり、Janus を使用しているすべてのユーザーが狭い地理的ゾーン内にいる場合は正常に動作します)
SFU または選択的転送ユニットは、異なるメディア参加者間でメディア ストリームを効率的にルーティングするために WebRTC アプリで使用されるメディア サーバー アーキテクチャです
SFU は各参加者から受信ビデオ ストリームを受信し、要求に応じてストリームを他の参加者に選択的に転送します。
すべての参加者が自分のストリームを SFU にプッシュしている間、各参加者は参加者が要求したストリームを受信します
スケーラビリティ: SFU は、エンコードやデコードなどの計算量の多いタスクに関与せず、ストリームをユーザーに転送するだけであるため、多数の接続を処理できます
低遅延: SFU は処理を行わずにストリームを転送するため、低遅延が実現します。しかし、ユーザーが世界中にいる場合は、metered.ca cloud sou
帯域幅の最適化
柔軟性と制御: 参加者は受信したいものについてより柔軟に対応できます。たとえば、音声のみを受信したい場合、または選択した参加者のビデオ ストリームを受信したい場合は、次のオプションがあります。それをしてください
コスト効率: SFU は MCU と比較して必要な処理が少ないため、クラウド上の小規模なインスタンスで機能します
メディアの品質の保持: SFU はメディア ストリームに対して処理を行わず、要求された参加者にストリームを転送するだけであるため、メディアの品質を保持します。
高度な機能の実装が容易になりました
信頼性の向上: サーバー上でメディアが処理されないため、障害点が少なくなります。 SFU は冗長性を確保するためにクラスタ化することもできるため、1 つのサーバーで問題が発生した場合でもサービスが確実に稼働したままになります。
Janus SFU をアプリに統合するには、次の手順を実行します。ここでは、アプリケーションに Janus を実装するための段階的なプロセスを示します。
システムの準備
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
これらの依存関係は、次のように ubuntu または Debian に簡単にインストールできます
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
Janus をダウンロードしてビルドする
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
sh autogen.sh
Janus を構成する
設定ファイルを編集します
必要なプラグインを有効化します
SSL 証明書のセットアップ
SSL 証明書を生成
構成を更新します
Janus サーバーを起動します
./configure --prefix=/opt/janus
動作を確認してください
開発環境をセットアップする
フロントエンドフレームワークを選択してください
WebRTC ライブラリを含める
シグナリングサーバーを確立します
ビデオ ルームを作成または参加します
ローカルメディアストリームを処理する
make sudo make install sudo make configs
ローカル ストリームを HTML の video 要素に添付して、ユーザーにストリームを再生します
5. Janus に公開
RTCPeerConnection を使用して SDP オファーを作成します
API を使用してオファーを Janus に送信します
Janus から SDP 回答を受信し、リモート記述として設定します
6.リモートストリームを購読する
参加メッセージとイベント メッセージを処理して、他の会議参加者からの通知を聞く
加入者のピア接続を作成します。つまり、リモート参加者ごとに新しい RTCPeerConnection を作成する必要があります
リモート ストリームを処理し、リモート ストリームを取得して HTML ビデオ要素に添付して、ユーザーの Web ブラウザーでビデオを再生します
イベントリスナーとハンドラーを実装する
Metered Global Cloud SFU は、Metered.ca によるクラウドベースの選択的転送ユニットです
Metered SFU を使用すると、開発者はビデオ、オーディオ、データ送信を含むあらゆる種類のアプリケーションを構築できます
Metered SFU は、独自の SDK を必要とせず、ネイティブ WebRTC API と HTTP を使用して実行されます。
ユーザーは地理的位置に基づいて最寄りの SFU に自動的にルーティングされます
複数の SFU は高速インターコネクトを使用して相互にグローバルに接続され、レイテンシを可能な限り低く抑えます
世界的な配布:
プラットフォームの独立性
柔軟なパブリッシュ/サブスクライブ モデル:
スケーラビリティ
コスト効率:
接続の確立
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
b.ローカル SDP オファーを送信
c. SFU リモート SDP を受信
d.接続が確立されました
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
トラックの公開
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
b. SDP オファーを生成して送信
更新された SDP オファーを SFU に送信します
SDP への SFU 応答を受信して設定します
トラックを購読する
SFU からトラックのサブスクリプションをリクエストします
スケーラビリティ
メディア配信
大規模ストリーミング
プラットフォームの独立性
柔軟なパブリッシュ・サブスクライブ・モデル
コスト効率
グローバル SFU ネットワーク:
展開とメンテナンス
従量制 SFU:
ヤヌス
スケーラビリティとパフォーマンス
従量制 SFU
ヤヌス
コスト構造
従量制 SFU
ヤヌス
柔軟性と機能
従量制 SFU
ヤヌス
統合の容易さ
従量制 SFU
従量制 TURN サーバー
API: 強力な API でサーバー管理を実現します。 API を介して認証情報の追加/削除、API を介してユーザーごとの認証情報とユーザー指標を取得、API を介して認証情報を有効/無効にする、API を介して日付ごとの使用状況データを取得するなどの操作を行うことができます。
グローバル地理位置ターゲティング: トラフィックを最も近いサーバーに自動的に送信し、遅延を最小限に抑え、最高品質のパフォーマンスを実現します。世界中のどこでも遅延が 50 ミリ秒未満
世界のすべての地域のサーバー: トロント、マイアミ、サンフランシスコ、アムステルダム、ロンドン、フランクフルト、バンガロール、シンガポール、シドニー、ソウル、ダラス、ニューヨーク
低遅延: 世界中のどこでも遅延が 50 ミリ秒未満です。
費用対効果の高い: 帯域幅とボリュームの割引が可能な従量課金制の料金設定です。
簡単な管理: 使用状況ログ、アカウントがしきい値制限に達したときのメール、請求記録、メールと電話のサポートを取得します。
準拠規格: UDP、TCP、TLS、および DTLS で RFC 5389、5769、5780、5766、6062、6156、5245、5768、6336、6544、5928 に準拠します。
マルチテナンシー: 複数の認証情報を作成し、顧客ごとまたは異なるアプリごとに使用を分離します。使用状況ログ、請求記録、およびしきい値アラートを取得します。
エンタープライズの信頼性: SLA による 99.999% の稼働時間。
エンタープライズ規模: 同時トラフィックまたは合計トラフィックに制限はありません。従量制の TURN サーバーはエンタープライズ スケーラビリティを提供します
5 GB/月 無料: 無料プランでは毎月 5 GB の TURN サーバーを無料で利用できます
ポート 80 および 443 で実行
ディープ パケット インスペクション ファイアウォールを介した接続を許可する TURNS SSL をサポートします。
TCP と UDP の両方をサポート
無料無制限スタン
以上がJanus WebRTC サーバーと SFU: リアルタイム ビデオ通話アプリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。