使用FFmpeg实现视频移动叠加层:如何让Y坐标在3秒后停止
让叠加层Y坐标在3秒时停止变化的表达式调整
没问题,我来帮你修改这个表达式,实现叠加层在3秒时停止移动的需求。我们只需要在原有的条件判断基础上,增加一个针对3秒时间点的分支即可:
直接修改的表达式
把原来的表达式替换成下面的代码,就能实现目标:
y = if(gte(t, 3), ((H/2)-h - 3*65), if(gte(t,0.5), ((H/2)-h - t*65), NAN))
逻辑解释
这个表达式分三个时间段处理Y坐标:
- 当
t < 0.5秒时,Y值为NAN(叠加层保持隐藏或初始状态,取决于你的软件设置) - 当
0.5 ≤ t < 3秒时,叠加层按照你原本的规则移动:((H/2)-h - t*65) - 当
t ≥ 3秒时,Y值固定在3秒时的计算结果,不再随时间变化
更易维护的版本(推荐)
如果后续需要调整移动速度、开始/停止时间,建议把参数单独提取出来,这样修改起来更方便:
// 定义可调整的参数 startTime = 0.5; // 开始移动的时间 stopTime = 3; // 停止移动的时间 moveSpeed = 65; // 移动速度(像素/秒) baseY = (H/2) - h; // 初始基准Y坐标 // 最终Y坐标计算 y = if(gte(t, stopTime), baseY - moveSpeed*stopTime, if(gte(t, startTime), baseY - moveSpeed*t, NAN))
这样你只需要修改顶部的参数值,就能快速调整叠加层的行为,不用在复杂的表达式里找数值。
内容的提问来源于stack exchange,提问作者Navid Khan
相关产品推荐
相关产品推荐

