Fluxos de mídia virtuais, no contexto de conferências WebRTC, são fluxos de mídia gerados por uma unidade de encaminhamento seletivo (SFU, na sigla em inglês) para agregar e distribuir mídia de vários participantes. Ao contrário dos streams de mídia ponto a ponto diretos, que criariam uma malha complexa de conexões em grandes conferências, os streams de mídia virtuais simplificam a topologia. A SFU recebe fluxos de mídia individuais de cada participante e encaminha seletivamente os fluxos ativos ou relevantes para outros participantes, multiplexando-os em um conjunto menor e fixo de fluxos de mídia virtuais de saída.
Essa abordagem reduz o número de fluxos de entrada simultâneos que cada participante precisa processar, diminuindo os requisitos de processamento e largura de banda. Cada stream virtual pode conter mídia de um participante por vez, ajustada dinamicamente pela SFU com base em fatores como atividade do falante ou atribuição de vídeo. Os participantes recebem esses fluxos virtuais, vendo uma visualização composta da conferência sem precisar gerenciar fluxos individuais de todos os outros participantes. Essa abstração fornecida por fluxos de mídia virtuais é crucial para dimensionar as videoconferências do WebRTC para um grande número de participantes.
Para receber áudio, o cliente precisa oferecer exatamente três descrições de mídia de áudio, criando três transceptores de áudio locais. Para receber vídeo, o cliente precisa oferecer de uma a três descrições de mídia de vídeo, estabelecendo esse número de transceptores de vídeo.
Recebedores
Cada transceptor de propriedade do cliente tem um
RtpReceiver
dedicado e uma
"faixa de mídia" dedicada que recebe os fluxos RTP de áudio dos servidores
do Meet.
Cada faixa tem um ID exclusivo e recebe seu próprio fluxo distinto de pacotes RTP
daquela fonte de mídia específica. Por exemplo, a Faixa A pode receber áudio de
production-1
, enquanto a Faixa B recebe áudio de production-2
.
SSRCs
Cada pacote RTP tem um valor de cabeçalho Fonte de sincronização (SSRC), vinculando-o a uma faixa específica.
As sessões de áudio pela API Meet Media usam três fluxos de mídia distintos, cada um com um SSRC estático próprio. Depois de estabelecidos, esses valores de SSRC nunca mudam durante a sessão.
Streams virtuais
A API Meet Media usa fluxos de mídia virtual. Eles são estáticos durante toda a sessão, mas a origem dos pacotes pode mudar para refletir os feeds mais relevantes. Os fluxos de mídia virtual funcionam da mesma forma para áudio e vídeo.
O CSRC nos cabeçalhos de pacotes RTP identifica a fonte verdadeira dos pacotes RTP. O Meet atribui a cada participante de uma conferência um CSRC exclusivo quando eles entram. Esse valor permanece constante até que a pessoa saia.
Como o número de SSRCs é constante durante toda a sessão da API Meet Media, confira os três cenários possíveis:
Mais participantes do que SSRCs disponíveis:
O Meet transmite as três pessoas mais altas nos três SSRC. Como cada fluxo RTP está em um SSRC dedicado, não há intercalação entre os fluxos.
Figura 1. O Meet transmite as três pessoas mais barulhentas nos três SSRCs. Se algum dos fluxos originais da conferência não for mais um dos mais altos, o Meet vai trocar os pacotes RTP que compõem o SSRC pelo mais alto.
Figura 2. O Meet muda os pacotes RTP para a pessoa que está falando mais alto. O número de participantes ativos é menor que os três SSRCs de áudio:
No cenário em que há mais SSRCs disponíveis do que streams na conferência, o Meet mapeia todos os pacotes de áudio disponíveis para o próprio SSRC exclusivo. SSRCs não usados ainda estão prontos e disponíveis, mas nenhum pacote RTP é transmitido.
Figura 3. O Meet mapeia os pacotes de áudio disponíveis para o próprio SSRC exclusivo. O número de participantes ativos é igual aos três SSRCs de áudio:
No cenário de participantes iguais e SSRCs disponíveis, a mídia de cada participante é mapeada para um SSRC dedicado. Esses mapeamentos persistem enquanto esse cenário específico durar.
Figura 4. O Meet mapeia a mídia de cada participante para um SSRC dedicado.