ffmpeg -i 11.jpg -vf color=c=green:s=720x1280[vbg];[vbg][0:v]overlay=x='if(lte(t,5),-w+(W+w)/2/5*t,(W-w)/2)':y=(H-h)/2 -t 5 -y move.mp4
命令解析
//输入文件
-i 11.jpg
//创建一个绿色的底板
color=c=green:s=720x1280[vbg]
//两个层叠加
[vbg][0:v]overlay=x='if(lte(t,5),-w+(W+w)/2/5*t,(W-w)/2)':y=(H-h)/2
//x的坐标
x='if(lte(t,5),-w+(W+w)/2/5*t,(W-w)/2)'
//y的坐标
y=(H-h)/2
//总时长5秒
-t 5
//生成并覆盖文件
-y move.mp4
核心算法
核心是x的坐标计算
x='if(lte(t,5),-w+(W+w)/2/5*t,(W-w)/2)'
lte(t,5)当t小于等于5的时候,执行-w+(W+w)/2/5*t
其中最核心的是-w+(W+w)/2/5*t
1.移动距离(W+w)/2
2.移动速度(W+w)/2/5
3.当前时刻的移动距离(W+w)/2/5*t
4.当前位置-w+(W+w)/2/5*t
网友回复