Por Que o Meta Apostou no AV1 para Comunicação em Tempo Real
Em 2023, o Meta começou a liberar suporte AV1 para dispositivos topo de linha no Messenger e WhatsApp. Em 2026, o AV1 está habilitado na maioria dos dispositivos móveis dos apps de Comunicação em Tempo Real (RTC) do Meta. A motivação é simples: o AV1 entrega a mesma qualidade visual que o H.264/AVC usando pelo menos 20% menos largura de banda — e muitas vezes muito mais em dispositivos capazes.
Para usuários em mercados emergentes, onde a taxa de bits do vídeo pode cair para 10–400 kbps, essa diferença é dramática. Em testes lado a lado a 100 kbps, o vídeo H.264 aparece visivelmente borrado enquanto o AV1 permanece muito mais nítido. O AV1 também se destaca em conteúdo de tela (texto, UI) graças ao modo paleta e cópia intrabloco, que fazem parte de seu perfil principal.
Mas trazer o AV1 para chamadas em tempo real é muito mais difícil do que usá-lo para vídeo sob demanda. O RTC exige latência de ponta a ponta abaixo de 300 ms, codificação/decodificação em tempo real em dispositivos com bateria e tratamento gracioso de flutuações de rede. O blog de engenharia do Meta (fonte abaixo) detalha exatamente como eles enfrentaram cada obstáculo.
Fonte: Blog de Engenharia do Meta

Os Principais Desafios e Soluções
1. Seleção de Codificador/Decodificador
Problema: Codificadores AV1 de código aberto (como libAOM) aumentaram o consumo de energia em 14% em um Pixel 8 em comparação com H.264, e adicionaram 1,7 MB ao binário do aplicativo (600 kB compactados). Para uma empresa que atende bilhões de usuários, o tamanho do binário afeta as taxas de sucesso de atualização, o tempo de inicialização e as taxas de falha.
Solução: O Meta adotou um codificador interno de baixa complexidade com consumo de energia semelhante ao H.264 baseline. Eles desenvolveram um preset de ultrabaixa complexidade que corresponde à complexidade de codificação H.264 enquanto mantém os ganhos de compactação AV1. Para decodificação, escolheram dav1d por sua eficiência energética superior.
Mitigação de tamanho binário:
- A abordagem de download dinâmico falhou devido a problemas de rede/dispositivo.
- Em vez disso, otimizaram a ferramenta de matriz de quantização (QM) (reduziram pela metade), removeram ferramentas não utilizadas (economizando 60 kB) e compartilharam bibliotecas de codec entre recursos.
2. Elegibilidade de Dispositivos: Abordagem Baseada em ML
Problema: O Android tem milhares de modelos de dispositivos. Confiar em especificações como RAM, ano de lançamento ou versão do SO se mostrou não confiável. Alguns celulares octa-core de 2023 não conseguiam codificar nem 320×180@15fps em tempo real devido ao throttling da CPU.
Solução: O Meta construiu uma estrutura de elegibilidade de dispositivos baseada em ML que usa métricas de desempenho do mundo real (não dados de laboratório) para calcular um rtc_score. O modelo foi refinado iterativamente:
- Modelo V1.1 (agosto de 2025): Expandiu o tráfego AV1.
- Modelo V2: Abordagem de dois níveis separando dispositivos de alto e baixo desempenho.
3. Adaptação de Complexidade do Codec
Mesmo dispositivos elegíveis enfrentam dificuldades durante as chamadas. O Meta implementou três mecanismos adaptativos:
# Pseudocódigo: Ajuste adaptativo de preset do codificador
if latencia_codificacao > LIMIAR_ALTO:
diminuir_complexidade_codificador()
elif latencia_codificacao < LIMIAR_BAIXO:
aumentar_complexidade_codificador()
# Se ainda muito alto, mudar para H.264
if latencia_codificacao > MAXIMO_PERMITIDO:
trocar_codec_para_h264()
# Verificação de decodificação do par
if latencia_decoficacao_par > LIMIAR_PAR:
remetente_troca_para_h264()
Isso permite um design de codec assimétrico: celulares intermediários enviam H.264, mas recebem AV1 de pares de alto desempenho, aumentando significativamente a cobertura.
4. Controle de Taxa: Evitando Overshoot e Undershoot
Problema: Picos de taxa de bits causam congestionamento e congelamento de vídeo. O atraso VBV (Video Buffering Verifier) deve ficar abaixo de 200 ms. Overshoot é óbvio, mas undershoot também prejudica — engana a estimativa de largura de banda e diminui a rampa de aumento da taxa.
Solução:
- O codificador rastreia o status do buffer VBV e reduz a taxa dos quadros subsequentes após overshoot.
- A taxa de bits dos keyframes é estritamente controlada para evitar picos.
- O Reference Picture Resampling (RPR) permite mudanças de resolução sem gerar um keyframe.
- Algoritmo revisado para evitar overshoot e undershoot.
5. Resiliência a Erros: Camadas Temporais e LTR
Camadas Temporais (TL):
- Quadros organizados em camada base (T0) e camadas de aprimoramento (T1, T2…).
- Se pacotes de aprimoramento são perdidos, a decodificação continua com a camada base — sem congelamento.
- FEC protege a camada base; retransmissões são priorizadas por camada.
- TL é ativada adaptativamente apenas quando a perda de pacotes aumenta, para evitar perda de eficiência de compactação.
Long-Term Reference (LTR):
- Periodicamente, o codificador emite um quadro LTR armazenado em um buffer de 4 quadros.
- Em caso de perda de pacote, o receptor solicita um quadro LTRP (previsto por LTR) — ressincronizando instantaneamente sem um keyframe caro.
- LTR é implementado via uma extensão de cabeçalho RTP proprietária que carrega um indicador LTR explícito e frame_id para rastreamento ACK.
# Manipulação de solicitação LTR (simplificada)
def handle_ltr_request(request):
if tem_ltr_com_ack_no_buffer():
codificar_quadro_ltrp()
else:
codificar_keyframe() # fallback
O LTR reutiliza quadros periódicos de alta qualidade existentes, então há pouca sobrecarga.

