使用 FFMPEG 从一系列图像创建动画 GIF 并为每个图像插入文本

问题描述

我正在从一系列标记为 img_00.png、img_01.png 等的 png 生成动画 gif。我想在从 png 生成的每一帧的动画 gif 的右上角插入文本以显示一些具体信息。例如说我有 3 个 png、img_00、img_01 和 img_02...我想要的 gif 是:

对于从 img_00 生成的帧,显示“This is from img_00”。 对于从 img_01 生成的帧,显示“This is from img_01”。 对于从 img_02 生成的帧,显示“这是从 img_02 生成的最后一张图像!”。

到目前为止,我一直在使用 drawtext 选项(假设 framerate=1):

ffmpeg -f image2 -framerate 1 -i img_%02d.png -filter_complex "drawtext=enable='between(t,1)':text='word1':fontsize=24:fontcolor=white:x=w-tw:y=0,drawtext=enable='between(t,1,2)':text='word2':fontsize=24:fontcolor=white:x=w-tw:y=0" out.gif

但我得到“word1”和“word2”重叠在一起。是否有更好的方法来执行此操作或以某种方式修复绘图文本,以免发生重叠?

解决方法

between(t,1)between(t,1,2) 将重叠 t=1。应该调整第一个范围的结束时间或第二个范围的开始时间,例如您可以将第一个范围设为 between(t,0.9)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...