FFmpeg überlagert und mischt Videos

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 setsarschien 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 setsargibt'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?

Antworten (1)

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"

( $1durch Ihr eigentliches Video, $2durch Ihr Overlay und $3durch den Namen der Ausgabedatei ersetzen)