用FFmpeg向视频添加文字水印或滚动字幕
📝 文字水印和字幕在视频创作中的设计原则

在视频中添加文字元素是创作中常见的需求,需要注意以下设计要点:

  • 水印位置与透明度:品牌水印应放置在画面边角区域(通常右下角),透明度30~50%既能让观众识别品牌,又不会过度遮挡主要内容。避免将水印放在画面中央或关键信息区域。
  • 滚动速度与文本量:滚动字幕(如新闻跑马灯)的滚动速度应与阅读速度匹配——中文建议每秒8~12字,过快会导致阅读困难,过慢则显得拖沓。单行文本不宜过长,必要时可分段显示。
  • 字体选择与兼容性:中文字体需使用支持中文的字体文件(如宋体、黑体、微软雅黑)。在FFmpeg中使用 fontfile 参数指定字体路径。确保目标系统或播放器能正确渲染所选字体。
  • 时间控制:使用 enable='between(t,开始秒,结束秒)' 参数精确控制文字出现和消失的时间点。结合时间表达式可以实现文字逐个出现、淡入淡出等高级动画效果。
📖 FFmpeg drawtext 滤镜详解
drawtext 滤镜用于在视频画面上叠加文字。核心参数包括:
text — 指定要显示的文字内容,支持中英文及特殊字符。
x / y — 控制文字位置,支持表达式运算。x='w-tw-t*100' 表示文字从右侧向左水平滚动(w=画面宽,tw=文字宽,t=当前时间秒)。
fontsize — 字号大小,如 fontsize=24
fontcolor — 文字颜色,如 fontcolor=white[email protected](带透明度)。
fontfile — 字体文件路径。要显示中文须指定支持中文的字体,如 Windows 下 fontfile=C\\:/Windows/Fonts/simhei.ttf,Linux 下 fontfile=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
t — 内置时间变量(秒),配合表达式可实现文字动画、滚动、淡入淡出等效果。
box=1 — 为文字添加背景框,配合 [email protected] 控制背景颜色与透明度,提升可读性。
shadowx / shadowy / shadowcolor — 为文字添加阴影效果。
enable — 条件表达式,控制文字在特定时间段内显示,如 enable='between(t,10,30)'
广告
{{v.name}}
基本水平滚动(从右向左)。这是最常见的滚动字幕效果,通常用于新闻条或实时信息更新,代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x='w-tw-t*100':y=h-th-20:fontsize=24:fontcolor=white:fontfile=/path/to/your/font.ttf" -c:a copy output.mp4
从左向右滚动(例如在视频顶部),代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x='t*100':y=20:fontsize=24:fontcolor=white:fontfile=/path/to/your/font.ttf" -c:a copy output.mp4
垂直滚动(从下到上)(类似电影结尾字幕),代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x=(w-tw)/2:y='h-t*100':fontsize=24:fontcolor=white:fontfile=/path/to/your/font.ttf" -c:a copy output.mp4
垂直滚动(从上到下),代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x=20:y='t*100':fontsize=24:fontcolor=white:fontfile=/path/to/your/font.ttf" -c:a copy output.mp4
如果不希望字幕从一开始就出现,或者希望它在一定时间后消失,可以使用 enable 参数,代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x='w-tw-t*100':y=h-th-20:fontsize=24:fontcolor=white:enable='between(t,10,30)'" -c:a copy output.mp4
添加半透明背景框,代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x='w-tw-t*100':y=h-th-20:fontsize=24:fontcolor=white:box=1:[email protected]:boxborderw=5" -c:a copy output.mp4
添加文字阴影,代码如下
$ ffmpeg -i input.mp4 -vf "drawtext=text='你的滚动字幕内容':x='w-tw-t*100':y=h-th-20:fontsize=24:fontcolor=white:shadowx=2:shadowy=2:shadowcolor=black" -c:a copy output.mp4
友链