ffmpeg slideshow de imagens com zoompan e fade in / out

1

Eu tenho tentado ffmpeg através de qualquer tutorial que eu possa encontrar através da internet e estou um pouco intrigado sobre como combinar um efeito de zoompan com fade in e fade out de uma série de imagens. Cheguei ao seguinte depois de combinar os bits e peças de exemplos que encontrei, mas parece que o resultado que obtive é seqüencial e não o que eu pensei que seria. Qualquer ponto que me aponte para a direção certa seria apreciado.

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
    
por Kostas 16.03.2017 / 10:54

1 resposta

6

Combinando um zoom com um fade com ffmpeg

O exemplo que você deu com ffmpeg realmente funcionou com muito pouca modificação (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 \
-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 ./out_fade.mp4

Exemplo de saída:

Qualidadedabatata-precisodescobrirmelhoraotimizaçãogif!Artefatosedistorçãosãooresultadodetentarobterotamanhodoarquivo<2MBenãoestãopresentesnasaídadevídeooriginal-deveserosuficienteparalhedarumaidéiadeseeleseajustaaoseucasodeuso.Asimagenssãominhas.

(adicional)Usandotransiçõesvariadasouarbitrárias

adicionadocombasenoscomentários

Mesmocomesteexemplomínimo,ofiltergraphficabastantecomplexorapidamente,eétediosomudarascoisas.Umabibliotecadiferentepodefazermelhor.

MLT/MELT

Porexemplo, MELT para o MLT Framework pode ser útil:

Melt was developed as a test tool for the MLT framework. It can be thought of as a powerful, if somewhat obscure, multitrack command line oriented video editor.

e é frequentemente sugerido.

MoviePy

No entanto, o MoviePy (página do GitHub) pode ser mais adequado às suas necessidades, pois é um pouco mais conciso e sugerir) mais fácil de usar, na medida em que um editor de vídeo de linha de comando possa ser de fácil utilização.

Você provavelmente está mais interessado nas seções sobre composição e transitions/effects

Eu sugiro os dois acima baseados em minha própria experiência de tentar crowbar em transições com ffmpeg ; é factível e capaz de produzir alguns efeitos muito decentes, mas a dor não vale a pena. O script acima deve responder à sua pergunta sobre um zoom contínuo com uma entrada / saída gradual.

    
por 19.03.2017 / 14:07

Tags