FFmpeg中sendcmd为何无法控制命名的drawbox滤镜实例?
问题分析与解决
你的操作主要有两个关键错误,导致sendcmd无法控制drawbox动画:
1. sendcmd参数赋值语法错误
你在命令里写的 drawbox@one w W*(T/5) 缺少了赋值符号 =,FFmpeg要求必须用 参数名=表达式 的格式来修改滤镜参数。
2. 宽高变量引用错误
你使用的 W 和 H 不是FFmpeg滤镜识别的原生变量,应该用 iw(输入宽度)和 ih(输入高度)来指代视频的宽高。
另外,多个sendcmd命令之间需要用分号 ; 分隔,保证解析正确。
修正后的完整滤镜链示例
drawbox@one=0:0:iw:ih:red:fill,drawbox@two=0:0:iw:ih:black:fill,sendcmd=c=' 0.0-5.0 [expr] drawbox@one w=iw*(T/5); 0.0-5.0 [expr] drawbox@two h=ih*(T/5) '
额外注意事项
- 确保sendcmd滤镜放在所有需要控制的drawbox滤镜之后,这样它才能正确定位到前面的命名滤镜实例。
T是sendcmd内置的时间变量,代表当前时间(从片段起始点开始计算),你的使用是正确的,T/5会让参数在5秒内从0线性增长到1倍的宽/高。
内容的提问来源于stack exchange,提问作者VladStepu2001
相关产品推荐
相关产品推荐

