我正在尝试使用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}
这样,从过滤器中取出的视频和从视频中取出的音频。