Wie man ein transparentes PNG über Video legt und in FFmpeg auf die Videogröße skaliert

2155
Daniel Jacob Archer

Im Moment überlagere ich ein transparentes PNG über einem Video, das beide zuerst in dieselbe Größe konvertiert, aber ich würde es gerne lieben, wenn es innerhalb des gleichen Befehls skaliert würde. Hier ist der Befehl jetzt:

ffmpeg -y -i video.mp4 -i overlay.png -filter_complex 'overlay[out],amix=inputs=1,pan=stereo:c0=c0:c1=c1' -map '[out]' output.mp4 

Der beste Befehl sollte auch ein Video zulassen, das keine Audiospur enthält und das PNG trotzdem überlagert.

0

1 Antwort auf die Frage

0
Gyan

Benutzen

ffmpeg -y -i video.mp4 -i overlay.png -filter_complex "[1][0]scale2ref[i][m];[m][i]overlay[v]" -map "[v]" -map 0:a? -ac 2 output.mp4 

Der scale2referste Eingang (auf den Filter) wird auf die Größe des zweiten skaliert. Der Eingangs - Pad - Indizes 0, und 1bezieht sich auf den ersten und zweiten Eingang zu FFmpeg, wie die Zählung von Null beginnt.

-map 0:a?- der ?Befehl sagt FFmpeg, das Audio zufällig abzubilden, dh falls vorhanden. Ich habe die amixFilter entfernt, da a) Filter innerhalb eines Filterkomplexes nicht kontingent sein können und b) es nur einen Eingang gibt, also nichts zu "mischen" ist.

Das ist großartig - wenn ich die zweite Eingabe auf die Größe der ersten skalieren möchte, wäre sie dann [0] [1] scale2ref [i] [m] `? Daniel Jacob Archer vor 8 Jahren 0