借助 FFmpeg 的drawtext滤镜给视频添加标题。
2025-07-03 05:12:24 17 分享链接 开发笔记 ffmpeg
Windows示例1
ffmpeg -i input.mp4 -vf "scale=1080:1920,subtitles=test.srt:original_size=1080x1920:force_style='FontSize=12,Alignment=2,MarginV=200',drawtext=text='测试标题':fontfile=C\\:/Windows/Fonts/msyh.ttc:fontsize=48:fontcolor=yellow:x=(w-text_w)/2:y=h*0.05:box=1:boxcolor=black@0.7:boxborderw=4" -c:v h264_nvenc -y output.mp4
Windows示例2
ffmpeg -i input.mp4 -vf "scale=1080:1920,subtitles=test.srt:original_size=1080x1920:force_style='FontSize=12,Alignment=2,MarginV=200',drawtext=text='测试标题':fontfile=C\\:/Windows/Fonts/msyh.ttc:fontsize=48:fontcolor=yellow:x=(w-text_w)/2:y=h*0.2" -c:v h264_nvenc -y output.mp4
Windows示例3直接定位
ffmpeg -i input.mp4 -vf "scale=1080:1920,subtitles=test.srt:original_size=1080x1920:force_style='FontSize=12,Alignment=2,MarginV=200',drawtext=text='测试标题':fontfile=C\\:/Windows/Fonts/msyh.ttc:fontsize=48:fontcolor=yellow:x=570:y=200" -c:v h264_nvenc -y output.mp4
Windows示例包含添加BGM音乐
ffmpeg -i input.mp4 -i test.mp3 -i bgm.mp3 -filter_complex "[1:a]volume=1.2[a1];[2:a]volume=0.3[a2];[a1][a2]amix=inputs=2:duration=longest[aout]" -map 0:v -map "[aout]" -vf "scale=1080:1920,subtitles=test.srt:original_size=1080x1920:force_style='FontSize=12,Alignment=2,MarginV=200',drawtext=text='测试标题':fontfile=C\\:/Windows/Fonts/msyh.ttc:fontsize=48:fontcolor=yellow:x=570:y=200" -c:v h264_nvenc -c:a aac -y output.mp4
若要给视频添加标题,你可以借助FFmpeg的drawtext
滤镜。下面是添加了标题功能的命令:
ffmpeg -i input.mp4 -vf "scale=1080:1920,subtitles=test.srt:original_size=1080x1920:force_style='FontSize=12,Alignment=2,MarginV=200',drawtext=text='你的标题':fontsize=36:fontcolor=white:x=(w-text_w)/2:y=h*0.1:box=1:boxcolor=black@0.5:boxborderw=5" -c:v h264_nvenc output.mp4
参数说明:
text='你的标题'
:你要添加的标题文本,可自行替换。fontsize=36
:标题字体的大小。fontcolor=white
:标题字体的颜色。x=(w-text_w)/2
:标题在水平方向上居中显示。y=h*0.1
:标题在垂直方向上位于视频高度的10%处。box=1
:为标题添加背景框。boxcolor=black@0.5
:背景框的颜色为半透明的黑色。boxborderw=5
:背景框的边框宽度为5像素。
你可以按照自身需求对这些参数进行调整。
在 FFmpeg 中,drawtext
滤镜功能强大,可用于在视频上叠加文本。以下是其常用参数的完整列表(基于 FFmpeg 6.0 版本),包含字间距设置及其他高级选项:
字间距设置
字间距(字符间距)可通过 letter_spacing
参数调整:
drawtext=text='你的文本':letter_spacing=2 # 正值增大间距,负值减小间距
完整参数列表
以下是 drawtext
滤镜的主要参数分类说明:
1. 基础文本设置
参数名 | 作用 | 示例值 |
---|---|---|
text | 显示的文本内容 | 'Hello World!' |
textfile | 从文件读取文本 | '/path/to/text.txt' |
reload | 实时重载文本文件(需配合 textfile ) | 1 |
fontfile | 指定字体文件路径 | '/usr/share/fonts/.../font.ttf' |
fontsize | 字体大小 | 24 |
fontcolor | 字体颜色 | 'white' 或 '0xFFFFFF' |
fontcolor_expr | 动态字体颜色(支持表达式) | 'if(lt(t,5),white,black)' |
2. 文本位置与对齐
参数名 | 作用 | 示例值 |
---|---|---|
x , y | 文本位置坐标(支持表达式) | '(w-text_w)/2' (水平居中) |
box | 是否显示文本背景框 | 1 (显示) |
boxcolor | 背景框颜色 | 'black@0.5' (半透明白色) |
boxborderw | 背景框边框宽度 | 2 |
borderw | 文字描边宽度 | 1 |
bordercolor | 文字描边颜色 | 'black' |
alpha | 文本透明度 | 0.8 |
3. 高级排版
参数名 | 作用 | 示例值 |
---|---|---|
letter_spacing | 字间距(字符间距) | 2 (正值增大间距) |
line_spacing | 行间距 | 5 |
text_shaping | 是否启用文本整形(如阿拉伯语连写) | 1 (默认启用) |
tabsize | 制表符宽度(空格数) | 4 |
4. 动态效果
参数名 | 作用 | 示例值 |
---|---|---|
timecode | 显示时间码 | '00:00:00:00' |
timecode_rate | 时间码帧率 | 25 |
rate | 帧率(影响动态表达式更新频率) | 25 |
expansion | 表达式解析方式 | 'normal' 或 'none' |
5. 时钟与动态变量
参数名 | 作用 | 示例值 |
---|---|---|
clock | 显示实时时钟 | 1 |
rtctime | 显示系统时间(格式需配合 strftime ) | 1 |
rtctime_mode | 系统时间更新模式 | 'local' 或 'utc' |
6. 特殊字符与编码
参数名 | 作用 | 示例值 |
---|---|---|
text_source | 文本编码方式 | 'utf8' |
escape_text | 是否转义特殊字符 | 1 |
7. 表达式变量参考
在 x
, y
, fontcolor_expr
等参数中可使用以下变量:
t
:当前时间(秒)n
:当前帧号w
,h
:视频宽度、高度text_w
,text_h
:文本宽度、高度line_h
:行高main_h
,main_w
:主视频高度、宽度
示例命令
以下是一个综合示例,展示如何使用多个参数:
ffmpeg -i input.mp4 -vf "drawtext= \
text='视频标题': \
fontfile='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc': \
fontsize=48: \
fontcolor='white': \
x='(w-text_w)/2': \
y='h*0.05': \
box=1: \
boxcolor='black@0.7': \
boxborderw=4: \
letter_spacing=2: \
borderw=1: \
bordercolor='gray' \
" -c:v libx264 -y output.mp4
注意事项
- 字体路径转义:Windows 路径中的反斜杠需双写(如
C\\:/Windows/Fonts/...
)。 - 表达式语法:复杂表达式需用单引号包裹,内部使用双引号。
- 性能影响:动态表达式(如
fontcolor_expr
)会增加处理开销。
如需查看最新文档,可运行:
ffmpeg -h filter=drawtext
最近更新
- 2025-07-03 05:11
- 借助 FFmpeg 的 filter_complex 滤镜混合音频流的实例。
- 2025-07-03 02:26
- 借助 FFmpeg 的drawtext滤镜给视频添加标题。
- 2025-07-02 18:19
- 使用ffmpeg处理srt字幕的对齐和位置相关参数说明
- 2025-07-01 23:20
- 可以批量剪辑视频的软件有哪些呢?这五款超好用!
- 2025-05-10 17:40
- 零基础也能秒懂的场景设计课,从「叙事场景 / 氛围场景」分类到「分镜表模板」。
- 2025-05-10 17:32
- 分镜景别干货!全身/半身/特写/近景/中景/远景/全景/大特写
- 2025-05-10 17:20
- 分镜角度干货!正面 / 侧面 / 背面之外,这 3 个角度让镜头会说话
- 2025-05-10 11:11
- 豆包图像生成的万能公式与实用技巧分享
- 2025-05-07 16:00
- kimi绘画推导结果实例分享(星河)
- 2025-05-06 16:00
- kimi推理过程记录之小说改文