シングルピア接続
すべての加入者ストリームを単一の WebRTC ピア接続に通すことで、よりスリムで高速、スケーラブルなビデオセッションを実現します。
セッションが増えるにつれて、各クライアントが維持しなければならない WebRTC ピア接続の数も増えます(サブスクライブしたストリームごとに 1 つ)。各接続は、独自の ICE ネゴシエーション、DTLS ハンドシェイク、輻輳制御の状態を運びます。このオーバーヘッドは、特にモバイル・デバイスでは、すぐに大きくなります。
シングルピア接続(SPC) は、接続セットアップのオーバーヘッドを削減します。この機能を有効にすると、セッション内のパブリッシャーの数に関係なく、クライアントのすべての加入者ストリームがVonage Video Media Routerへの1つの共有ピア接続上で多重化されます。その結果、より少ないポート数でネットワークのフットプリントが軽くなり、帯域幅管理がよりスマートになり、すべてのデバイスでスケーラビリティが向上します。
シングルピア接続機能は、ルーティングセッション(Vonage Video Media Routerを使用するセッション)でのみ使用できます。を使用するセッションでは アダプティブ・メディア・ルーティングSPCは、2人の参加者間でメディアがピアツーピアで流れている間は適用されないが、セッションがメディアルーターの使用に切り替わると適用される。参照 メディア・ルーターとメディア・モード をご覧ください。
メリット
シングルピア接続を有効にすることは、マルチパーティービデオに最も大きな影響を与える最適化の1つです:
資源消費を大幅に削減: すべてのピア接続には、独自のポート、ソケット、ICE候補、DTLSハンドシェイク、 SRTPコンテキストが付属する。何十もの加入者がいると、CPU、メモリ、ファイルディスクリプタの使用量が増加する。SPCはこれらすべてを単一の接続にまとめ、アプリケーションのリソースを解放します。
よりスマートで統一されたレートコントロール: 別々のピア接続では、それぞれが独自の輻輳制御アルゴリズムを実行し、 同じリンク容量をめぐって他と競合する。SPCは、帯域幅推定装置に、すべてのメディアストリームのネットワー クに関する単一の統一されたビューを提供する。
モバイルでの大規模セッションをサポート: モバイル・デバイスのCPU、メモリ、ネットワーク・リソースには限りがあり、特にiOSでは同時ピア接続数が制限されています。すべての加入者ストリームを1つのピア接続に統合することで、SPCはモバイル・クライアントが1つのセッションでより多くのストリームを快適に処理できるようにします。
より迅速なサブスクリプション設定: 新しい加入者を追加する場合、ゼロから完全なICE/DTLSネゴシエーションを行う必要はなくなった。既存の接続が再利用されるため、新しいストリームがより速く表示される。これは、参加者が頻繁に参加したり離脱したりするセッションで特に顕著である。
バッテリーの消耗を抑える: アクティブなネットワーク・パスが少ないということは、キープアライブ・パケットが少なく、モバイルでの無線ウェイクアップが少ないということです。
ネットワークの複雑さを軽減: 1つの接続は、1セットのNATバインディング、1つのTURN割り当て(必要な場合)、企業のファイアウォールを通過する1つのパスを意味します。そのため、制限の多いネットワーク環境での導入が簡素化され、接続障害も削減されます。
規模に応じて、より予測可能な品質: すべてのメディアが単一のトランスポートを共有するため、帯域幅はストリーム間でより公平に分配されます。互いに飢え合う「競合する接続」がないため、すべての参加者にとって、よりスムーズで一貫性のある体験につながります。
使用例
アプリケーションは、サブスクライブするストリームの数が増え始めると、シングルピア・コネクションの恩恵を受けます。以下は、シングルピア接続が最も大きな違いをもたらすシナリオです:
大規模なインタラクティブ・セッション: バーチャルクラスルーム、グループコラボレーション、マルチパーティービデオ通話では、多くの参加者が同時にパブリッシュすることができます。パブリッシャーの数が増えると、各サブスクライブ・クライアントはより多くのピア接続を開きます。SPC は、クライアントがサブスクライブするストリームの数に関係なく、リソースの使用量をフラットに保ちます。すべての参加者を一度に画面に表示することが現実的であることはほとんどないため、アプリケーションは、表示するビデオ ウィジェットに優先順位を付け、サブスクライブするストリームを管理する必要があることに留意してください。
モバイルファーストのアプリケーション: ユーザーが携帯電話やタブレットを使用している場合は、SPCを強くお勧めします。接続数が少ないということは、CPUの消費、メモリの圧迫、バッテリーの消耗が少ないということです。
帯域幅に制約のある、または可変ネットワーク: 混雑したWi-Fi、携帯電話、衛星回線では、単一の輻輳制御ループが、競合する多数の接続よりもはるかに効率的に帯域幅を割り当てます。ユーザーは、よりスムーズな映像を、より少ないバッファリングで見ることができます。
企業および制限されたネットワーク: ファイアウォール、プロキシ、NATは、多数の同時UDPフローを追跡する必要がある場合、失敗したり、遅延が追加されたりする可能性があります。すべてを1つの接続に減らすことで、厳格なネットワーク・ポリシーの背後にある接続性の問題の可能性を低くすることができます。
迅速な合流/離脱シナリオ: ブレイクアウト・ルームや、参加者がグループ間で頻繁に入れ替わるような環境では、SPCはストリームごとのネゴシエーションのオーバーヘッドを排除し、トランジションをほぼ瞬時に行うことができます。
画面共有によるハイブリッド・イベント: プレゼンターがカメラ・フィードと同時に画面を共有する場合、加入者1人当たりの総ストリーム数は2倍になります。SPCは、クライアントが受信する混合ストリームの数に関係なく、オーバーヘッドを一定に保ちます。ユニファイド・レート・コントロールは、同じ接続上のすべてのストリームを可視化できるため、画面共有ストリームにインテリジェントに優先順位を付け、鮮明さと可読性が最も重要な部分に多くの帯域幅を割り当てます。
必要条件と制限
SPCは以下の場合にのみサポートされます。 ルーティングセッション (Vonageビデオ・メディア・ルーターを使用するセッション)。中継されたセッションでは、各クライアントが他のすべてのクライアントにピアツーピアで直接接続するため、中継されたセッションでは使用できません。ストリームを多重化する中央のメディアルーターがないため、統合するものがありません。
SPCは以下から利用できる。 バージョン2.28.0 ネイティブSDKと バージョン2.29.0 ウェブSDKの
SPCは デフォルトでは無効.クライアント側でセッションを初期化する際に、明示的に有効にする必要があります。参照 シングルピア接続の有効化.
SPCは以下に適用される。 加入者接続のみ.パブリッシャーはメディアルーターにメディアを送信するために、自身のピ ア接続を使用する。
シングルピア接続の有効化
Single Peer Connectionを有効にするには、セッションの作成または初期化時にクライアントSDKで設定します。セッション作成におけるSPCの概要については シングルピア接続セクション セッションの作成」ガイドの以下のセクションでは、サポートされている各SDKでこれを有効にする方法を示します。
ウェブSDK
を設定する。 singlePeerConnection プロパティ true に渡すオプション・オブジェクトの OT.initSession():
var session = OT.initSession(apiKey, sessionId, {
singlePeerConnection: true
});
アンドロイドSDK
を使用する。 Session.Builder.setSinglePeerConnection() メソッドを使用する:
Session session = new Session.Builder(context, apiKey, sessionId)
.setSinglePeerConnection(true)
.build();
iOS SDK
を設定する。 singlePeerConnection プロパティ OTSessionSettings:
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.singlePeerConnection = YES;
OTSession *session = [[OTSession alloc] initWithApiKey:apiKey
sessionId:sessionId
delegate:self
settings:settings];
Windows SDK
を設定する。 SinglePeerConnection プロパティの Session.Builder クラスである:
var session = new Session.Builder(Context.Instance, apiKey, sessionId)
{
SinglePeerConnection = true
}.Build();
macOS SDK
を使用する。 otc_session_settings_set_single_peer_connection() 関数である:
otc_session_settings *settings = otc_session_settings_new();
otc_session_settings_set_single_peer_connection(settings, OTC_TRUE);
otc_session *session = otc_session_new_with_settings(apiKey, sessionId, &callbacks, settings);
Linux SDK
を使用する。 otc_session_settings_set_single_peer_connection() 関数である:
otc_session_settings *settings = otc_session_settings_new();
otc_session_settings_set_single_peer_connection(settings, OTC_TRUE);
otc_session *session = otc_session_new_with_settings(apiKey, sessionId, &callbacks, settings);
リアクト・ネイティブSDK
を設定する。 enableSinglePeerConnection プロパティ true での options の支柱である。 OTSession コンポーネントを使用している:
<OTSession
apiKey={apiKey}
sessionId={sessionId}
token={token}
options={{ enableSinglePeerConnection: true }}
/>
他の機能との相互作用
スケーラブルなビデオ
シングルピア・コネクション スケーラブルビデオ.両方の機能が有効になっている場合でも、メディアルーターは共有ピア接続を通じて各加入者にマルチクオリティのレイヤーを配信します。各加入者は、ネットワーク状況の変化に応じて、個別のピア接続とまったく同じように、異なる解像度とフレームレートのレイヤーを受信することができます。
オーディオ・フォールバック
オーディオのフォールバック は、SPCを有効にしても正常に動作し続けます。加入者のネットワークが劣化した場合でも、メディア・ルーターはビデオ・コンポーネントをドロップし、同じピア接続で伝送される他のストリームとは独立して、影響を受けたストリームの音声のみを配信することができます。
クライアントの観測可能性と送信側の統計
SPCが有効な場合 送信側統計 帯域幅の推定は、1つのピア接続のすべての加入者で共有される。最大ビットレートは、ピ ア接続が推定できる最高ビットレートを表し、現在のビットレートは、各オーディオ/ビデオ バンドルのビットレートを反映する。利用可能な帯域幅を評価する場合は、個々のバンドル推定値を合計して、総帯域幅推定 値を計算する。
詳細は 顧客観察可能性ガイド.
エンド・ツー・エンドの暗号化
エンド・ツー・エンドの暗号化 はシングルピア接続と互換性があります。メディアストリームは、共有ピア接続で多重化される前に、個別に暗号化される。
ベストプラクティス
多数のパブリッシング・クライアントを持つセッションでSPCを有効にします: アプリケーションが定期的に数人以上の参加者を持つセッションを行う場合、SPCを有効にすることで、リソース消費を顕著に削減し、安定性を向上させることができます。
ターゲットデバイスでテストする: SPCは一般的にリソース使用量を削減しますが、ユーザーが遭遇する特定のデバイスとネットワーク条件については常に検証してください。
送信側統計で帯域幅を監視: すべてのサブスクライバーストリームが1つのトランスポートを共有するた め、送信側の統計情報を使用して、利用可能な帯域幅の合計を把握し、それ に応じてアプリケーションを適応させる。