¿Por qué cuando superpongo un logotipo en la parte superior del video, la parte de color blanco del logotipo es transparente?

Superpongo usando el siguiente comando:

ffmpeg -i video.mp4 -i logo.png -filter_complex "[1]geq=r='r(X,Y)':a=0.1[a];[0][a] overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0" out.mp4

Intenté ajustar la opacidad usando

fmpeg -i video.mp4 -i logo.png -filter_complex "[1]format=rgba,geq=r='r(X,Y)':a='1*alpha(X,Y)'[a];[0][a] overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0" out.mp4

pero sigue siendo transparente en la parte de color blanco.

Parece que la parte de color blanco tiene una transparencia de 0, lo que hace que el segundo comando no funcione.

¿Hay alguna razón por la que esto está sucediendo? El logo que probé es

ingrese la descripción de la imagen aquí

¿Cómo puedo conservar el color blanco?

Respuestas (1)

No hay color blanco. Ese es el color de fondo de la página que se muestra. Su entrada PNG es una imagen paletizada de 8 bits donde el color negro indica transparencia.

Aplique el siguiente filtro a la imagen para convertir los píxeles negros en blancos y establecer una transparencia uniforme.

geq=r='if(p(X,Y),p(X,Y),255)':g='if(p(X,Y),p(X,Y),255)':b='if(p(X,Y),p(X,Y),255)':a=0.1
No entiendo muy bien a qué te refieres con color negro. No veo ningún color negro. Además, ¿puede explicar amablemente qué es p(X,Y)? La documentación dice píxel en el plano actual, que es un poco vago.
El color real almacenado en el PNG en el área de la 'f' es negro, lo que el espectador interpreta como transparencia. Mi geq expr comprueba si un píxel no es negro. Si es así, lo mantiene, de lo contrario lo cambia a blanco.