Limitações e Cuidados
Embora a abordagem do Meta seja impressionante, não é uma bala de prata:
- Consumo de energia ainda maior em dispositivos de baixo desempenho, mesmo com codificador otimizado.
- Chamadas em grupo continuam desafiadoras — decodificar vários fluxos AV1 simultaneamente é muito mais difícil.
- Suporte AV1 por hardware é necessário para adoção verdadeiramente generalizada.
- Camadas temporais reduzem a eficiência de compactação se sempre ativadas; a comutação adaptativa adiciona complexidade.
- LTR requer coordenação estreita entre rede e codificador — nem todas as implementações de codec suportam isso.
Próximos Passos para Seu Aprendizado
Se você está implementando ou avaliando AV1 para seu próprio produto RTC:
- Comece com o decodificador dav1d — é a opção de código aberto mais eficiente em energia.
- Construa um modelo de capacidade de dispositivo usando métricas de desempenho reais, não apenas especificações.
- Implemente comutação adaptativa de codec — não presuma que um dispositivo que decodifica AV1 também pode codificá-lo.
- Teste o controle de taxa sob mudanças frequentes de taxa/resolução — é onde a maioria dos codificadores falha.
- Considere camadas temporais e LTR para redes com perda, mas meça o trade-off de compactação.
Para um contexto mais profundo sobre técnicas de otimização de codec, confira Beyond Matrix Math: Como o NVIDIA Blackwell Ultra Enfrenta o Gargalo Softmax — ele aborda trade-offs semelhantes em inferência de IA. E se você está curioso sobre outras tendências tecnológicas de 2026, CSS em 2026: Função Alpha, Grid Lanes e o que Aconteceu no CSS Day explora novas capacidades frontend.

Conclusão: AV1 é o Futuro do RTC — Mas Exige Engenharia
A jornada do Meta mostra que adotar AV1 para comunicação em tempo real não é apenas uma troca de codec. Exige:
- Design de codificador de baixa complexidade que corresponda ao consumo de energia do H.264.
- Elegibilidade de dispositivos baseada em ML que aprende com dados do mundo real.
- Comutação adaptativa de codec e preset que responde à saúde do dispositivo.
- Controle de taxa sofisticado para evitar overshoot e undershoot.
- Camadas temporais e LTR para degradação graciosa sob perda de pacotes.
O resultado? O AV1 agora alimenta a maioria dos dispositivos móveis nas chamadas do Messenger e WhatsApp, entregando melhor qualidade para usuários em redes limitadas. Conforme o suporte de hardware se expande e os modelos de ML melhoram, a cobertura e a qualidade só aumentarão.
Mensagem principal para desenvolvedores: Os benefícios do AV1 são reais, mas implantá-lo em um produto RTC exige uma abordagem holística em nível de sistema — não apenas integrar uma biblioteca. Comece pequeno, meça tudo e itere.