FFMpeg drawtext 宽度?

FFMpeg drawtext width?

我正在使用 drawtext 在动画 GIF 上打印一些文本。

一切正常,但我无法指定边界框并使文本换行。

我目前正在使用这个:

ffmpeg -i image.gif -filter_complex "drawtext=textfile=text.txt:x=main_w/2 - text_w/2:y=main_h/2 - text_h/2:fontfile=Roboto-Regular.ttf:fontsize=24:fontcolor=000000" image_out.gif

有没有办法换行?

您可以使用 FFmpeg subtitles filter 自动换行并将文本放在中间。

字幕格式有很多种,但这个答案有 ASS 和 SRT 字幕的示例。 ASS 支持更多格式选项,但 SRT 是一种更简单的格式,可以使用字幕过滤器中的 force_style 选项进行修改。

屁股字幕

Aegisub 中制作字幕。单击看起来像粉红色 "S" 的按钮以打开样式管理器。单击编辑。选择Alignment值5。将字幕文件保存为ASS格式。

ffmpeg 示例:

ffmpeg -i input -filter_complex subtitles=subs.srt -c:a copy output

SRT 字幕

SRT 比 ASS 更简单,但缺少一些功能,因此您可能需要在字幕过滤器中使用 force_style 选项。您可以使用文本编辑器制作这些字幕。 SRT 文件示例:

1
00:00:00,000 --> 00:00:05,000
Text with
manual line break
and with automatic word wrapping of long lines.

2
00:00:07,000 --> 00:00:10,000
Another line. Displays during 7-10 seconds.

ffmpeg 示例:

ffmpeg -i input -filter_complex "subtitles=subs.srt:force_style='Alignment=10,Fontsize=24'" -c:a copy output
  • 有关更多 force_style 选项,请查看 ASS 文件内容中的 Styles 部分并参考 ASS Tags.

  • 在这种情况下,Alignment 使用的是 legacy line position numbers,但上面的 ASS 示例使用的是现代 "numpad" 数字系统。