Erstellen Sie mit FFmpeg ein Wasserzeichen in einer separaten Spur

Erstellen Sie mit FFmpeg ein Wasserzeichen in einer separaten Spur

Ich habe eine PNG-Datei (Alpha) und eine Videodatei. Ich möchte ein Video erstellen, bei dem die erste Spur das Bild und die zweite Spur das Video ist (PNG über Video). Das Problem ist, dass die Transparenz bei PNG nicht erhalten bleibt.

Ich muss mit ffmpeg ein Wasserzeichen (PNG) in einer separaten Spur über der Videospur erstellen.

ffmpeg -i base.mov -i logo.png -map 0 -map 1 output.mov

Antwort1

Die Syntax zum Hinzufügen eines Wasserzeichens ist etwas anders. Dazu benötigen Sie Videofilter, die bereits in FFmpeg enthalten sind.

Ich bin nicht sicher, ob Sie einer separaten Spur ein transparentes Wasserzeichen hinzufügen können. Der Grund dafür ist, dass das Bild selbst (der PNG-„Stream“) in eine tatsächliche Videospur umgewandelt werden muss (z. B. mit x264) – und da Video-Encoder in diesem Stadium keine Transparenz unterstützen, erhalten Sie kein transparentes Bild.


Folgendes wird in der oberen rechten Ecke hinzugefügt logo.png. base.movDie Position könnt ihr mit folgenden Parametern bestimmen – in meinem Beispiel habe ich es einfach zehn Pixel vom Rand entfernt platziert:

  • main_w(Hauptvideobreite)
  • main_h(Höhe des Hauptvideos)
  • overlay_w(Overlay-Videobreite)
  • overlay_h (Overlay-Videohöhe)

Der Filterbefehl wäre dann:

movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]

So wird daraus ein vollständiger FFmpeg-Befehl:

ffmpeg -i base.mov -vf "movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -c:v libx264 -crf 20 out.mov

Die -c:v libx264 -crf 20Parameter bestimmen den Ausgabe-Videocodec und seine Qualität (wobei CRF wahrscheinlich zwischen 19 und 24 liegen wird, je nachdem, welche Qualität Sie wünschen; niedriger ist besser).

Zu diesem Thema gibt es hier einen recht guten Blog-Beitrag:So versehen Sie ein Video mit FFmpeg mit einem Wasserzeichen. Es geht auf Positionierungsdetails ein.

verwandte Informationen