如何使用if语句在FFMPEG中添加颜色叠加

问题描述

ffmpeg -i input.mp4 -y -t 10 -vf drawBox=x=0:y=0:w=200:h=200:color='if(1==1\,red\,green)':t=fill output.mp4

我试图测试如何使用if语句向视频添加彩色方形叠加层,但是出现以下错误

找不到颜色'if(1 == 1,red,green)' [AVFiltergraph @ 000002d24a659440]使用参数'x = 0:y = 0:w = 200:h = 200:color = if(1 == 1,red,green):t = fill'初始化过滤器'drawBox'时出错 重新初始化过滤器时出错! 无法将帧注入过滤器网络:参数无效 处理流#0:0的解码数据时出错

解决方法

根据documentation of FFmpeg on Expression Evaluation的相等性应使用eq(x,y)进行测试,这是医生说的:

eq(x,y) 如果x和y相等,则返回1,否则返回0。

这可能是出于测试目的,但我不得不提到if(eq(1\,1)\,red\,green)将始终返回red

if(x,y,z) 评估x,如果结果非零,则返回y的评估结果,否则返回z的评估结果。