Ich möchte ein Fenster aufnehmen und es auf ein anderes Video legen.
Das ist mein Befehl:
ffmpeg -i MainVideo.avi
-f gdigrab -framerate 25 -video_size 300x200 -i title="MyWindow"
-filter_complex "[0]setpts=PTS-STARTPTS[b];[b][1:v]overlay=(main_w-overlay_w):main_h-overlay_h[v]"
-map "[v]" -c:v libx264 -r 25 out.mp4
Hintergrund meines Fensters ist schwarz.
Wie kann ich diese schwarze Farbe durch Transparenz ersetzen?
geht das per ffmpeg? (Ich denke, es ist mit Chromakey/Colorkey-Filtern möglich, aber ich bin mir nicht sicher, und ich weiß nicht, wie ich diese Filter verwenden soll.)
Danke.
AKTUALISIEREN:
GDIgrab liefert einen RGB-Feed, damit der Colorkey-Filter hier arbeiten kann.
Versuchen
ffmpeg -i 1.mp4 -f gdigrab -framerate 25 -video_size 300x200 -i title="MyWindow"
-filter_complex
"[1]split[m][a];
[a]format=yuv444p,geq='if(gt(lum(X,Y),0),255,0)',hue=s=0[al];
[m][al]alphamerge[ovr];
[0][ovr]overlay=(main_w-overlay_w):main_h-overlay_h[v]"
-map "[v]" -c:v libx264 -r 25 out.mp4
Möglicherweise müssen Sie einen Wert nahe 0 verwenden, wenn 0 nicht den gesamten transparenten Bereich erfasst.
...(X,Y),16),255,0...
statt...(X,Y),0),255,0...
Gyan
Maria
Gyan
format=yuv444p
filter vorgeq
und anstelle von16
ein, müssen Sie möglicherweise einen Wert von 0 oder nahe 0 verwenden