FFMpeg 像动画一样绘制文本



我正在尝试使用ffmpeg在视频上绘制文本。

文本是: "请稍候,系统正在加载...">

这是我使用的代码:

ffmpeg -i "input.mp4" -vf drawtext="fontfile=1.ttf: text='Please Wait, System Is Loading...': fontcolor=0x0080FF: fontsize=48: box=1: boxcolor=white@0.1: boxborderw=5: x=(w-text_w)/2: y=(h-(text_h+25))" -codec:a copy "output.mp4"

效果很好,但我喜欢的是让文本看起来像动画: 因此,每 0.5 秒它应该更改为以下行并循环它:

请稍候,系统正在加载。

请稍候,系统正在加载中。

请稍候,系统正在加载中...

请稍候,系统正在加载...!

我知道有可能我能弄清楚它是如何:(

提前致谢 此致敬意

也许为时已晚,但解决方案enable='between(t, {start}, {end})'在绘图文本过滤器上可用:

您必须通过单独的过滤器绘制每个文本,因此您将创建 4 个文本并将它们添加到透明背景上:

-t 2 -i color=black@0:{size}, format=rgba -i your_video.mp4

-filter_complex "[0] drawtext=...:enable='between(t, 0, 0.5)', drawtext=...:enable='between(t, 0.501, 1)', ... [texts]"

颜色背景的持续时间设置为 2 秒,适用于 4 个文本,每个文本 0.5 秒。

然后你叠加它们循环播放视频:

[1] [texts] overlay={x}:{y}:eof_action=repeat [out]

然后映射输出流:

-map [out] -map 1:a {codecs}

这样,从过滤器中取出的视频和从视频中取出的音频。

最新更新