Você pode usar ffmpeg
para fazer isso. Existem vários exemplos no site do ffmpeg .
Aqui estão alguns deles:
-
Isso criará uma imagem em miniatura a cada minuto, chamada
img001.jpg
,img002.jpg
,img003.jpg
, ... (%03d
significa que o número ordinal de cada imagem em miniatura deve ser formatado usando 3 dígitos)$ ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
-
Isso criará uma imagem em miniatura a cada 10 minutos, chamada
thumb0001.bmp
,thumb0002.bmp
,thumb0003.bmp
, ...$ ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp
Se você quiser transformá-los em um vídeo curto, você pode novamente solicitar a ajuda de ffmpeg
. É discutido em esta página do site .
Aqui estão mais alguns exemplos:
-
Aqui, cada imagem terá uma duração de 5 segundos (o inverso de 1/5 quadros por segundo). Ao dizer ao FFmpeg para definir a opção FPS do arquivo de entrada (quadros por segundo) para algum valor muito baixo, criamos quadros duplicados FFmpeg na saída e assim conseguimos exibir cada imagem por algum tempo na tela:
$ ffmpeg -f image2 -r 1/5 -i img%03d.png -c:v libx264 -r 30 out.mp4
-
Se você não tiver imagens numeradas e ordenadas em série (
img001.jpg
,img002.jpg
,img003.jpg
), mas um monte aleatório de imagens, o ffmpeg também suporta globbing estilo bash (* representa qualquer número de qualquer caractere ):$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.jpg' -c:v libx264 out.mp4
ou para imagens png:
$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.png' -c:v libx264 out.mp4
Para transformar o vídeo resultante em um gif animado, você pode usar as etapas descritas em seu SO Q & A intitulado: Como gerar gif a partir do avi usando o ffmpeg? :
$ ffmpeg -i video.avi -t 10 out%02d.gif
então:
$ gifsicle --delay=10 --loop *.gif > anim.gif
Aqui está o link para a ferramenta gifsicle
.