FFMpeg drawtext width?

冷暖自知 提交于 2021-02-07 10:59:28

问题


I'm using drawtext to print some text on an animated GIF.

Everything is working, but I'm unable to specify a bounding box and make the text wrap.

I'm currently using this:

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

Is there a way to wrap text?


回答1:


You can use the FFmpeg subtitles filter for automatic word wrapping and to place the text in the middle center.

There are many subtitle formats, but this answer has examples for ASS and SRT subtitles. ASS supports more formatting options, but SRT is a simpler format and can be modified with the force_style option in the subtitles filter.

ASS subtitles

Make your subtitles in Aegisub. Click the button that looks like a pink "S" to open the Styles Manager. Click edit. Choose Alignment value 5. Save subtitles file as ASS format.

ffmpeg example:

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

SRT subtitles

SRT is simpler than ASS but lacks features so you may need to use the force_style option in the subtitles filter. You can make these subtitles with a text editor. Example SRT file:

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 example:

ffmpeg -i input -filter_complex "subtitles=subs.srt:force_style='Alignment=10,Fontsize=24'" -c:a copy output
  • For more force_style options look at the Styles section in the contents of an ASS file and refer to ASS Tags.

  • In this case, Alignment is using the legacy line position numbers, but the ASS example above is using the modern "numpad" number system.



来源:https://stackoverflow.com/questions/43711117/ffmpeg-drawtext-width

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!