动态文本

动态文本

我怀疑这是否可能,但我正在尝试找到一些方法

  1. 动态呈现文本,然后
  2. 可选地为其添加动画(简单的从左到右移动),然后
  3. 将结果合成到另一个视频上。

我知道 FFMPEG 功能强大,但仅使用 FFMPEG 是否可以像这样动态生成内容?视频可以输入,但文本必须完全使用 FFMPEG 生成。

答案1

您可以使用绘图文本过滤器

动态文本

textfile如果使用和reload选项,则可以在编码过程中更改文本:

  • textfile包含要绘制的文本的文本文件。文本必须是 UTF-8 编码字符序列。

  • reload如果设置为 1,文本文件将在每一帧之前重新加载。请确保自动更新,否则可能会读取部分内容,甚至失败。

动画

文本可以使用表达式xydrawtext 选项内。请参阅drawtext 文档获取常量和函数的列表。

时间线编辑

有些过滤器(例如 drawtext)支持enable选项这意味着您可以关闭和打开过滤器。您可以通过以下方式查看哪些过滤器支持时间线:

ffmpeg -filters

例子

如果您有想要叠加文本的输入视频:

ffmpeg -i input -vf "drawtext=enable='gte(t,3)':fontfile=Vera.ttf:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" output
  • 这将在 3 秒后启用 drawtext 过滤器
  • 每次text.txt更新文字都会改变
  • 屏幕上的单词会从左向右移动(我不擅长表达这些意思,但你会明白的)

如果您没有输入视频而只想在黑色背景上生成文本:

ffmpeg -f lavfi -i "color=color=black, drawtext=enable='gte(t,3)':fontfile=Vera.ttf:fontcolor=white:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" -t 5 output

此处-t 5指定输出的总长度。(如果未指定,编码将永远运行。)字体颜色设置为白色,以便文本可见。

相关内容