[FFmpeg-user] How to use drawtext to overlay dynamic text

Frank Tetzel s1445051 at mail.zih.tu-dresden.de
Wed Jun 11 22:25:39 CEST 2014

> > I am trying to find a way to use filters to draw dynamic text in the
> > same location on my video.  I understand how to draw static text
> > for a certain duration, so my plan was to chain multiple of these
> > filters together to make a dynamic text overlay, but I didn't find
> > a way to do two or more drawtext filters. What is the best way to
> > do something like this?  Any help is greatly appreciated.
> > 
> > This is the command I have so far to make static text
> > 
> > ffmpeg -i input.h264 -vf
> > "drawtext=enable='between(t,0,60)':fontfile=/Windows/Fonts/Tahoma.ttf:fontcolor='White':
> > text='100'" -acodec copy output.h264
> You can make a linear chain of multiple filters by separating them
> with a comma:
>   -vf "drawtext,drawtext"
> See <http://ffmpeg.org/ffmpeg-filters.html#Filtergraph-syntax-1>
> An alternative and possibly easier method would be to make an ASS or
> SRT subtitle and use the ass or subtitles filters to make hardsubs:
>   -vf "subtitles=subtitles.srt"
> See:
> http://ffmpeg.org/ffmpeg-filters.html#subtitles
> http://ffmpeg.org/ffmpeg-filters.html#ass
> https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
> Or mux the subtitles if you prefer softsubs:
>  ffmpeg -i video.mkv -i subtitles.ass -codec copy output.mkv
> aegisub is an easy to use tool to make such subtitles.

If you only have a small amount of changes you could also use sendcmd.

see examples. Here's another one:
-vf "sendcmd=f=send.cmd,drawtext=fontsize=20:fontcolor=white:x=100:y=100:text='Hello World'"

send.cmd file:
5.0  drawtext reinit 'text=foo';
10.0 drawtext reinit 'text=bar';
20.0 drawtext reinit 'text=';

More information about the ffmpeg-user mailing list