
Tenho experimentado o FFmpeg por meio de todos os tutoriais que posso encontrar na Internet e estou um pouco confuso sobre como combinar um efeito zoompan com fade in e fade out de uma série de imagens.
Cheguei ao seguinte depois de combinar pedaços de exemplos que encontrei, mas parece que o resultado que obtive é sequencial e não o que pensei que seria.
Qualquer indicação que me indique a direção certa seria apreciada.
ffmpeg \
-loop 1 -t 5 -i input/slideshow/img0001.jpeg
-loop 1 -t 5 -i input/slideshow/img0002.jpeg \
-loop 1 -t 5 -i input/slideshow/img0003.jpeg \
-loop 1 -t 5 -i input/slideshow/img0004.jpeg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
[1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
[2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
[3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 output/out_fade.mp4
Responder1
Combinando um zoom com um fade comffmpeg
O exemplo que você deu ffmpeg
realmente funcionou com muito poucas modificações (manter -loop
causou um segfault: " Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00
").
Então nós temos:
ffmpeg\ -t 5 -i 1.jpg \ -t 5 -i 2.jpg \ -t 5 -i 3.jpg \ -t 5 -i 4.jpg \ -filtro_complexo \ "[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1 [v0]; [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, fade=t=out:st=4:d=1[v1]; \ [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, fade=t=out:st=4:d=1[v2]; \ [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1, fade=t=out:st=4:d=1[v3]; \ [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 ./ out_fade.mp4
Exemplo de saída:
Qualidade da batata - preciso descobrir gif
melhor a otimização! Artefatos e distorções são resultado da tentativa de obter tamanho de arquivo <2 MB e não estão presentes na saída de vídeo original - deve ser o suficiente para lhe dar uma ideia se ele se adapta ao seu caso de uso. As imagens são de minha autoria.
(adicional)Usando transições variadas ou arbitrárias
adicionado com base em comentários
Mesmo com esse exemplo mínimo, o processo filtergraph
fica bastante complexo rapidamente e é entediante mudar as coisas. Uma biblioteca diferente pode funcionar melhor.
MLT / DERRETER
Por exemplo,MELT
para a estrutura MLTpode fazer:
Melt foi desenvolvido como uma ferramenta de teste para a estrutura MLT. Ele pode ser considerado um poderoso, embora um tanto obscuro, editor de vídeo multitrack orientado para linha de comando.
e é frequentemente sugerido.
FilmePy
No entanto,FilmePy(página do GitHub) pode atender melhor às suas necessidades, pois é um pouco mais conciso e (sugiro) mais fácil de usar, na medida em que um editor de vídeo de linha de comando pode ser fácil de usar.
Você provavelmente está mais interessado nas seções sobrecomposiçãoetransições/efeitos
Eu sugiro os dois acima com base em minha própria experiência de tentar usar um pé de cabra em transições com ffmpeg
; é factível e capaz de produzir efeitos muito decentes, mas a dor não vale a pena. O script acima deve responder à sua pergunta sobre um zoom contínuo com aumento/redução gradual.