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.

  1. 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.
  2. 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á.
  3. Encurte o clipe. Impiedosamente. Quase todo GIF tem um segundo no início ou no final sem fazer nada.
  4. Reduza a paleta abaixo de 256. 128 ou mesmo 64 cores geralmente são invisíveis no conteúdo da tela e significativamente menor.
  5. 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.

  1. Cortar para os 3,2 segundos que contêm a interação, com o último quadro próximo ao primeiro.
  2. Extrair no modo FPS com N = 5 — cada quinto quadro de 60 fps dá 12 fps, cerca de 38 quadros. Saída PNG.
  3. Montar no atraso 8, o pontilhamento é desativado (é o conteúdo da tela com cores planas).
  4. Dimensionar para 600 pixels de largura se a fonte fosse maior.
  5. 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.