我正在使用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
有没有办法包装文字?
答案 0 :(得分:3)
您可以使用FFmpeg subtitles filter进行自动换行,并将文本放在中间位置。
有许多字幕格式,但这个答案有ASS和SRT字幕的例子。 ASS支持更多格式化选项,但SRT是一种更简单的格式,可以使用字幕过滤器中的force_style
选项进行修改。
在Aegisub中制作字幕。点击看起来像粉红色的按钮" S"打开样式管理器。单击编辑。选择对齐值5.将字幕文件保存为ASS格式。
ffmpeg
示例:
ffmpeg -i input -filter_complex subtitles=subs.srt -c:a copy output
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"号码系统。