Ich verwende ffmpeg
um ein Bild über einen Film zu legen. Die Anforderung ist, das Bild um einen beliebigen Winkel zu drehen. Mit filter_complex
kann ich nun das gedrehte Bild überlagern. Allerdings ist der Ausgabebereich des Bildes schwarz ausgefüllt und nicht transparent. Ich habe dasDokumente, heißt es, kann die Füllfarbe angeben, nachDas, aber das ist mir nicht gelungen. Irgendwelche Ideen?
Ich kopiere meine Befehlszeile hier:
./ffmpeg -i mersyvideo.mp4 -i avatar.jpg -filter_complex "[1:v] rotate=-30*PI/180:c=black@'0x00':ow=rotw(iw):oh=roth(ih) [rotate];[0:v][rotate] overlay=40:10" -codec:a copy output/overlayavatar.mp4
Antwort1
Um die nicht abgedeckten Bereiche transparent zu füllen, verwenden Sie die Option c=none
:
ffmpeg \
-i mersyvideo.mp4 \
-i avatar.jpg \
-filter_complex "
[1:v]rotate=-30*PI/180:c=none:ow=rotw(iw):oh=roth(ih)[rotate];
[0:v][rotate]overlay=40:10
" \
-codec:a copy \
output/overlayavatar.mp4
Sehen Sie sich dierotate
Filterhilfe:
fillcolor
,c
Legen Sie die Farbe fest, mit der der Ausgabebereich gefüllt wird, der nicht vom gedrehten Bild abgedeckt wird. Die allgemeine Syntax dieser Option finden Sie im Abschnitt „Farbe“ (ffmpeg-utils) im Handbuch zu ffmpeg-utils. Wenn der spezielle Wert „keine“ ausgewählt ist, wird kein Hintergrund gedruckt (nützlich, wenn der Hintergrund beispielsweise nie angezeigt wird).
Der Standardwert ist „schwarz“.