Conversão Direta de AVI para MP4 no Browser usando FFmpeg: Teste de Estresse em um Mac M3 e a Verdade Sobre WebAssembly

Recentemente, dediquei um tempo para programar um pequeno utilitário: uma ferramenta de conversão de vídeo que roda inteiramente no browser, impulsionada pelo núcleo do FFmpeg. Para testar suas capacidades, peguei meu MacBook Air M3 (16GB RAM) para servir de cobaia, rodando uma conversão de um antigo arquivo AVI para MP4 diretamente no Google Chrome.
Os resultados que obtive foram ao mesmo tempo divertidos (rs) e tecnicamente fascinantes: O cronômetro parou em exatos 747,44 segundos (pouco mais de 12,5 minutos), e o chip M3, famoso por não esquentar, deixou o chassi de alumínio visivelmente quente ao toque.
Então, por que um computador equipado com um dos chips mais poderosos do mercado atual precisa "suar a camisa" por mais de 12 minutos apenas para mudar o formato de um vídeo? Neste artigo, vamos dissecar a matemática técnica por trás desse processo e responder à pergunta final: Se é tão lento, por que sequer precisamos de ferramentas de processamento baseadas no browser?
1. O Primeiro Gargalo: Remux vs. Transcode
O maior motivo do meu teste ter demorado tanto não foi a máquina; foi o arquivo original. O arquivo que escolhi usava um formato antigo AVI com padrões de compressão (codecs) legados, como DivX ou Xvid.
No mundo do processamento de vídeo, você precisa distinguir entre dois conceitos centrais:
- Remux (Copy - Extremamente Rápido): Se o seu vídeo de origem já usa um codec moderno (como H.264), o FFmpeg simplesmente extrai o "núcleo" de vídeo e áudio e o coloca em um novo wrapper MP4. Esse processo é essencialmente como copiar dados de uma pasta para outra e leva apenas alguns segundos.
- Transcode (Decode & Encode - Extremamente Lento): Como meu arquivo AVI usava um padrão desatualizado incompatível com MP4, o FFmpeg foi forçado a "reconstruí-lo do zero". Ele teve que fazer o Decode de cada frame do vídeo antigo e, em seguida, fazer o Encode dessa enorme pilha de frames no padrão moderno H.264/H.265. Essa trituração pixel por pixel é incrivelmente intensiva para a CPU.
2. A Realidade do WebAssembly (WASM) no Browser
Para rodar um software pesado como o FFmpeg (originalmente escrito em C/C++) diretamente no Google Chrome, tive que utilizar WebAssembly (WASM). Este é um avanço milagroso para a web moderna, mas tem uma falha fatal: Ele não consegue aproveitar totalmente a Hardware Acceleration.
...
