O Live Ingest é um serviço da Azion projetado para receber sinais de Live Streaming e distribuí-los através de Applications. Para garantir uma transmissão de alta qualidade, resiliência e disponibilidade, é fundamental seguir um conjunto de boas práticas que maximizam o potencial da plataforma.
Este guia apresenta as principais recomendações para configurar e operar o Live Ingest, incluindo estratégias de redundância, configuração de encoders, uso de chaveamento automatizado e implementação de players robustos.
Pré-requisitos
- Uma conta ativa na Azion com o serviço Live Ingest habilitado.
- Um encoder compatível com o protocolo RTMP.
- Conhecimento básico sobre Applications e Cache Settings.
- Familiaridade com o Rules Engine para Applications.
Configure redundância com múltiplos RTMP Endpoints
A alta disponibilidade é fundamental para transmissões ao vivo. O Live Ingest suporta a configuração de múltiplos endpoints RTMP, permitindo que você crie uma arquitetura redundante.
Use endpoints Primary e Backup
Configure dois RTMP Endpoints em regiões geográficas distintas:
- Primary endpoint: endpoint principal que receberá o fluxo de vídeo durante operação normal.
- Backup endpoint: endpoint secundário que assumirá a transmissão caso o primary falhe.
Essa configuração garante que, se houver degradação ou falha no endpoint primary, o player possa automaticamente redirecionar o fluxo para o endpoint backup, mantendo a transmissão ativa sem interrupção para os espectadores.
Escolha regiões geográficas distintas
Ao configurar os endpoints, selecione regiões diferentes para minimizar o risco de falhas simultâneas. Por exemplo:
- Primary: região mais próxima da sua fonte de conteúdo para menor latência.
- Backup: região alternativa com boa conectividade e infraestrutura equivalente à do primary.
A separação geográfica protege contra problemas localizados como falhas de energia, problemas de rede ou desastres naturais que possam afetar uma região específica.
Utilize encoders homologados
O Live Ingest requer encoders que suportem o protocolo RTMP com autenticação via usuário e senha. Utilizar encoders homologados pela Azion garante compatibilidade e desempenho otimizado.
Verifique a lista de encoders homologados
Antes de iniciar sua transmissão, verifique se seu encoder está na lista de equipamentos homologados pela Azion. Encoders homologados passaram por testes de compatibilidade e oferecem:
- Suporte completo ao protocolo RTMP.
- Integração com o mecanismo de chaveamento.
- Configurações otimizadas para a infraestrutura da Azion.
- Suporte técnico conjunto quando necessário.
Configure corretamente o encoder
Ao configurar seu encoder, siga estas recomendações:
- URL de ingestão: use as URLs fornecidas pela Azion para os endpoints primary e backup.
- Credenciais: configure usuário e senha fornecidos pela Azion para autenticação RTMP.
- Codec de vídeo: utilize H.264 para ampla compatibilidade com players.
- Codec de áudio: utilize AAC para garantir reprodução universal.
- Keyframe interval: configure para 2 segundos (1 frame a cada 2 segundos) para HLS.
- Bitrate: defina bitrates adequados à sua audiência e qualidade desejada.
Configure players com suporte a fallback
O player de vídeo é o ponto final da cadeia de distribuição e deve estar preparado para lidar com falhas e degradações. Players modernos como hls.js oferecem recursos avançados de fallback.
Implemente fallback de transmissão live
Configure seu player para:
- Detectar falhas de carregamento: monitore eventos de erro no carregamento de segmentos ou playlists.
- Tentar reconexão: implemente lógica de retry com backoff exponencial.
- Alternar entre fontes: se disponível, alterne entre múltiplas URLs de manifesto.
- Exibir mensagens claras: informe o usuário sobre problemas de conexão de forma amigável.
Use hls.js para maior robustez
O hls.js é uma biblioteca JavaScript que implementa um cliente HLS. Ele oferece:
- Suporte a fallback de transmissão live.
- Detecção e recuperação automática de erros.
- Configurações avançadas de buffer e latência.
- Compatibilidade com diversos navegadores.
Exemplo de configuração básica com hls.js:
const video = document.getElementById('video');const hls = new Hls({ liveDurationInfinity: true, liveBackBufferLength: 0, maxBufferLength: 30, maxMaxBufferLength: 60});
hls.loadSource('https://your-domain.hls.live.azion.com/stream.m3u8');hls.attachMedia(video);
hls.on(Hls.Events.ERROR, function(event, data) { if (data.fatal) { switch(data.type) { case Hls.ErrorTypes.NETWORK_ERROR: console.log('Network error, trying to recover...'); hls.startLoad(); break; case Hls.ErrorTypes.MEDIA_ERROR: console.log('Media error, trying to recover...'); hls.recoverMediaError(); break; default: console.log('Fatal error, cannot recover'); hls.destroy(); break; } }});Monitore suas transmissões com Real-Time Metrics
O monitoramento em tempo real é essencial para identificar problemas rapidamente e tomar ações corretivas antes que impactem os espectadores.
Acompanhe métricas de Live Ingest
O Real-Time Metrics oferece indicadores específicos para o Live Ingest:
- Usuários conectados: número de espectadores ativos na transmissão.
- Dados transferidos: volume de dados distribuídos.
- Status da conexão: saúde da conexão entre encoder e endpoint.
- Latência: tempo de atraso entre ingestão e entrega.
Use a GraphQL API para dados detalhados
A GraphQL API do Real-Time Metrics oferece o dataset connectedUsersMetrics, que fornece dados agregados em tempo real sobre usuários conectados às suas transmissões.
Consulte a documentação sobre como consultar dados de usuários conectados com GraphQL API para implementar dashboards de monitoramento personalizados.
Configure alertas proativos
Configure alertas para:
- Queda no número de usuários conectados (possível falha na transmissão).
- Aumento de latência acima de limites aceitáveis.
- Falhas de conexão com endpoints de ingestão.
- Degradação de qualidade do sinal.
Otimize as políticas de cache para HLS
O Live Ingest converte automaticamente o sinal RTMP para HLS para distribuição. Configurar corretamente as políticas de cache é fundamental para o desempenho da transmissão.
Configure cache para chunks de vídeo
Os chunks (segmentos de vídeo .ts) devem ter um TTL (Time To Live) curto para garantir que os espectadores recebam o conteúdo mais recente:
- Browser Cache TTL: 0 segundos (não armazenar em cache no navegador).
- CDN Cache TTL: 60 segundos (armazenar brevemente no edge para alta demanda).
Configure cache para playlists
As playlists (arquivos .m3u8) devem ter TTLs ainda mais curtos para refletir atualizações frequentes:
- Browser Cache TTL: 0 segundos.
- CDN Cache TTL: 5 segundos ou menos.
Use o Rules Engine para aplicar políticas
Crie regras no Rules Engine para aplicar automaticamente as políticas de cache corretas:
Regra para chunks (.ts):
- Critério:
if ${uri} matches ".*\.ts$" - Behavior:
Set Cache Policypara política de chunks.
Regra para playlists (.m3u8):
- Critério:
if ${uri} matches "\.m3u8$" - Behavior:
Set Cache Policypara política de playlists.
Consulte o guia Implementar cache HLS para instruções detalhadas.
Prepare-se para eventos de alta demanda
Transmissões com grande audiência exigem preparação adicional para garantir que a infraestrutura suporte o pico de acessos.
Teste sua configuração antes do evento
Realize testes de carga simulando o número esperado de espectadores:
- Configure sua aplicação e endpoints de ingestão.
- Inicie uma transmissão de teste.
- Simule acessos simultâneos usando ferramentas de teste de carga.
- Monitore as métricas em tempo real.
- Ajuste configurações conforme necessário.
Considere o Tiered Cache
O Tiered Cache cria uma camada intermediária de cache que reduz a carga nos servidores de origem e melhora a performance para grandes audiências. Para transmissões ao vivo com HLS, o Tiered Cache pode ser utilizado como componente de ingestão.
Tenha um plano de contingência
Prepare um plano documentado com:
- Procedimentos de failover manual.
- Contatos de suporte da Azion.
- Comunicação com a audiência em caso de problemas.
- Alternativas de transmissão (redes sociais, plataformas de backup).
Documentação relacionada
- Live Streaming Delivery com HLS
- Implementar cache HLS
- Applications
- Cache Settings
- Rules Engine
- Real-Time Metrics
- Consultar dados de usuários conectados com GraphQL API