Como converter um vídeo MP4 para um GIF para publicar no README.md do seu repositório Github

Publicado por Fábio Berbert de Paula em 07/06/2025

[ Hits: 174 ]

Blog: https://fabio.automatizando.dev

 


Como converter um vídeo MP4 para um GIF para publicar no README.md do seu repositório Github



Para essa dica usarei um exemplo da vida real. Eu gravei um vídeo de cerca de 35 segundos para demonstrar um projeto de código aberto que estou desenvolvendo. Gostaria de publicar esse vídeo no README.md do meu repositório Github, mas o Github não aceita vídeos MP4. Então, a solução é converter o vídeo para um GIF.

Eis o vídeo:

ls -lh ssh-copilot-bot.mp4
-rw-r--r-- 1 fabio vboxusers 15M jun 7 14:00 /home/fabio/ssh-copilot-bot.mp4

Vamos nos aprofundar nas informações do vídeo:

ffprobe ssh-copilot-bot.mp4
ffprobe version 4.4.2-0ubuntu0.22.04.1+esm7 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
  configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1+esm7 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/fabio/obs/ssh-copilot-bot.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.76.100
  Duration: 00:00:37.16, start: 0.000000, bitrate: 3343 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1080x1920 [SAR 1:1 DAR 9:16], 3329 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

O objetivo principal é reduzir drasticamente o tamanho do arquivo (de 15MB para algo abaixo de 5MB, idealmente) e as dimensões, mantendo uma boa qualidade visual. Um GIF de 1080x1920 com 60fps seria gigantesco e lento para carregar.

A melhor maneira de fazer isso com ffmpeg é um processo de duas etapas que cria uma paleta de cores otimizada para o seu vídeo específico. Isso resulta em um GIF com qualidade muito superior e tamanho menor do que uma conversão direta.

Passo 1: Gerar a Paleta de Cores Otimizada

Este comando primeiro analisa o vídeo, reduzindo a taxa de quadros (FPS) e a resolução, e depois gera um arquivo "palette.png" contendo as cores ideais para a criação do GIF.

ffmpeg -i ssh-copilot-bot.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,palettegen" palette.png

O que este comando faz:
  • -i ~/obs/ssh-copilot-bot.mp4: Define o seu vídeo como entrada.
  • -vf "...": Aplica uma cadeia de filtros de vídeo:
  • fps=12: Reduz a taxa de quadros de 60 para 12. É um ótimo equilíbrio entre fluidez e tamanho do arquivo para um README.
  • scale=480:-1: Redimensiona o vídeo para ter 480 pixels de largura. O -1 faz com que a altura seja calculada automaticamente, mantendo a proporção original (ficará 480x854).
  • flags=lanczos: Usa um algoritmo de redimensionamento de alta qualidade.
  • palettegen: O filtro principal que gera o arquivo palette.png.

Verificando:

file palette.png
palette.png: PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced

Passo 2: Criar o GIF Final Usando a Paleta

Agora, o ffmpeg usará o vídeo original e o palette.png para construir o GIF final.

ffmpeg -i ssh-copilot-bot.mp4 -i palette.png -lavfi "fps=12,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" ssh-copilot-bot.gif

O que este comando faz:

  • -i ~/obs/ssh-copilot-bot.mp4: Define seu vídeo como a primeira entrada.
  • -i palette.png: Define a paleta gerada como a segunda entrada.
  • -lavfi "...": Usa um filtro complexo: Aplica os mesmos filtros fps e scale da etapa anterior; [x];[x][1:v]paletteuse: Pega o resultado do vídeo filtrado e aplica a paleta (paletteuse) para criar o GIF.
  • ssh-copilot-bot.gif: O nome do seu arquivo de saída.

Ao final, você terá um arquivo ssh-copilot-bot.gif com um tamanho muito mais adequado para o GitHub. Não se esqueça de apagar o palette.png, que não será mais necessário.

ls -lh ssh-copilot-bot.gif -rw-r--r-- 1 fabio vboxusers 25M jun 7 14:13 ssh-copilot-bot.gif

Opções para Personalizar

  • Para um GIF menor (em dimensões e tamanho): Altere o valor de scale. Por exemplo, scale=360:-1 para uma largura de 360 pixels.
  • Para um GIF mais suave (e maior): Aumente o fps para 15. Não recomendo mais do que isso.

Agora, o GIF está pronto para ser adicionado ao seu README.md. Você pode fazer isso com a seguinte sintaxe Markdown:

![Descrição do GIF](ssh-copilot-bot.gif)

Ah, e se quiser conferir meu projeto SSH Copilot Bot, está convidado! Trata-se de um bot que roda via Telegram que acessa e gerencia seus servidores Linux através de conexões SSH, tudo de forma segura e prática. Confira o repositório para mais detalhes e como contribuir: https://github.com/fberbert/ssh-copilot-bot.

Outras dicas deste autor

Compartilhando arquivos entre computadores com Woof

Erro: Python - invalid command 'bdist_wheel' [Resolvido]

Verificar se site está online via linha de comando

Treinamento oficial SuSE/Novell

Como remover arquitetura i386 no Debian/Ubuntu e derivados

Leitura recomendada

Instalar Freetube no Slackware

Instalando o PulseEffects no Debian 10 Buster

VLC Player Rodando DVD no Debian 10

Gravar tela do PC sem programas

PhotoGIMP 2020 - Transforme seu GIMP 2.10 no Photoshop

  

Comentários
[1] Comentário enviado por maurixnovatrento em 08/06/2025 - 20:00h

Outra dica boa que vou salvar.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts