Por mais de uma década, a Meta dependeu de um fork interno altamente modificado do FFmpeg para atender à demanda única de processar bilhões de uploads de vídeo por dia para VOD e live streaming. Esse fork fornecia otimizações críticas que não existiam no projeto principal, mas a um custo alto: divergência do código upstream, perda de melhorias da comunidade e uma sobrecarga enorme de manutenção. Este artigo explora o esforço de engenharia estratégico para fechar essa lacuna, colaborar com a comunidade do FFmpeg e finalmente aposentar o fork interno — uma jogada que melhorou a eficiência tanto para a Meta quanto para todo o ecossistema open source. Confira o estudo de caso original de engenharia para mais detalhes no projeto FFmpeg na Meta.

Os Desafios de Manter um Fork Divergente
Manter um fork interno criou dois problemas graves:
- Divergência de Features: O fork tinha funcionalidades customizadas (codificação multi-lane paralela, métricas de qualidade em tempo real), enquanto o FFmpeg upstream adicionava novos codecs, formatos e correções de confiabilidade que precisávamos.
- Inferno de Rebase: Mesclar com segurança as mudanças do upstream no nosso fork para evitar regressões ficou cada vez mais complexo e arriscado.
A Solução Estratégica: Upstream para Benefício Mútuo
Em vez de manter o fork para sempre, a equipe de Video Engineering da Meta fez parceria com desenvolvedores do FFmpeg, FFlabs e VideoLAN para fazer o upstream das features principais. Isso exigiu um refatoramento massivo da arquitetura do FFmpeg.
- Transcodificação Multi-Lane com Threads: Antes do FFmpeg 6.0/8.0, codificar múltiplas saídas (ex.: para DASH) em um comando era serializado por frame. Nosso fork interno rodava os encoders em paralelo. Esse design influenciou a comunidade e levou a um refactor histórico que agora fornece codificação mais eficiente para todos os usuários do FFmpeg.
- Métricas de Qualidade em Tempo Real (Decodificação "In-Loop"): Para live streaming, precisávamos calcular métricas como VMAF durante a transcodificação, não depois. Isso exigia inserir um decoder após cada encoder no grafo de processamento. Essa capacidade, conhecida como decodificação "in-loop", foi enviada para o upstream e está disponível a partir do FFmpeg 7.0.
![]()
Perspectivas Críticas e Decisões Estratégicas
Quando NÃO Fazer Upstream: Nem toda modificação interna é boa para o projeto open source. Um exemplo crucial é o suporte ao Meta Scalable Video Processor (MSVP), um ASIC customizado. Apesar de integrado via APIs padrão de aceleração por hardware do FFmpeg, contribuir com esse código sobrecarregaria os mantenedores com um hardware que eles não podem testar. Patches tão específicos da infraestrutura são mantidos internamente, com a Meta arcando com o custo de rebasear eles.
O Trade-off: Isso mostra o equilíbrio crucial na estratégia corporativa de open source: contribua com features de impacto amplo, mas internalize as ligadas a infraestrutura proprietária. Essa abordagem, similar a como empresas integram hardware de IA customizado como o acelerador Maia 200 da Microsoft, garante que o projeto principal permaneça enxuto e universal.

Lições Aprendidas e Próximos Passos
Aprendizados para Equipes de Engenharia:
- Avalie a Longevidade do Fork Cedo: O custo de manter um fork cresce exponencialmente. Procure colaboração upstream proativamente.
- Contribua com Features Genéricas: Foque esforços em enviar mudanças que resolvem problemas para outros, não só para sua stack.
- Use APIs Padrão: Construir suporte a hardware customizado (como o MSVP) em APIs padrão do FFmpeg minimiza atrito e mantém a porta aberta para futuro upstream.
O Futuro do Processamento de Mídia em Escala: Com o fork interno aposentado, as equipes da Meta podem focar em inovar com a comunidade, não ao lado dela. A próxima fronteira envolve aproveitar ferramentas ainda mais avançadas para tarefas de alta frequência, assim como os ganhos de eficiência prometidos por novos assistentes de IA em terminal, como os explorados no nosso artigo sobre Gemini CLI para fluxos de trabalho dev.
Seu Próximo Passo: Se você lida com processamento de mídia em escala, audite suas dependências. Você está mantendo patches que poderiam beneficiar a comunidade? Envolver-se com projetos open source não é só altruísmo — é uma jogada estratégica de eficiência em engenharia.