我正在尝试编写一个 ffmpeg 过滤器,该过滤器接收两个视频并将它们混合在一起,使得第一个视频的 Y(亮度)成为输出的红色通道,而第二个视频的 Y 成为输出的蓝色通道(绿色设置为零)。
换句话说,我想要这样:[v0][v1] r=v0.y:b=v1.y:g=0 [out]
答案1
假设你的输入是 YUV,并且你想要打包 RGB,使用
ffmpeg -i yr.mp4 -i yb.mp4 -filter_complex
"[0][1]mergeplanes=0x001000:gbrp,lut=g=0,format=rgb24" -c:v png out.mov
在 中0x001000
,第一对00
将第一个外平面( 中的 g gbrp
)设置为第一个输入的第一个平面,即 yr.mp4 的亮度。这是随机的,因为 g 稍后将被设置为零。然后10
,将第二个外平面设置为第二个输入的第一个平面,即 yb.mp4 的亮度。最后,将第三个平面设置为第一个输入的亮度。然后 lut 过滤器将 G 平面重置为零。添加了格式过滤器以将像素重新打包为通用rgb24
格式。选择 PNG 编解码器以保留 RGB 编码。