Perguntas e respostas comuns sobre o Real-Time Streaming (RTS), incluindo problemas de reprodução, compatibilidade de codificação e solução de problemas de latência.
Posso usar transmissão ao vivo padrão e Real-Time Streaming (RTS) para o mesmo fluxo ao vivo?
Sim. O ApsaraVideo Live gera URLs de reprodução separadas para transmissão ao vivo padrão e RTS. Por exemplo, a transmissão ao vivo padrão usa uma URL RTMP: rtmp://${playback domain}/AppName/StreamName?${access token}, enquanto o RTS usa uma URL artc: artc://${playback domain}/AppName/StreamName?${access token}.
Posso usar um SDK desenvolvido internamente para integrar com o Real-Time Streaming (RTS)?
Sim, mas seu SDK deve seguir as especificações do protocolo de sinalização da Alibaba Cloud. Para mais informações, consulte GRTN signaling protocol specifications for standard WebRTC access.
Por que não consigo reproduzir um fluxo ingerido de um cliente web usando RTS?
Limitações nativas dos navegadores no WebRTC impõem as seguintes restrições ao Web RTS SDK:
Vídeos com B-frames não são suportados, o que pode causar saltos ou travamentos na reprodução.
Áudio com codificação AAC não é suportado, o que pode gerar ruído.
Para resolver esses problemas, acesse Live + > RTS no console do ApsaraVideo Live. Ative o Real-Time Streaming (RTS) e selecione Sub-second (End-to-End Latency: 400-800 ms). O sistema detecta e transcodifica automaticamente fluxos que contêm B-frames ou áudio AAC. Taxas de transcodificação são aplicáveis. Para mais informações, consulte RTS pricing.
Quais codecs de áudio são suportados para reprodução de baixa latência ARTC?
A reprodução de baixa latência ARTC suporta os seguintes codecs de áudio:
AAC: Recomendado. Após ativar o Real-Time Streaming (RTS) no console do ApsaraVideo Live, o sistema detecta automaticamente o áudio AAC e o transcodifica. Taxas de transcodificação são aplicáveis.
Opus: Codec de áudio padrão para ingestão de fluxo RTS.
G711A (PCMA) não é suportado. Se você usar uma URL de ingestão RTMP com codificação de áudio G711A, a reprodução de baixa latência ARTC falhará com um código de erro de formato de áudio não suportado. Altere o codec de áudio para AAC ou Opus para utilizar a reprodução de baixa latência.
Como personalizar a resolução de vídeo no SDK web?
Para obter instruções sobre como personalizar a resolução de vídeo no SDK web, consulte Web co-streaming SDK API reference.
Como otimizar as configurações do OBS para redes instáveis?
Para otimizar o OBS (Open Broadcaster Software) para ingestão de fluxo em uma rede instável, siga estas etapas:
Inicie o OBS.
No canto superior esquerdo, clique em File e selecione Settings.
Na janela Settings, selecione Output no painel à esquerda e defina Output Mode como Advanced. Na aba Streaming, defina Video Encoder como QuickSync H.264, Rate Control como CBR e Bitrate como 2500 Kbps.
Na aba Streaming, configure o codificador para lidar com redes instáveis.
Nas configurações do codificador, aumente o keyframe interval (por exemplo, defina como 2s) e o number of B-frames para melhorar a fluidez.
Selecione Video no painel à esquerda. Defina Base (Canvas) Resolution como 1920x1080, Output (Scaled) Resolution como 1280x720, Downscale Filter como Bicubic (Sharpened scaling, 16 samples) e Common FPS Values como 30.
Para garantir uma conexão estável, use uma rede LAN com fio em vez de Wi-Fi e feche outros aplicativos que consomem largura de banda.
Após configurar as definições, clique em Apply e depois em OK para salve as alterações.
Por que a latência está alta no Real-Time Streaming (RTS)?
O RTS foi projetado para latência no nível de milissegundos. Se a latência for significativamente superior a um segundo, solucione o problema conforme abaixo:
-
Verifique o status da rede no cliente de ingestão.
Faça login no console do ApsaraVideo Live. No painel de navegação à esquerda, escolha .
Insira o AppName e o StreamName do fluxo e verifique se há anomalias na taxa de quadros de ingestão, na taxa de bits e nos carimbos de data/hora.
-
Obtenha o TraceID do RTS e envie um ticket.
Se a taxa de quadros de ingestão, a taxa de bits e os carimbos de data/hora estiverem normais, mas você ainda enfrentar alta latência e travamentos, reproduza o fluxo na demonstração do player e obtenha o TraceID do RTS da sessão. Para obter instruções, consulte Obtain the RTS TraceID in the player demo. Em seguida, envie um ticket para o suporte técnico da Alibaba Cloud conforme descrito em Contact us.
Por que o áudio está ausente na reprodução HLS/FLV a partir da ingestão web RTS?
A ingestão web RTS codifica o áudio no formato OPUS, incompatível com players FLV e HLS. Para oferecer suporte à reprodução FLV e HLS, use RTMP para ingestão de fluxo. Você ainda pode usar o RTS para reprodução de baixa latência simultaneamente à reprodução padrão HLS e FLV.
Por que um fluxo RTS H.265 não é reproduzido nos navegadores?
O WebRTC nativo dos navegadores não suporta H.265. Certifique-se de que o fluxo ingerido utilize codificação H.264 ou ative a transcodificação no ApsaraVideo Live para converter H.265 em H.264 para reprodução.
Compatibilidade de navegadores com RTS
Para consultar a lista de navegadores suportados, visualize Browser requirements.
Como resolver o problema em que o QQ Browser em alguns dispositivos Android falha ao puxar e ingerir fluxos?
Em alguns dispositivos Android, como Huawei P20 e vivo iQOO, o QQ Browser pode falhar ao iniciar o kernel X5 quando aberto pela primeira vez. Isso causa um problema de compatibilidade com WebRTC que impede a extração e ingestão de fluxos, apresentando o erro: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection. Para inicializar o kernel X5, execute as seguintes etapas:
Conecte-se a uma rede WI-FI.
Atualize a página e aguarde cerca de 30 segundos.
Reinicie o navegador e visite a página novamente. O problema será resolvido.
Por que alguns navegadores não suportam o Web RTS SDK?
Um navegador pode não suportar o Web RTS SDK por um dos seguintes motivos:
O navegador não implementa operações de API relacionadas ao WebRTC ou as implementa incorretamente. Exemplos: Microsoft Internet Explorer e UC Browser.
O navegador suporta operações de API relacionadas ao WebRTC, mas aceita apenas codificação VP8, e não H.264. Exemplos: o navegador integrado de alguns dispositivos Android.
Por que o Safari no iOS reporta a mensagem de erro "Failed to set remote answer sdp"?
A seguinte mensagem de erro é exibida:
Failed to set remote answer sdp: The order of m-lines in answer doesn't match order in offer.
Esse erro ocorre quando outros SDKs WebRTC são integrados juntamente com o RTS SDK, causando conflitos com o webrtc-adapter. A partir da versão V2.2.4, o RTS SDK exclui o adapter para evitar esse problema. Use o RTS SDK V2.2.4 ou posterior junto com outros SDKs relacionados ao WebRTC.
Para integrar o RTS SDK usando JavaScript, inclua diretamente o RTS SDK V2.2.4 ou posterior.
-
Para integrar o RTS SDK usando npm, adicione o seguinte código:
import { AliRTS } from 'aliyun-rts-sdk/dist/aliyun-rts-sdk-without-adapter.js';Para projetos TypeScript, crie o módulo para obter suporte a tipos:
// Create file typings.d.ts in the root directory of the project. declare module 'aliyun-rts-sdk/dist/aliyun-rts-sdk-without-adapter.js' { import {AliRTS} from 'aliyun-rts-sdk'; export {AliRTS} }
Sem áudio em gravações brutas do RTS
Se uma gravação bruta de um fluxo RTS não tiver áudio, solucione o problema conforme abaixo:
Verifique se o fluxo de source contém áudio: Faça login no console do ApsaraVideo Live. No painel de navegação à esquerda, escolha . Use Stream-based Data para visualizar a Audio Bitrate em Stream Ingest Statistics. Se a taxa de bits de áudio for maior que 0, o fluxo de source contém áudio válido.
Verifique os formatos de codificação de áudio suportados pelo seu player: Recomendamos o uso de um player como o VLC, que suporta quase todos os formatos.
Configure um modelo de transcodificação de gravação: Caso seu player não suporte o formato de áudio de source e não seja possível alterar a codificação de source ou o player, configure um modelo de transcodificação de gravação para converter o áudio para um formato comum, como AAC, antes da gravação. Taxas de transcodificação são aplicáveis.