Conexão com um único par
Obtenha sessões de vídeo mais eficientes, mais rápidas e mais escaláveis, canalizando todos os fluxos dos assinantes por meio de uma única conexão ponto a ponto WebRTC.
À medida que suas sessões crescem, também aumenta o número de conexões entre pares via WebRTC que cada cliente precisa manter (uma para cada stream assinado). Cada conexão envolve sua própria negociação ICE, handshake DTLS e estado de controle de congestionamento. Essa sobrecarga pode aumentar rapidamente, especialmente em dispositivos móveis.
Conexão com um único par (SPC) reduz a sobrecarga no estabelecimento da conexão. Quando ativado, todos os fluxos de assinantes de um cliente são multiplexados por meio de uma única conexão compartilhada com o Vonage Video Media Router, independentemente do número de emissores diferentes presentes na sessão. O resultado é uma menor carga na rede, com o uso de menos portas, um gerenciamento mais inteligente da largura de banda e melhor escalabilidade em todos os dispositivos.
O recurso “Conexão com um único par” está disponível apenas em sessões roteadas (sessões que utilizam o Vonage Video Media Router). Em sessões que utilizam roteamento adaptativo de mídia, o SPC não se aplica enquanto a mídia é transmitida em modo ponto a ponto entre dois participantes, mas passa a se aplicar assim que a sessão passa a utilizar o Media Router. Consulte Roteador de mídia e modos de mídia para mais informações.
Benefícios
Ativar a conexão com um único par é uma das otimizações de maior impacto que você pode realizar para chamadas de vídeo com vários participantes, oferecendo:
-
Consumo de recursos significativamente menor: Cada conexão entre pares possui suas próprias portas, sockets, candidatos ICE, handshakes DTLS e contextos SRTP. Com dezenas de assinantes, isso aumenta o uso da CPU, da memória e dos descritores de arquivo. O SPC agrupa tudo isso em uma única conexão, liberando recursos para o seu aplicativo.
-
Controle de tarifas mais inteligente e unificado: Com conexões entre pares independentes, cada uma executa seu próprio algoritmo de controle de congestionamento, competindo com as outras pela mesma capacidade do link. O SPC oferece ao estimador de largura de banda uma visão única e unificada da rede para todos os fluxos de mídia, o que se traduz em uma adaptação mais estável da taxa de bits e menos oscilações de qualidade.
-
Suporte para sessões maiores em dispositivos móveis: Os dispositivos móveis possuem recursos finitos de CPU, memória e rede, e o iOS, em particular, limita o número de conexões simultâneas entre pares. Ao consolidar todos os fluxos dos assinantes em uma única conexão entre pares, o SPC permite que os clientes móveis processem com facilidade mais fluxos em uma única sessão.
-
Configuração mais rápida da assinatura: A adição de um novo assinante não exige mais uma negociação completa de ICE/DTLS a partir do zero. A conexão existente é reutilizada, de modo que os novos fluxos são exibidos mais rapidamente. Isso é especialmente perceptível em sessões nas quais os participantes entram e saem com frequência.
-
Menor consumo de bateria: Menos caminhos de rede ativos significam menos pacotes de keep-alive e menos ativação do rádio em dispositivos móveis, o que, em última análise, se traduz em maior duração da bateria para seus usuários finais.
-
Menor complexidade da rede: Uma conexão significa um conjunto de ligações NAT, uma alocação TURN (se necessário) e um caminho através dos firewalls corporativos. Isso simplifica a implantação em ambientes de rede restritivos e reduz as falhas de conectividade.
-
Qualidade mais previsível em grande escala: Como todas as mídias compartilham um único canal de transporte, a largura de banda é distribuída de forma mais equitativa entre os fluxos. Não há “conexões concorrentes” que limitem a capacidade umas das outras, o que resulta em uma experiência mais fluida e consistente para todos os participantes.
Casos de uso
Os aplicativos se beneficiam da conexão com um único par sempre que o número de streams assinados começa a aumentar. Aqui estão os cenários em que isso faz a maior diferença:
-
Grandes sessões interativas: Salas de aula virtuais, colaboração em grupo e videochamadas com vários participantes podem ter muitos participantes transmitindo ao mesmo tempo. À medida que o número de transmissores aumenta, cada cliente assinante abre mais conexões entre pares. O SPC mantém o uso de recursos estável, independentemente de quantos fluxos um cliente assine. Lembre-se de que sua aplicação ainda deve priorizar quais widgets de vídeo exibir e gerenciar quais transmissões assinar, já que mostrar todos os participantes na tela ao mesmo tempo raramente é prático.
-
Applications com prioridade para dispositivos móveis: Se seus usuários estiverem usando celulares e tablets, o SPC é altamente recomendado. Menos conexões significam menor carga na CPU, menor pressão sobre a memória e menor consumo de bateria.
-
Redes com largura de banda limitada ou variável: Em conexões Wi-Fi, de celular ou via satélite congestionadas, um único ciclo de controle de congestionamento aloca a largura de banda de forma muito mais eficiente do que um grande número de conexões concorrentes. Os usuários obtêm vídeos mais fluidos, com menos buffering.
-
Redes corporativas e restritas: Firewalls, proxies e NATs podem apresentar falhas ou aumentar a latência quando precisam monitorar muitos fluxos UDP simultâneos. Reduzir tudo a uma única conexão diminui a probabilidade de problemas de conectividade em ambientes com políticas de rede rigorosas.
-
Cenários de entrada/saída rápida: Em salas de discussão ou em qualquer atividade em que os participantes alternem frequentemente entre grupos, o SPC elimina a sobrecarga de negociação por fluxo, tornando as transições quase instantâneas.
-
Eventos híbridos com compartilhamento de tela: Quando os apresentadores compartilham suas telas junto com as imagens da câmera, o número total de transmissões por assinante dobra. O SPC mantém a sobrecarga constante, independentemente do número de transmissões combinadas que um cliente esteja recebendo. Como o controle unificado de taxa tem visibilidade sobre todas as transmissões na mesma conexão, ele prioriza de forma inteligente as transmissões de compartilhamento de tela, alocando mais largura de banda onde a nitidez e a legibilidade são mais importantes.
Requisitos e limitações
-
O SPC é compatível apenas com sessões encaminhadas (sessões que utilizam o Vonage Video Media Router). Esse recurso não está disponível para sessões retransmitidas, pois, nessas sessões, cada cliente se conecta diretamente a todos os outros clientes em um esquema ponto a ponto. Não há um Media Router central para multiplexar os fluxos, portanto, não há nada a ser consolidado.
-
O SPC está disponível a partir de versão 2.28.0 dos SDKs nativos e versão 2.29.0 do SDK da web.
-
SPC é desativado por padrão. É necessário habilitá-lo explicitamente ao inicializar a sessão no lado do cliente. Consulte Ativação da conexão com um único par.
-
O SPC se aplica a apenas conexões de assinantes. A editora ainda utiliza sua própria conexão ponto a ponto para enviar arquivos de mídia ao Media Router.
Ativação da conexão com um único par
Para habilitar a Conexão de Par Único (SPC), configure-a no Client SDK ao criar ou inicializar a sessão. Para uma visão geral rápida da SPC no contexto da criação de sessões, consulte o Seção “Conexão com um único par” do guia “Criação de uma sessão”. As seções a seguir mostram como habilitá-la em cada SDK compatível.
SDK da Web
Defina o singlePeerConnection propriedade para true no objeto de opções que você passa para OT.initSession():
var session = OT.initSession(apiKey, sessionId, {
singlePeerConnection: true
});
SDK do Android
Use o Session.Builder.setSinglePeerConnection() método:
Session session = new Session.Builder(context, apiKey, sessionId)
.setSinglePeerConnection(true)
.build();
SDK do iOS
Defina o singlePeerConnection propriedade em OTSessionSettings:
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.singlePeerConnection = YES;
OTSession *session = [[OTSession alloc] initWithApiKey:apiKey
sessionId:sessionId
delegate:self
settings:settings];
SDK do Windows
Defina o SinglePeerConnection propriedade na Session.Builder classe:
var session = new Session.Builder(Context.Instance, apiKey, sessionId)
{
SinglePeerConnection = true
}.Build();
SDK do macOS
Use o otc_session_settings_set_single_peer_connection() função:
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 do Linux
Use o otc_session_settings_set_single_peer_connection() função:
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 do React Native
Defina o enableSinglePeerConnection propriedade para true no options adereço do OTSession componente:
<OTSession
apiKey={apiKey}
sessionId={sessionId}
token={token}
options={{ enableSinglePeerConnection: true }}
/>
Interação com outros recursos
Vídeo escalável
A conexão com um único par funciona em conjunto com vídeo escalável. Quando ambos os recursos estão ativados, o Media Router continua a fornecer camadas de múltiplas qualidades a cada assinante por meio da conexão entre pares compartilhada. Cada assinante pode receber uma camada com resolução e taxa de quadros diferentes à medida que as condições da rede mudam, exatamente como ocorreria com conexões entre pares separadas.
Alternativa de áudio
Opção alternativa de áudio continua a operar normalmente com o SPC ativado. Se a rede de um assinante apresentar queda de desempenho, o Media Router ainda pode descartar o componente de vídeo e transmitir apenas o áudio para o fluxo afetado, independentemente dos outros fluxos transportados na mesma conexão entre pares.
Observabilidade do cliente e estatísticas do lado do remetente
Quando o SPC está ativado, o estatísticas do lado do remetente A estimativa de largura de banda é compartilhada entre todos os assinantes em uma única conexão entre pares. A taxa de bits máxima representa a taxa de bits mais alta que a conexão entre pares pode estimar, enquanto a taxa de bits atual reflete a taxa de bits de cada pacote de áudio e vídeo. Ao avaliar a largura de banda disponível, calcule a estimativa total de largura de banda somando as estimativas individuais de cada pacote.
Para obter mais informações, consulte o guia de observabilidade do cliente.
Criptografia de ponta a ponta
Criptografia de ponta a ponta é compatível com a conexão de par único. Os fluxos de mídia são criptografados individualmente antes de serem multiplexados pela conexão compartilhada entre pares.
Melhores práticas
-
Ativar o SPC para sessões com muitos clientes de publicação: Se a sua aplicação costuma ter sessões com mais do que alguns participantes, ativar o SPC pode reduzir significativamente o consumo de recursos e melhorar a estabilidade.
-
Teste nos dispositivos de destino: Embora o SPC reduza o uso de recursos em geral, sempre verifique os dispositivos específicos e as condições de rede que seus usuários encontrarão.
-
Monitore a largura de banda com estatísticas do lado do remetente: Como todos os fluxos dos assinantes compartilham um único canal de transporte, utilize as estatísticas do lado do remetente para avaliar a largura de banda total disponível e adapte seu aplicativo de acordo com isso.