详细介绍 FFmpeg7.1.1 subtitles 滤镜 force_style 支持的参数

2025-07-03 23:23:17 11 分享链接 开发笔记 ffmpeg

在FFmpeg 7.1.1版本中,force_style参数用于通过subtitles滤镜强制覆盖字幕的默认样式,支持SubStation Alpha (ASS) 格式的键值对配置。以下是其支持的主要参数及详细说明:

一、基础样式参数

  1. 字体设置

    • FontName:指定字体名称,需确保字体文件已安装或可被FFmpeg访问。例如:FontName=Arial
    • FontSize:设置字体大小,单位为像素。例如:FontSize=24
  2. 颜色控制

    • PrimaryColour:主文字颜色,格式为&H[A][B][G][R](ARGB十六进制,AA为透明度)。例如:PrimaryColour=&H00FF00FF表示绿色(完全不透明)。
    • SecondaryColour:次要颜色(如卡拉OK效果),格式同上。
    • OutlineColour:轮廓颜色,格式同上。
    • BackColour:阴影或背景颜色,格式同上。
  3. 文本变形

    • Bold:启用粗体,-1为启用,0为禁用。
    • Italic:启用斜体,-1为启用,0为禁用。
    • Underline:启用下划线,-1为启用,0为禁用。
    • Strikeout:启用删除线,-1为启用,0为禁用。
    • ScaleX/ScaleY:调整文字宽度/高度百分比。例如:ScaleX=120表示宽度增加20%。
    • Angle:文字旋转角度(单位:度),原点由Alignment决定。

二、布局与对齐

  1. 位置控制

    • Alignment:指定字幕位置,数值对应屏幕区域:

      • 1:左下角,2:下中点,3:右下角
      • 5:左上角,6:上中点,7:右上角
      • 9:中左,10:中间,11:中右。
    • MarginL/MarginR/MarginV:设置左右/垂直边距(像素),用于微调位置。
  2. 边框与背景

    • BorderStyle:边框样式:

      • 1:边框+阴影(需配合OutlineShadow
      • 3:纯色背景(背景颜色由OutlineColourBackColour叠加)。
    • Outline:边框宽度(像素),BorderStyle=1时生效。
    • Shadow:阴影深度(像素),BorderStyle=1时生效。

三、高级参数

  • Spacing:文字间距(像素),默认0。
  • Angle:文字旋转角度(单位:度),原点由Alignment决定。
  • LineSpacing:多行字幕的行间距(像素),默认由字体决定。
  • Alpha:整体透明度,范围0-1(需结合颜色参数的透明度通道)。

四、使用示例

  1. 基础样式

    ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&H00FF00FF'" output.mp4

    效果:绿色Arial字体,大小24像素。

  2. 带阴影和轮廓

    ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=DejaVu Serif,Shadow=1,Outline=1,PrimaryColour=&HAAFFFFFF'" output.mp4

    效果:半透明白色字体,1像素阴影和轮廓。

  3. 居中对齐与背景

    ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='Alignment=2,BorderStyle=3,OutlineColour=&H80000000,BackColour=&H40000000'" output.mp4

    效果:居中字幕,深灰色背景,半透明黑色轮廓。

五、注意事项

  1. 颜色格式:必须以&H开头,顺序为AABBGGRR(如&H00FF00FF表示绿色)。
  2. 字体路径:若使用自定义字体,需通过-vf "subtitles=sub.srt:fontsdir=路径"指定字体目录。
  3. 兼容性:部分参数(如自动换行)需libass >= 0.17.0,FFmpeg 7.1.1默认依赖libass >= 0.13.7,可通过编译选项调整。
  4. 参数优先级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

详细介绍 FFmpeg7.1.1 subtitles 滤镜 force_style 支持的参数