视频ffmpeg上的文字

时间:2013-07-12 20:40:37

标签: ffmpeg

如何在ffmpeg中为我的视频添加文字叠加?

即。给定视频“video1.flv”,如何在整个视频中添加“StackOverflow”文本,位于屏幕中间,带有白色文字和边框?

2 个答案:

答案 0 :(得分:96)

使用ffmpeg中的drawtext视频过滤器:

enter image description here

ffmpeg -i input.mp4 -vf drawtext="fontfile=/path/to/font.ttf: \
text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: \
boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -codec:a copy output.mp4
  • @0.5控制文本框的不透明度。在此示例中,它设置为50%。您可以删除@0.5,但不会有透明度。

  • -codec:a copystream copy(重新复用)音频并避免重新编码。

  • drawtext过滤器的替代方法是使用ASS or SRT subtitles - 特别是如果你想要定时文本或softsubs。

  • 如果您要更新或更改文字,请参阅此过滤条件的textfilereload选项。

  • 此过滤器要求您使用ffmpeg编译--enable-libfreetype。如果您获得No such filter: 'drawtext',则可能会遗漏--enable-libfreetype。大多数可用的ffmpeg静态版本都支持此功能,因此请参阅FFmpeg Download页面获取链接。

  • 有关更多选项和示例,请参阅drawtext filter documentation

答案 1 :(得分:0)

在 macOS 上使用 enable='between(t,0,10)'

在 macOS 上,enable='between(t,start_second, end_seconds)' 的语法是不同的。输入应以秒为单位,而不是 hh:mm:ss。

我的 ffmpeg 版本 4.3.1

ffmpeg -i input.mp4 -vf "drawtext=text='My Text':enable='between(t,20,120)': x=(w-text_h)/2: y=(h-text_h)/2: fontsize=32: fontcolor=white: box=1: boxcolor=black@0.5: boxborderw=5:" -c:a copy output.mp4