问题描述
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的评估结果。