Meet Media API で仮想メディア ストリームを管理する

WebRTC 会議のコンテキストにおける仮想メディア ストリームは、複数の参加者からのメディアを集約して配信するために Selective Forwarding Unit(SFU)によって生成されるメディア ストリームです。大規模な会議で複雑な接続メッシュを作成する直接のピアツーピア メディア ストリームとは異なり、仮想メディア ストリームはトポロジを簡素化します。SFU は各参加者から個別のメディア ストリームを受信し、アクティブなストリームまたは関連するストリームを選択的に他の参加者に転送します。これらのストリームは、より小さな固定の送信仮想メディア ストリームのセットに多重化されます。

このアプローチにより、各参加者が処理する必要がある同時受信ストリームの数が減り、処理と帯域幅の要件が軽減されます。各仮想ストリームには、一度に 1 人の参加者のメディアを含めることができます。これは、発言者のアクティビティや動画の割り当てなどの要因に基づいて SFU によって動的に調整されます。参加者はこれらの仮想ストリームを受信し、他の参加者からの個々のストリームを管理することなく、会議の合成ビューを効果的に確認できます。仮想メディア ストリームによって提供されるこの抽象化は、WebRTC 会議を多数の参加者にスケーリングするうえで非常に重要です。

音声を受信するには、クライアントが 3 つの音声メディアの説明を正確に提供し、3 つのローカル音声トランシーバを作成する必要があります。動画を受信するには、クライアントは 1 ~ 3 個の動画メディアの説明を提供し、その数の動画トランシーバを確立する必要があります。

レシーバー

クライアント所有の各トランシーバーには、専用の RtpReceiver と、Meet サーバーから音声 RTP ストリームを受信する専用の「メディア トラック」があります。

各トラックには一意の ID があり、その特定のメディアソースから独自の RTP パケット ストリームを受信します。たとえば、トラック Aproduction-1 から音声を受信し、トラック Bproduction-2 から音声を受信します。

SSRC

各 RTP パケットには、特定のトラックに関連付ける 同期ソース(SSRC)ヘッダー値があります。

Meet Media API を介した音声セッションでは、それぞれ独自の静的 SSRC を持つ 3 つの個別のメディア ストリームが使用されます。確立されると、これらの SSRC 値はセッションの存続期間中変更されません。

仮想ストリーム

Meet Media API は仮想メディア ストリームを使用します。これらはセッション全体で静的ですが、パケットの送信元は、最も関連性の高いフィードを反映するように変更されることがあります。仮想メディア ストリームの動作は、音声と動画で同じです。

RTP パケット ヘッダーの Contributing Source(CSRC)は、RTP パケットの真の送信元を識別します。Meet では、会議に参加した各参加者に、固有の CSRC が割り当てられます。この値は、ユーザーが退出するまで一定です。

SSRC の数は Meet Media API セッション全体で一定であるため、次の 3 つのシナリオが考えられます。

  1. 利用可能な SSRC より多くの参加者がいる場合:

    Meet は、3 つの SSRC で最も大きな音を発している 3 人の音声を送信します。各 RTP ストリームは専用の SSRC にあるため、ストリーム間の混合はありません。

    Meet は、3 つの SSRC で最も大きな音声を 3 人分送信します。
    図 1. Meet は、3 つの SSRC で最も大きな音声を 3 人分送信します。

    会議の元のストリームのいずれかが最も大きなストリームでなくなった場合、Meet は SSRC を構成する RTP パケットを最も大きなストリームに切り替えます。

    Meet は、RTP パケットを新しい最も大きな声の人物に切り替えます。
    図 2. Meet は、RTP パケットを新しい最も大きな声の人物に切り替えます。
  2. アクティブな参加者の数が 3 つのオーディオ SSRC より少ない:

    会議のストリーム数よりも多くの SSRC が利用可能なシナリオでは、Meet は利用可能な音声パケットを独自の固有の SSRC にマッピングします。未使用の SSRC は引き続き準備が整っており、使用可能ですが、RTP パケットは送信されません。

    Meet は、利用可能な音声パケットを独自の SSRC にマッピングします。
    図 3. Meet は、利用可能な音声パケットを独自の SSRC にマッピングします。
  3. アクティブな参加者の数が 3 つの音声 SSRC と等しい:

    参加者が同数で、利用可能な SSRC があるシナリオでは、各参加者のメディアが専用の SSRC にマッピングされます。これらのマッピングは、この特定のシナリオが存続する限り存続します。

    Meet は、各参加者のメディアを専用の SSRC にマッピングします。
    図 4. Meet は、各参加者のメディアを専用の SSRC にマッピングします。