Por que os GIFs dão errado na fase de extração
A maioria dos GIFs ruins são decididos antes de qualquer software GIF ser aberto. Alguém extrai cada quadro de um clipe de cinco segundos, obtém 150 imagens, monta-as e acaba com um arquivo de 14 MB que um aplicativo de bate-papo se recusa a incorporar. O instinto é então comprimir com mais força, o que o torna turvo, sem torná-lo muito menor.
O problema real é o upstream. Um GIF não é um codec de vídeo – ele não tem compensação de movimento, nenhuma previsão entre quadros que valha esse nome e um teto rígido de 256 cores por quadro. Cada quadro está próximo de uma imagem independente. Esse único fato orienta todas as decisões abaixo.
Portanto, a sequência a ser pensada é: decidir primeiro a contagem de quadros, depois a paleta, e só então se preocupar com a compactação.
Etapa 1: escolha o intervalo de amostragem
A questão não é "quantos quadros a fonte tem", mas "quantos o movimento realmente precisa". Alguns pontos de partida aproximados:
- 10–12 fps — a configuração robusta. Suave o suficiente para gestos, demonstrações de UI e a maioria dos clipes de reação. Em uma fonte de 30 fps, isso ocorre a cada terceiro quadro; em 60 fps, a cada 5.
- 15 fps — para movimento contínuo onde 12 começa a piscar, como uma câmera panorâmica ou um objeto saltitante.
- 5–8 fps — para conteúdo semelhante a um slide: um gráfico se formando, um antes/depois, um zoom lento. Muitas vezes parece deliberado e não barato.
- 24+ fps — raramente vale a pena. O tamanho do arquivo praticamente dobra em relação aos 12 fps e a maioria dos visualizadores não consegue perceber isso em uma pequena imagem em loop.
No extrator de quadros, use o modo "Frame Rate (FPS)" e insira o divisor: 3 para cada terceiro quadro, 5 para cada quinto. A contagem de quadros é atualizada conforme você digita, que é o número que realmente prevê o tamanho do arquivo.
Verificação de integridade antes de extrair: multiplique a contagem de quadros pretendida por aproximadamente 30–60 KB. Essa é uma estimativa realista para um quadro GIF de 480 pixels de largura após a redução da paleta. Sessenta quadros chegam a algo em torno de 2–3 MB. Se isso estiver acima do seu orçamento, corte os frames agora. É muito mais eficaz do que compactar mais tarde.
Etapa 2: Mantenha a duração curta
GIF não tem caso de uso de formato longo. Dois a quatro segundos cobrem quase tudo que funciona como um loop, e o ponto do loop é mais importante do que a duração: um clipe que termina perto de onde começou parece contínuo, enquanto um que corta no meio do movimento chama a atenção para a costura a cada repetição.
Use o controle deslizante de intervalo de tempo para cortar antes de extrair, em vez de excluir quadros depois. Os carimbos de data e hora ficam visíveis conforme você arrasta, para que você possa colocar o ponto de saída na mesma pose do ponto de entrada.
Etapa 3: Entenda o limite de 256 cores
Essa é a restrição que surpreende as pessoas e vale a pena entender em vez de lutar.
Cada quadro GIF é indexado em uma paleta de no máximo 256 cores. Seu vídeo de origem tem milhões. Algo tem que descartar a diferença, e como isso acontece decide a aparência do resultado.
Duas estratégias, e a correta depende inteiramente do conteúdo:
- Dithering espalha pixels de cores da paleta adjacentes para falsificar os que faltam. Gradientes – céu, iluminação suave, sombras em um rosto – sobrevivem muito melhor com isso. O custo é um padrão de manchas visíveis e um arquivo visivelmente maior, porque esse ruído anula a compactação.
- Sem hesitação fornece áreas de cores planas e limpas e arquivos muito menores. Ideal para gravações de tela, demonstrações de UI, arte de linha, qualquer coisa com grandes regiões uniformes. Em gradientes fotográficos, produz faixas rígidas.
Regra prática: conteúdo da tela, sem pontilhamento. Imagens da câmera, dithering. Se não tiver certeza, exporte ambos e observe-os em tamanho real – a diferença é óbvia e leva um minuto.
É também por isso que extrair para PNG é a decisão certa, embora o GIF final tenha 256 cores. Cada artefato JPEG na fonte se torna uma cor na qual a paleta deve inserir. Alimentar quadros limpos e sem perdas na etapa da paleta dá ao quantizador um melhor ponto de partida.
Etapa 4: Combine o atraso do quadro com o intervalo que você extraiu
GIFs não armazenam uma taxa de quadros. Eles armazenam um atraso por quadro, em centésimos de segundo — e é aqui que muitos GIFs acabam sendo reproduzidos na velocidade errada.
A aritmética é simples: atraso = 100 ÷ seu fps alvo.
- 12 fps → atraso 8 (0,08s)
- 10 fps → atraso 10 (0,10s)
- 15 fps → atraso 7 (arredondado para 6,67)
- 5 fps → atraso 20 (0,20s)
Duas coisas a saber. Primeiro, o arredondamento é real: 15 fps não podem ser expressos com exatidão, então o loop oscila ligeiramente. Para qualquer coisa em que o tempo seja importante, prefira 10, 12,5, 20 ou 25 fps, que se dividem de forma limpa. Em segundo lugar, a maioria dos navegadores limita silenciosamente os atrasos abaixo de 2 (0,02 s) até 10 — portanto, um GIF criado a 50 fps será reproduzido a 10 fps para a maioria dos visualizadores, com cinco vezes o tamanho do arquivo e nenhuma suavidade.
Etapa 5: Reduza o tamanho, na ordem que funciona
Se o arquivo ainda for muito grande, aplique-os em ordem. Cada um custa menos qualidade por byte salvo do que o seguinte.
- Reduza as dimensões. Reduzir pela metade a largura divide em quartos a contagem de pixels. Um GIF de 480 pixels de largura é adequado para a maioria dos contextos de incorporação; Raramente são necessários mais de 800.
- Eliminar quadros. Ir de 15 para 10 fps remove um terço dos dados para uma mudança que a maioria dos espectadores não registrará.
- Encurte o clipe. Impiedosamente. Quase todo GIF tem um segundo no início ou no final sem fazer nada.
- Reduza a paleta abaixo de 256. 128 ou mesmo 64 cores geralmente são invisíveis no conteúdo da tela e significativamente menor.
- Desativar o pontilhamento se você o tiver ligado e o conteúdo aguentar.
Observe que “comprimir com mais força” não está na lista. A compactação do GIF é LZW sem perdas – não há seleção de qualidade. Tudo o que você pode fazer é decidir quais dados incluir em primeiro lugar.
Quando você não deveria criar um GIF
Vale a pena dizer claramente, porque economiza muito esforço:
- Qualquer coisa com mais de cinco segundos. Um MP4 ou WebM terá uma fração do tamanho com melhor qualidade. A maioria das plataformas que aceitam "GIFs" agora os convertem em vídeo internamente de qualquer maneira.
- Conteúdo fotográfico com muito gradiente. 256 cores simplesmente não são suficientes, e nenhum truque de paleta resolve isso.
- Qualquer coisa que precise de áudio. GIF não tem nenhuma, e o loop parecerá errado se a fonte tiver uma batida.
- Qualquer coisa acima de 800 pixels de largura. Até então, a penalidade de tamanho é severa o suficiente para que o vídeo seja a resposta correta.
GIF ganha seu lugar exatamente em uma situação: um loop curto, silencioso e de reprodução automática que deve funcionar em qualquer lugar sem um player. Para isso, ainda está invicto — desde que os frames que entram tenham sido escolhidos deliberadamente.
Um exemplo prático
Digamos que você queira um GIF de uma interação de três segundos na interface do usuário a partir de uma gravação de tela de 60 fps, com menos de 1 MB.
- Cortar para os 3,2 segundos que contêm a interação, com o último quadro próximo ao primeiro.
- Extrair no modo FPS com N = 5 — cada quinto quadro de 60 fps dá 12 fps, cerca de 38 quadros. Saída PNG.
- Montar no atraso 8, o pontilhamento é desativado (é o conteúdo da tela com cores planas).
- Dimensionar para 600 pixels de largura se a fonte fosse maior.
- Verifique o resultado. Cerca de 38 quadros de conteúdo de interface de usuário simples normalmente ficam bem abaixo de 1 MB. Caso contrário, reduza a paleta para 128 cores antes de tocar em qualquer outra coisa.
Tudo leva alguns minutos, e cada etapa é uma decisão que você tomou, e não um padrão que você herdou.