我正在使用 DrawText 创建一个视频,该视频从下向上垂直滚动。该text.txt
文件包含几行文本。是否可以根据视频的长度调整文本的滚动?
目前,当我尝试使用以下代码时,文本滚动比视频更早完成,或者太慢了。
ffmpeg -f lavfi -i [email protected]:s=1280x720,format=rgba -ss 00:00:00 -t 00:01:30 -vf "drawtext=fontfile=C\\:/Windows/fonts/arial.ttf:fontsize=16:fontcolor=white:x=(w-text_w)/2+20:y=h-40*t:line_spacing=60:textfile='text.txt'" -y output.mp4
有没有办法以数学方式调整 x、y 或任何其他属性,以便它在视频结束时准确完成滚动?
谢谢。注意:您可以创建任何简单的 text.txt 文件来测试此代码。
答案1
让文本从屏幕底部出现并在 90 秒内消失在顶部的公式是:
H-(t-0)*(H+th)/90
H = 视频高度(这是起点)
(t-0)确定开始时间,例如(t-5)将等待 5 秒
(H+th)文本应移动的距离:文本高度+视频高度
/90 需要的时间
一些在 ffplay 中测试的代码:
ffplay -f lavfi -i "color=color=yellow:size=700x500,drawtext=text='%{pts\:hms}':fontsize=20:x=(W-tw)-10:y=(H-th)-10,drawtext=text='SOME TEXT':fontfile='c\:\\windows\\fonts\\ariblk.ttf':fontcolor=red:fontsize=20:x=(W-tw)/2:y=H-(t-0)*(H+th)/90"