Estoy tratando de lograr un efecto complejo con ffmpeg
, pero parece que estoy fallando en la sintaxis de -filter_complex
algún lugar.
El objetivo es capturar parte de la pantalla (con el dispositivo de presentación directa UScreenCapture) donde muestro dos imágenes una al lado de la otra (llamadas [bg]
y [key
], o [rgb]
y [alpha]
en la cadena de filtros). A la izquierda está la imagen en sí, a la derecha su canal alfa, que se muestra en blanco y negro. Luego quiero componer eso encima de otra entrada (alguna entrada de video de un archivo u otro dispositivo de captura... pero un archivo en este caso, llamado [video]
en la cadena de filtros).
Para componer los tres juntos, primero mezclo 'multiplicar' el alfa con el video, cambiando a negro todo lo que esté fuera del alfa blanco (volcado en [out1]
), y mezclo 'multiplicando' el fondo de la imagen con el alfa negativo (volcado en [out2]
). Para finalizar la cadena, agrego las dos salidas con la adición del modo de fusión... y las vuelvo a una tubería
En teoría, debería funcionar, pero sigue quejándose de que el especificador de flujo 'alfa' no coincide con ningún flujo:
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 como se describe no puede funcionar, no puede usar [alfa] dos veces, debe dividirlo:
[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
llogan
usuario6898
Dr. Mayhem