FFMPEG-根据视频长度调整DrawText

FFMPEG-根据视频长度调整DrawText

我正在使用 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"

动图:https://files.catbox.moe/8iwdvl.gif

相关内容