Saiba por que a latência ocorre no Real-Time Streaming (RTS) e como reduzi-la.
Causas comuns de latência no RTS
|
Estágio |
Causas comuns |
|
|
|
Transmissão pela rede |
|
|
|
|
Ingestão de stream
Configurações do OBS Studio
Configure o OBS Studio conforme as instruções abaixo:
No OBS Studio, acesse Settings > Output. Defina Output Mode como Advanced e selecione a aba Streaming. Configure Encoder como x264, Rate Control como CBR e Bitrate como 2500 Kbps. Ajuste Keyframe Interval para 1 segundo, CPU Usage Preset para ultrafast, Profile para baseline e Tune para zerolatency.
Configurações do vMix
Configure o vMix da seguinte maneira:
Na caixa de diálogo Streaming Quality, defina Video Bit Rates como 1500, Encode Size como 1920 x 1080 e Audio Bit Rate como 128. Na seção Video, configure Profile como Baseline, Level como 3.1 e Preset como ultrafast. Em seguida, ajuste Keyframe Frequency para 1 second, Threads para 4 e Network Buffer para 20 seconds. Parâmetros principais: Level, Preset, Threads e Network Buffer.
Configuração do Push SDK
Defina o GOP de vídeo como 1 e mantenha as demais configurações com os valores padrão:
Android
mAlivcLivePushConfig = new AlivcLivePushConfig();
mAlivcLivePushConfig.setVideoEncodeGop(AlivcVideoEncodeGopEnum.GOP_ONE);
iOS
AlivcLivePushConfig *pushConfig = [[AlivcLivePushConfig alloc] init];
pushConfig.videoEncodeGop = AlivcLivePushVideoEncodeGOP_1;
Web
O Push SDK for Web já vem otimizado por padrão.
Rede de ingestão
Uma rede de ingestão estável é essencial. Para isolar problemas de rede, troque de rede e reinicie a ingestão no mesmo dispositivo. Se a latência diminuir, a rede original era a causa.
Carga do dispositivo
O uso elevado de CPU ou memória no dispositivo de ingestão reduz a eficiência da captura e codificação, aumentando a latência. Para isolar esse fator, teste com outro dispositivo usando a mesma rede e configuração.
Reprodução
Configuração do Native Player SDK
O RTS usa o protocolo WebRTC, que lida bem com perda de pacotes e jitter. Para reduzir ainda mais a latência, otimize a estratégia de buffer do player.
O ApsaraVideo Player SDK v5.5.6.0 e versões posteriores, ou o demo do player, aplicam a configuração ideal de latência por padrão. Nenhum ajuste é necessário.
Se a latência persistir, analise os logs do RTS SDK:
-
Latência do stream: Ative o registro de logs no ApsaraVideo Player SDK for Android ou no ApsaraVideo Player SDK for iOS. Localize a entrada
code=154para verificar a latência de ponta a ponta (ms):gd (globalDelayMS): Latência de ponta a ponta.
td (transDelayMS): Soma das latências de ingestão e transmissão via CDN. Valores acima de 800 ms indicam alta latência de ingestão ou da CDN.
nd (network delay): Latência de rede da CDN até o player. Valores acima de 800 ms sugerem problema de rede.
jd (jitterDelayMS): Latência do buffer de dejitter. Valores acima de 800 ms sugerem problema de rede.
ud (user buffer length): Tamanho do buffer do usuário. Geralmente é 0; pode ser ignorado.
dd (decoder delay): Latência de decodificação. Valores acima de 800 ms sugerem problema de decodificação no player.
rd (render delay): Latência de renderização. Valores acima de 800 ms sugerem problema de renderização no player.
ut: Campo ignorável.
-
Latência do primeiro frame: Localize a entrada
code=161no log do SDK:st:0,init:1,sdns:0,rdns:2,sc:0,ced:12,sub:5,frsp:309,si:8,fp:13,ffc:5,ffo:416,sum:763Se
sumdiferir significativamente da latência medida do primeiro frame, suspeite de problema de decodificação ou renderização. Casosumesteja próximo do valor medido, verifique os campos individuais para identificar o gargalo. Valores altos deced,frspouffcgeralmente indicam problema de rede.
Configuração do Web Player SDK
O ApsaraVideo Player SDK for Web usa a política de buffer padrão do navegador e não requer configuração extra. Para diagnosticar alta latência, abra chrome://webrtc-internals no Chrome.

Principais métricas:
inbound-rtp (kind=audio) e inbound-rtp (kind=video): Exibe o status de recepção e decodificação de dados em tempo real. Valores altos de
framesDroppedou valores inesperados deframesDecoded/sindicam problema de decodificação — verifique as configurações de ingestão e transcodificação.candidate-pair: Exibe o status da conexão. Um
currentRoundTripTimealto oupacketsLostelevado eminbound-rtpindica problema de rede.
Latência em streams apenas de áudio e apenas de vídeo
Se um stream de source for apenas de áudio ou apenas de vídeo, a Alibaba Cloud aguarda 5 segundos por padrão pela faixa ausente. Esse atraso pode causar tela preta ou silêncio no início da reprodução. Para evitar esse atraso, cancele a assinatura da faixa ausente anexando @subvideo=no ou @subaudio=no à URL de streaming.
Para um stream apenas de vídeo com a URL
artc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}, modifique a URL paraartc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}@subaudio=no.Para um stream apenas de áudio com a URL
artc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}, modifique a URL paraartc://example.aliyundoc.com/app/stream?auth_key={your_auth_key}@subvideo=no.
Rede de reprodução
Garanta uma rede de reprodução estável. Em redes instáveis, o ApsaraVideo Player SDK aumenta o buffer local para manter a reprodução suave, o que adiciona latência.
Transcodificação
A transcodificação adiciona de 300 a 500 ms de latência ao stream ao vivo. O RTS suporta dois tipos de transcodificação:
Transcodificação automática H5: Aplicada quando um stream RTMP é ingerido para reprodução na web. A latência adicionada é mínima e inevitável.
-
Modelos de transcodificação personalizados: A reprodução de um stream transcodificado pode gerar latência de duas formas:
Latência de processamento: Adiciona de 300 a 500 ms de latência inevitável aos streams transcodificados.
Latência de iniciação: Com a triggered transcoding ativada, a transcodificação começa apenas quando o primeiro espectador solicita o stream, adicionando cerca de 200 ms de latência de inicialização.
NotaA transcodificação acionada é configurada ao criar um modelo de transcodificação. Para desativá-la, crie um novo modelo, reinicie a ingestão do stream e teste a latência novamente.
Fale conosco
Se a alta latência persistir após estas etapas de solução de problemas, envie um ticket. Inclua as seguintes informações:
URLs de ingestão e streaming usadas para teste.
Ferramentas de ingestão e reprodução utilizadas (por exemplo, OBS Studio e ApsaraVideo Player SDK for Web).
Resumo das etapas de solução de problemas concluídas.