Há alguns dias atrás, me perguntaram se tinha como converter trechos de vídeos para um arquivo .gif, para ser usado em lugares que só aceitam imagens, como foruns, msn e etc…
Abaixo segue um exemplo simples que faz isso, usando FFmpeg:
ffmpeg -i teste.avi -pix_fmt rgb24 -f gif teste.gif |
Detalhes:
- -i = especifica o arquivo de entrada (teste.avi)
- -pix_fmt = especifica o formato dos pixels (rgb24, formato suportado pelo gif )
- -f = força a saida para .gif
- teste.gif é o arquivo de saída do comando
Se você precisa de uma solução mais específica, abaixo segue alguns outros comandos e as explicações dos parâmetros:
GIF com tamanho final específico e com loop:
ffmpeg -i teste.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -f gif -s 120x120 teste.gif |
Detalhes:
- -r = especifica o frame rate do gif
- -loop_output = especifica quantas vezes o gif vai entrar em loop (zero para infinito)
- -s = especifica o tamanho do gif em pixels
GIF com inicio definido pelo tempo e final limitado por frames:
ffmpeg -i widescreen.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -vframes 100 -ss 00:00:02 -f gif teste.gif |
Detalhes:
- -ss = especifica a posição inicial do video para gravação (formato: hh:mm:ss)
- -vframes = limita a quantidade de frames que serão gravados a partir do video original
- No exemplo, o gif será formado apenas pelos 100 primeiros frames depois da posição 2 segundos
GIF com inicio definido pelo tempo e final limitado pelo tempo:
ffmpeg -i widescreen.avi -pix_fmt rgb24 -r 10.0 -loop_output 0 -ss 00:00:02 -t 00:00:04 -f gif teste.gif |
Detalhes:
- -ss = especifica a posição inicial do video para gravação (formato: hh:mm:ss)
- -t = especifica a posição final de gravação do video (formato: hh:mm:ss)
- No exemplo, o gif será criado a partir do segundo 2 até o segundo 4 do vídeo.
Você também pode experimente a combinação dos parâmetros, até encontrar o comando que lhe sirva melhor… 😉