
Ich habe FFmpeg mithilfe aller im Internet zu findenden Tutorials ausprobiert und bin ein wenig verwirrt, wie ich einen Zoompan-Effekt mit dem Ein- und Ausblenden einer Bildreihe kombinieren kann.
Ich bin zu Folgendem gekommen, nachdem ich Teile der Beispiele, die ich gefunden habe, kombiniert habe, aber es sieht so aus, als ob das Ergebnis, das ich erhalte, sequentiell ist und nicht das, was ich erwartet hatte.
Ich wäre für jeden Hinweis dankbar, der mich in die richtige Richtung weist.
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
Antwort1
Die Kombination von Zoom und Blende mitffmpeg
Das von Ihnen angegebene Beispiel ffmpeg
hat tatsächlich mit sehr geringen Änderungen funktioniert (das Beibehalten -loop
verursachte einen Segmentierungsfehler: " Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00
").
Also haben wir:
ffmpeg \ -t 5 -i 1.jpg \ -t 5 -i 2.jpg \ -t 5 -i 3.jpg \ -t 5 -i 4.jpg \ -filter_komplex \ "[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='wenn(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='wenn(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='wenn(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
Beispielausgabe:
Kartoffelqualität – ich muss mir noch gif
eine bessere Optimierung überlegen! Artefakte und Verzerrungen sind das Ergebnis des Versuchs, die Dateigröße auf unter 2 MB zu reduzieren, und sind in der ursprünglichen Videoausgabe nicht vorhanden – das sollte ausreichen, um Ihnen eine Vorstellung davon zu geben, ob es für Ihren Anwendungsfall geeignet ist. Die Bilder sind von mir.
(zusätzlich)Verwendung unterschiedlicher oder beliebiger Übergänge
hinzugefügt basierend auf Kommentaren
Selbst mit diesem Minimalbeispiel filtergraph
wird es schnell recht komplex und es ist mühsam, Dinge zu ändern. Eine andere Bibliothek wäre vielleicht besser.
MLT / SCHMELZ
Zum Beispiel,MELT
für das MLT-Frameworkkönnte tun:
Melt wurde als Testtool für das MLT-Framework entwickelt. Man kann es sich als einen leistungsstarken, wenn auch etwas obskuren, befehlszeilenorientierten Multitrack-Videoeditor vorstellen.
und wird häufig empfohlen.
FilmPy
Jedoch,FilmPy(GitHub-Seite) könnte Ihren Anforderungen besser entsprechen, da es etwas prägnanter und (würde ich vorschlagen) benutzerfreundlicher ist, sofern ein Video-Editor mit Befehlszeilenfunktion benutzerfreundlich sein kann.
Am meisten interessieren Sie sich wahrscheinlich für die Abschnitte überKompositionUndÜbergänge/Effekte
Ich schlage die beiden oben genannten vor, basierend auf meiner eigenen Erfahrung mit dem Einschieben von Übergängen mit ffmpeg
; es ist machbar und kann einige sehr anständige Effekte erzeugen, aber der Aufwand ist es nicht wert. Das obige Skript sollte Ihre Frage zu einem kontinuierlichen Herauszoomen mit Ein-/Ausblenden beantworten.