Ich versuche, einen komplexen Effekt mit zu erzielen , aber ich scheine irgendwo ffmpeg
an der Syntax zu scheitern .-filter_complex
Das Ziel ist es, einen Teil des Bildschirms (mit UScreenCapture Direct Show Device) zu erfassen, wo ich zwei Bilder nebeneinander zeige (genannt [bg]
und [key
] oder [rgb]
und [alpha]
in der Filterkette). Links ist das Bild selbst, rechts sein Alphakanal, schwarz-weiß dargestellt. Dann möchte ich das über einer anderen Eingabe zusammensetzen (eine Videoeingabe von einer Datei oder einem anderen Aufnahmegerät ... aber in diesem Fall eine Datei, die [video]
in der Filterkette aufgerufen wird).
Um die drei zusammen zu komponieren, mische ich zuerst das Alpha mit dem Video, mache alles außerhalb des weißen Alphas (geladen in [out1]
) schwarz und mische den Bildhintergrund mit dem negativen Alpha (geladen in [out2]
). Um die Kette zu beenden, füge ich die beiden Ausgänge mit Blend-Mode-Addition hinzu ... und entleere sie in eine Pipe
Theoretisch sollte es funktionieren, aber es beschwert sich immer wieder, dass der Stream-Bezeichner 'alpha' mit keinem Stream übereinstimmt:
ffmpeg -v debug -f dshow -i video=UScreenCapture -i chroma.mp4 -filter_complex \
"[0:v]split[bg][key]; \
[bg]crop=720:576:0:0, format=gbrap,setsar=0:1[rgb]; \
[key]crop=720:576:720:0,format=gray8,setsar=0:1,scale=720:576[alpha]; \
[1:v]scale=720:576,format=yuv420p,setsar=0:1[video]; \
[alpha]negate[neg_alpha]; \
[video][neg_alpha]blend=all_mode='multiply':all_opacity=1[masked_video]; \
[rgb][alpha]blend=all_mode='multiply':all_opacity=1[masked_3d]; \
[masked_video][masked_3d]blend=all_mode='addition':all_opacity=1[out]" \
-map "[out]"-c:v mpeg2video -f avi - | ffplay -
Filgergraph wie beschrieben kann nicht funktionieren, Sie können [alpha] nicht zweimal verwenden, Sie müssen es aufteilen:
[0:v]split[bg][key]; [bg]crop=720:576:0:0, format=gbrap,setsar=0:1[rgb]; [key]crop=720:576:720:0,format=gray8,setsar=0:1,scale=720:576,split[alpha2][alpha]; [1:v]scale=720:576,format=yuv420p,setsar=0:1[video]; [alpha]negate[neg_alpha]; [video][neg_alpha]blend=all_mode='multiply':all_opacity=1[masked_video]; [rgb][alpha2]blend=all_mode='multiply':all_opacity=1[masked_3d]; [masked_video][masked_3d]blend=all_mode='addition':all_opacity=1
Logan
Benutzer6898
Dr Mayhem