Ich versuche, FFmpeg zu verwenden, um ein Video mit einer additiven Mischung über das andere zu legen. Ein Video ist das eigentliche Video, das ich transcodieren möchte, das andere ist ein ca. 10 Sekunden langes Video, das ich in eine Ecke einfügen möchte, eine Art animiertes Wasserzeichen. Das Wasserzeichenvideo ist ein weißes animiertes Material mit schwarzem Hintergrund.
Bisher habe ich etwas in dieser Richtung versucht:
$ /d/ffmpeg/ffmpeg.exe -i actualvideo.mkv -i myoverlay.mp4 \
-filter_complex "[1:0] setsar=sar=1 [1sared]; [0:0][1sared] blend=all_mode='addition':repeatlast=1" \
test.mkv
Das setsar
schien notwendig, da es sich sonst beschweren würde:
[Parsed_blend_0 @ 00000000043e0e40] First input link top parameters (size 1280x720, SAR 1:1) do not match the corresponding second input link bottom parameters (1280x720, SAR 0:1)
Mit dem setsar
gibt's nichts zu meckern, aber das ausgegebene Video sieht meistens rosa aus. Beide Videos sehen gut aus, wenn sie einzeln betrachtet werden, bevor ich sie in FFmpeg einfüge.
Irgendwelche Ideen? Mache ich etwas falsch?
Ich habe einen hilfreichen Beitrag auf stackoverflow gefunden, der dieses Problem anspricht: https://stackoverflow.com/a/21400416/377875
Anscheinend ist es ein Problem mit dem Farbraum. So etwas funktioniert:
ffmpeg -i "$1" -i "$2" \
-filter_complex "[1:0] setsar=sar=1,format=rgba [1sared]; [0:0]format=rgba [0rgbd]; [0rgbd][1sared]blend=all_mode='addition':repeatlast=1:all_opacity=1,format=yuva422p10le" \
-c:v libx264 -preset slow -tune film -crf 19 \
-c:a aac -strict -2 -ac 2 -b:a 256k \
-pix_fmt yuv420p "$3"
( $1
durch Ihr eigentliches Video, $2
durch Ihr Overlay und $3
durch den Namen der Ausgabedatei ersetzen)