FFMpeg drawtext宽度?

时间:2017-04-30 20:43:29

标签: text ffmpeg drawtext

我正在使用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

有没有办法包装文字?

1 个答案:

答案 0 :(得分:3)

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

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

enter image description here

ASS字幕

Aegisub中制作字幕。点击看起来像粉红色的按钮" S"打开样式管理器。单击编辑。选择对齐值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"号码系统。