vegas - FFMPEG: superponer un video a otro y hacer que los píxeles negros sean transparentes
transparencia sony vegas (2)
No podrá obtener un enfoque de "reemplazar píxeles negros" para que funcione correctamente. Lo que realmente quieres es un video en primer plano con un canal alfa real que pueda ser manipulado y probado antes de hacer una superposición sobre un fondo. Para ver un ejemplo extendido que describe los problemas, echa un vistazo a la publicación de mi blog sobre el tema. Al usar FFMPEG, una manera fácil de importar video de canal alfa es usar Quicktime con el video del códec de animación a 32 BPP.
Intento usar FFMPEG para crear un video con un video superpuesto sobre otro.
Tengo 2 MP4. Necesito hacer que todos los píxeles NEGROS del video de superposición sean transparentes para que pueda ver el video principal debajo de él.
Encontré dos formas de superponer un video en otro:
Primero, lo siguiente ubica la superposición en el centro y, por lo tanto, oculta la parte del video principal debajo de ella:
ffmpeg -i 1.mp4 -vf "movie=2.mp4 [a]; [in][a] overlay=352:0 [b]" combined.mp4 -y
Y, en este caso, coloca el video superpuesto a la izquierda, pero su opacidad está configurada en un 50%, por lo que al menos está debajo de otra visible:
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS[top]; [1:v]setpts=PTS-STARTPTS, format=yuva420p,colorchannelmixer=aa=0.5[bottom]; [top][bottom]overlay=shortest=0" -acodec libvo_aacenc -vcodec libx264 out.mp4 -y
Mi objetivo es simplemente hacer que todos los píxeles negros en la superposición (2.mp4) sean completamente transparentes. ¿Cómo puede hacerse esto?
La forma nocional de hacer esto es aplicar croma-key al black out y luego al overlay, pero como dijo @MoDJ, es probable que esto no produzca resultados satisfactorios. Tampoco lo hará el método que sugiero a continuación, pero vale la pena intentarlo.
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex
"[1]split[m][a];
[a]geq=''if(gt(lum(X,Y),16),255,0)'',hue=s=0[al];
[m][al]alphamerge[ovr];
[0][ovr]overlay"
output.mp4
Arriba, duplico la secuencia de video superpuesta, luego uso el filtro geq
para manipular los valores de luminancia de manera que cualquier píxel con una luminancia mayor a 16 (es decir, no negro puro) tenga su luminancia en blanco, sino cero. Como no he proporcionado expresiones para los dos canales de color, geq
vuelve a la expresión luma. No queremos eso, entonces uso el filtro de hue
para anular esos canales. Luego uso el filtro alphamerge
para combinar esto como un canal alfa con la primera copia del video superpuesto. Entonces, la superposición. Como dije, esto puede no producir resultados satisfactorios. Puede ajustar el valor 16
en el filtro geq para cambiar el umbral negro. El rango sugerido es 16-24 para archivos de video de rango limitado (Y: 16-235).