5 votes

Création d'un diaporama d'images FFmpeg avec zoompan et fondu en entrée/sortie

J'ai essayé FFmpeg à travers tous les tutoriels que j'ai pu trouver sur Internet et je suis un peu perplexe quant à la façon de combiner un effet de zoom avec un fondu en entrée et un fondu en sortie d'une série d'images.

Je suis arrivé à ce qui suit après avoir combiné des morceaux d'exemples que j'ai trouvés, mais il semble que le résultat que j'obtienne soit séquentiel et ne corresponde pas à ce que je pensais.

Toute indication pour m'orienter dans la bonne direction serait appréciée.

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

13voto

bertieb Points 6989

Combinaison d'un zoom et d'un fondu avec ffmpeg

L'exemple que vous avez donné avec ffmpeg a en fait fonctionné avec très peu de modifications (en gardant -loop a provoqué une erreur de segmentation : " Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00 ").

Donc nous avons :

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

Exemple de sortie :

zoompan and fade example

La qualité des pommes de terre. Je dois trouver gif une meilleure optimisation ! Les artefacts et la distorsion sont le résultat de la tentative d'obtenir une taille de fichier < 2MB et ne sont pas présents dans la sortie vidéo originale - cela devrait être suffisant pour vous donner une idée de l'adéquation avec votre cas d'utilisation. Les images sont de moi.


(supplémentaire) Utilisation de transitions variées ou arbitraires

ajouté sur la base des commentaires

Même avec cet exemple minimal, le filtergraph devient assez rapidement complexe, et il est fastidieux de modifier les choses. Une autre bibliothèque pourrait faire mieux.

MLT / MELT

Par exemple, MELT pour le cadre MLT pourrait le faire :

Melt a été développé comme un outil de test pour le cadre MLT. Il peut être considéré comme un puissant, bien qu'un peu obscur, éditeur vidéo multipiste orienté ligne de commande.

et est fréquemment suggéré.

MoviePy

Cependant, MoviePy (page GitHub) pourrait mieux répondre à vos besoins, car il est légèrement plus concis et (je dirais) plus convivial, dans la mesure où un éditeur vidéo en ligne de commande peut être convivial.

Vous êtes probablement plus intéressé par les sections sur compositing y transitions/effets


Je suggère les deux ci-dessus en me basant sur ma propre expérience de tentative d'introduction de transitions avec ffmpeg C'est faisable et capable de produire des effets très décents, mais la douleur n'en vaut pas la peine. Le script ci-dessus devrait répondre à votre question concernant un zoom arrière continu avec un fondu avant/arrière.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X