Isso é certamente possível, mas os comandos não serão curtos. Adaptado do exemplo de crossfade de Crie um vídeo com 5 imagens com efeito de aumentar / diminuir em ffmpeg
.
1. Gerar paleta
Usar o filtro palettegen criará uma paleta personalizada e representacional que será usada por < um href="https://www.ffmpeg.org/ffmpeg-filters.html#paletteuse-1"> paletteuse para criar o GIF.
Exemplodepaletaaprimoradadepalettegen.
ffmpeg\-loop1-t1-i001.png\-loop1-t1-i002.png\-loop1-t1-i003.png\-loop1-t1-i004.png\-loop1-t1-i005.png\-filter_complex\"[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v]concat=n=9:v=1:a=0,fps=10,scale=320:-1:flags=lanczos,palettegen[v]" \
-map "[v]" palette.png
2. Criar GIF
ffmpeg-loop1-t1-i001.png-loop1-t1-i002.png-loop1-t1-i003.png-loop1-t1-i004.png-loop1-t1-i005.png-ipalette.png\-filter_complex\"[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v]concat=n=9:v=1:a=0,fps=10,scale=320:-1:flags=lanczos[c];[c][5:v]paletteuse[v]" \
-map "[v]" out.gif
O que modificar
-
-t
para controlar a duração de cada imagem. - mistura os valores do filtro para controlar a duração do crossfade.
-
fps
filtrar para controlar a taxa de quadros do GIF (menor taxa será menor, mas mais brusca; maior parecerá melhor). - dimensionar para alterar o tamanho do quadro do GIF.