Die Kombination von Zoom und Blende mitffmpeg

Die Kombination von Zoom und Blende mitffmpeg

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 ffmpeghat tatsächlich mit sehr geringen Änderungen funktioniert (das Beibehalten -loopverursachte 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:

Beispiel für Zoom, Schwenken und Ein- und Ausblenden

Kartoffelqualität – ich muss mir noch gifeine 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 filtergraphwird es schnell recht komplex und es ist mühsam, Dinge zu ändern. Eine andere Bibliothek wäre vielleicht besser.

MLT / SCHMELZ

Zum Beispiel,MELTfü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.

verwandte Informationen