我正在使用 ffmpeg 库在特定时间在视频上绘制文本,我成功做到了现在我需要将文本从一个位置移动到另一个位置,但我不能这样做,所以任何人都可以建议我如何做到这一点
我正在使用此命令从上到下移动文本,但我无法确定从 x,y 移动到特定 x,y 的 x 和 Y
ffmpeg -i VideoInput.mp4 -vf "drawtext=enable='between(t,12,14)':fontfile=myfont.otf:text='Test test':x=(w-text_w)/2:y=w/50\*mod(t\,2):fontsize=65" -acodec copy outputVideo.mp4
Run Code Online (Sandbox Code Playgroud)
用
ffmpeg -i VideoInput.mp4 \
-vf "drawtext=enable='between(t,12,14)':fontfile=myfont.otf:text='Test test': \
x='x1+(x2-x1)*(t-t1)/(t2-t1)':y='y1+(y2-y1)*(t-t1)/(t2-t1)':fontsize=65" \
-acodec copy outputVideo.mp4
Run Code Online (Sandbox Code Playgroud)
在哪里
x1和y1是初始坐标;
x2和y2是最终坐标;
t1和t2是开始和结束时间; 在您给定的命令中,12并且14.
以上这些需要在命令中替换为它们的值。
要在最后停留 1 秒,
ffmpeg -i VideoInput.mp4 \
-vf "drawtext=enable='between(t,12,15)':fontfile=myfont.otf:text='Test test': \
x='if(lt(t-t2+1\,0)\,x1+(x2-x1)*(t-t1)/(t2-t1-1)\,x)': \
y='if(lt(t-t2+1\,0)\,y1+(y2-y1)*(t-t1)/(t2-t1-1)\,y)':fontsize=65" \
-acodec copy outputVideo.mp4
Run Code Online (Sandbox Code Playgroud)
这里t2包括停留,所以运动从 12 到 14 + 1 秒保持。将t2在允许被改变了。