详细介绍 FFmpeg7.1.1 subtitles 滤镜 force_style 支持的参数
2025-07-03 23:23:17 136 分享链接 开发笔记 ffmpeg
在FFmpeg 7.1.1版本中,force_style参数用于通过subtitles滤镜强制覆盖字幕的默认样式,支持SubStation Alpha (ASS) 格式的键值对配置。以下是其支持的主要参数及详细说明:
一、基础样式参数
字体设置
FontName:指定字体名称,需确保字体文件已安装或可被FFmpeg访问。例如:FontName=Arial。FontSize:设置字体大小,单位为像素。例如:FontSize=24。
颜色控制
PrimaryColour:主文字颜色,格式为&H[A][B][G][R](ARGB十六进制,AA为透明度)。例如:PrimaryColour=&H00FF00FF表示绿色(完全不透明)。SecondaryColour:次要颜色(如卡拉OK效果),格式同上。OutlineColour:轮廓颜色,格式同上。BackColour:阴影或背景颜色,格式同上。
文本变形
Bold:启用粗体,-1为启用,0为禁用。Italic:启用斜体,-1为启用,0为禁用。Underline:启用下划线,-1为启用,0为禁用。Strikeout:启用删除线,-1为启用,0为禁用。ScaleX/ScaleY:调整文字宽度/高度百分比。例如:ScaleX=120表示宽度增加20%。Angle:文字旋转角度(单位:度),原点由Alignment决定。
二、布局与对齐
位置控制
Alignment:指定字幕位置,数值对应屏幕区域:1:左下角,2:下中点,3:右下角5:左上角,6:上中点,7:右上角9:中左,10:中间,11:中右。
MarginL/MarginR/MarginV:设置左右/垂直边距(像素),用于微调位置。
边框与背景
BorderStyle:边框样式:1:边框+阴影(需配合Outline和Shadow)3:纯色背景(背景颜色由OutlineColour和BackColour叠加)。
Outline:边框宽度(像素),BorderStyle=1时生效。Shadow:阴影深度(像素),BorderStyle=1时生效。
三、高级参数
Spacing:文字间距(像素),默认0。Angle:文字旋转角度(单位:度),原点由Alignment决定。LineSpacing:多行字幕的行间距(像素),默认由字体决定。Alpha:整体透明度,范围0-1(需结合颜色参数的透明度通道)。
四、使用示例
基础样式
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&H00FF00FF'" output.mp4效果:绿色Arial字体,大小24像素。
带阴影和轮廓
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=DejaVu Serif,Shadow=1,Outline=1,PrimaryColour=&HAAFFFFFF'" output.mp4效果:半透明白色字体,1像素阴影和轮廓。
居中对齐与背景
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='Alignment=2,BorderStyle=3,OutlineColour=&H80000000,BackColour=&H40000000'" output.mp4效果:居中字幕,深灰色背景,半透明黑色轮廓。
五、注意事项
- 颜色格式:必须以
&H开头,顺序为AABBGGRR(如&H00FF00FF表示绿色)。 - 字体路径:若使用自定义字体,需通过
-vf "subtitles=sub.srt:fontsdir=路径"指定字体目录。 - 兼容性:部分参数(如自动换行)需
libass >= 0.17.0,FFmpeg 7.1.1默认依赖libass >= 0.13.7,可通过编译选项调整。 - 参数优先级:
force_style会覆盖字幕文件中的样式设置,但无法修改字幕内容本身。
通过上述参数,可灵活控制字幕的外观和布局,满足不同场景的需求。实际使用时需结合具体字幕格式(如SRT、ASS)和FFmpeg版本特性进行调整。
使用ffmpeg 将 SRT 转换为 ASS
ffmpeg -i input.srt -c:s ass output.ass一个抖音美好体字幕的实例
ffmpeg -i input.mp4 -vf "subtitles=test.srt:fontsdir=D\\:/Pythons/srtEditor:force_style='FontName=抖音美好体,FontSize=16,LineSpacing=20'" -c:v h264_nvenc output.mp4
最近更新
- 2025-09-22 01:46
- 可以直接在content.js里面写一个函数获取blob数据实现自定义下载吗?
- 2025-09-22 00:17
- background.js中可通过注入脚本的方法实现获取blobUrl实现自定义下载
- 2025-09-21 17:45
- 通过MutationObserver 开发chrome浏览器扩展的实例
- 2025-09-21 17:23
- MutationObserver实例中mutation.type为childList时addedNodes节点的遍历方法。
- 2025-09-21 17:21
- MutationObserver实例中mutation.type为childList时addedNodes节点的筛选方法。
- 2025-09-21 17:09
- MutationObserver实例中mutation.type为childList时addedNodes节点具体的方法与属性。
- 2025-09-21 16:56
- MutationObserver实例中mutation.type突变类型为childList时有哪些属性、方法?
- 2025-09-21 16:46
- MutationObserver实例中mutation三种不同突变类型的属性与方法?
- 2025-09-21 16:34
- MutationObserver实例中mutation.type突变类型为attributes时有哪些属性、方法?
- 2025-09-15 18:42
- 用豆包图像生成的功能批量创作小说推文的提示词