Wie füge ich mit ffmpeg ein transparentes Wasserzeichen in die Mitte eines Videos ein?

74

Ich benutze derzeit diese Befehle:

Top left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

Top right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv

Bottom left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv

Bottom right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 [out]" outputvideo.flv

Wie platziere ich die Wasserzeichenmitte des Videos?

Mirza
quelle
2
Die untere rechte Ecke ist infact: ffmpeg –i inputvideo.avi -vf "movie = watermarklogo.png [Wasserzeichen]; [in] [Wasserzeichen] overlay = main_w-overlay_w-10: main_h-overlay_h-10 [out]" outputvideo.flv
Sebastian Patten

Antworten:

173

Beispiele zum Hinzufügen eines Wasserzeichen- / Logo-Bilds zum Video mithilfe des Überlagerungsfilters .

Zentriert

Geben Sie hier die Bildbeschreibung ein

ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy output.mp4

oder mit den verkürzten Overlay-Optionen:

overlay=(W-w)/2:(H-h)/2

Oben links

Dies ist einfach, da die Standardeinstellung, wenn Sie keine Optionen zum Überlagern angeben, darin besteht, das Bild oben links zu platzieren.

In diesem Beispiel werden 5 Pixel Polsterung hinzugefügt, damit das Bild die Kanten nicht berührt:

overlay=5:5

Oben rechts

Mit 5 Pixel Polsterung:

overlay=main_w-overlay_w-5:5

oder mit den verkürzten Optionen:

overlay=W-w-5:5

Unten rechts

Mit 5 Pixel Polsterung:

overlay=main_w-overlay_w-5:main_h-overlay_h-5

oder mit den verkürzten Optionen:

overlay=W-w-5:H-h-5

Unten links

Mit 5 Pixel Polsterung:

overlay=5:main_h-overlay_h

oder mit den verkürzten Optionen:

overlay=5:H-h-5

Transparenz / Deckkraft / Alpha

Beispiel, um Wasserzeichen mit den Format- und Farbkanalmischfiltern zu 50% transparent zu machen :

ffmpeg -i input.mp4 -i watermark.jpg -filter_complex "[1]format=rgba,colorchannelmixer=aa=0.5[logo];[0][logo]overlay=(W-w)/2:(H-h)/2:format=auto,format=yuv420p" -c:a copy output.mp4

Verbesserte Qualität

Durch die Verwendung der format=autoOption im Überlagerungsfilter können PNG-Wasserzeichen besser aussehen:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=5:H-h-5:format=auto,format=yuv420p" -c:a copy output.mp4

Beachten Sie das Hinzufügen des Formatfilters (ja, gleicher Name wie die Option, aber ein eigenständiger Filter), um ihn auf YUV 4: 2: 0 zurückzusetzen, der für die MP4-Ausgabe benötigt wird. Entfernen ,format=yuv420pSie, wenn Sie MP4 nicht ausgeben.

Skalieren Sie das Wasserzeichen in Bezug auf das Hauptvideo

Verwenden Sie den Filter scale2ref :

Beispiel, um das Logo 10% (1/10) der Größe des Hauptvideos zu machen:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[1][0]scale2ref=w=oh*mdar:h=ih*0.1[logo][video];[video][logo]overlay=5:H-h-5" -c:a copy output.mp4
llogan
quelle
@ HarishKumar Ersetze flv durch mp4.
Llogan
3
Wie können wir das Wasserzeichen auf 2/3 der Videobreite skalieren und das Verhältnis des Wasserzeichens
beibehalten?
1
Ich versuche dies auf Android mit FFMPEG Version n2.4.2 auszuführen und erhalte die Fehlermeldung: Kein solcher Filter: "Overlay", irgendwelche Ideen?
The Hungry Androider
3
@ LordNeckbeard, was mit dem Eselbild passiert ist: D
mirza
1
@AarifAli Ich kann nicht helfen, wenn Sie nicht die tatsächlichen Fehler angeben.
Llogan