1

在 Ffmpeg 中,您可以创建移动文本:

ffmpeg -y -t 10 -s qcif -f rawvideo -pix_fmt rgb24 -s 1280x720 -i /dev/zero -g 1 -r 24 -vf drawtext="fontfile=~/fonts/Trebuchet_MS.ttf:text='thing crawls':fontsize=155:fontcolor=red:y=h-20*t" wow.mpg

所以这会给我一个黑色的框架,“东西爬行”从下往上慢慢地......

如果我知道视频的长度(20 秒)并且想要例如创建从屏幕顶部在时间 0 开始并一直到屏幕底部直到 00:00:20 的“东西坠落”,如何我这样做吗?

我也可以创建文本从上到下开始但在屏幕中间停止的情况吗?

4

1 回答 1

5

FFmpeg 文档提供了使用 drawtext 过滤器时必须使用的变量的完整列表,但对于移动文本,有一些特别感兴趣:

'n'<br> 输入帧数,从0开始

't'<br> 以秒表示的时间戳,如果输入时间戳未知,则为 NAN

有了这些,您可以根据已经看到的帧数来设置文本位置。这就是y=h-20*t您示例中的表达式正在执行的操作。随着t增加,文本随着减少而靠近视频顶部h-20*t

为了使您的示例“事物落下”,您需要一个类似的术语20*t。因为y位置从视频顶部的0开始,随着t增加,它会向下移动屏幕。

对于停在屏幕中间的文本,您可能会做一些花哨的数学运算,或者只是使用 FFmpeg丰富的逻辑函数集。像这样的东西在小于一半高度y=t*20*lte(t*20,h/2) + h/2*gt(t*20,h/2)时移动文本,然后立即保持位置大于一半高度。t*20yh/2t*20

于 2012-06-15T23:45:18.167 回答