ffmpeg添加双语字幕

【FFMPEG命令行操作】为视频添加双语字幕(附图)(不借助其他工具,只通过命令的组合实现)
  • 核心思想:重复使用ffmpeg字幕添加命令,利用字幕的上下位置,划分中英文字幕显示位置

  • 准备素材,如下图所示
    在这里插入图片描述

    • hack.mp4为视频文件
    • hack_zh.srt为该视频的中文srt字幕文件
    • hackz_en.srt为该视频的英文srt字幕文件

  • 使用终端命令ffmpeg

    • 此演示将中文字幕设为第一字幕,英文设为第二字幕

    • 关于ffmpeg的命令使用不在此赘述,想了解的小伙伴可以浏览ffmpeg官方文档

    1. 首先添加中文字幕,使用如下命令

      ffmpeg -i hack.mp4 -strict -2 -vf subtitles=hack_zh.srt:force_style='Fontsize=20\,Fontname=FZYBKSJW--GB1-0\,MarginV=30\,Bold=-1\,BorderStyle=1' -qscale:v 3 hack_with_zh.m
      p4
      

    关于上述命令行代码参数的部分解释:

    • 最重要的就是MarginV,设置字幕到视频底部的垂直方位,由于中文为第一字幕,需要添加到视频的稍上位置,在我大量的字幕位置测试中发现将MarginV参数值设为30属于最佳方案
    • 对于其他的命令设置只是相关的必要设置而已,读者可查阅资料了解其余参数的详细使用

到此为止中文字幕设置完毕,先打开视频看一下效果,图示如下:

在这里插入图片描述

  • 可以看到中文字幕处于视频的稍偏上位置
  • 在这里字幕看起来较大,但没有关系,可以通过ffmpeg中选项参数中的Fontsize调整字幕大小,大家无需担心

2.接着添加英文字幕

  • 对于英文字幕,由于我们在此将其作为第二字幕,那么该英文字幕必在视频的靠下方位置,可以直接使用ffmpeg默认字幕安放配置,无需添加MarginV参数设置

  • 注意注意:由于我们是对同一段视频添加两行字幕,所有,添加英文字幕时,需要使用已添加中文字幕的那一段视频,就是生成的hack_with_zh.mp4视频

  • 开始添加,相关命令行代码如下:

    ffmpeg -i hack_with_zh.mp4 -strict -2 -vf subtitles=hack_en.srt:force_style
    ='Fontsize=15\,Fontname=FZYBKSJW--GB1-0\,Bold=-1\,BorderStyle=1' -qscale:v 3 hack_with_double_subtitles.mp4
    
  • 可以看到上述代码并没有使用到MarginV参数,即使用了ffmpeg默认的字幕放置位置

到此为止中英文字幕全部添加完毕,打开视频看一下效果,图示如下:

在这里插入图片描述

  • 可以看到中英文字幕显示在了两个区域

至此,双语字幕添加完毕

  • !!!最最核心的就是设置MarginV参数,小伙伴们可以自己尝试调试字幕位置,寻找不同视频长宽比例,不同视频分辨率下的最佳视频字幕适配方案

  • 我们看到上面视频的字幕样式单一,白花花的一片不好看,可以通过如下参数设置字幕的一些好看的样式

    • 选项简介:————————————————————————————————————————————————
      01.Name 风格(Style)的名称. 区分大小写. 不能包含逗号.
      02.Fontname 使用的字体名称, 区分大小写.
      03.Fontsize 字体的字号
      04.PrimaryColour 设置主要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 为字幕填充颜色
      05.SecondaryColour 设置次要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 在卡拉OK效果中由次要颜色变为主要颜色.
      06.OutlineColour 设置轮廓颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR.
      07.BackColour 设置阴影颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. ASS的这些字段还包含了alpha通道信息. (AABBGGRR), 注ASS的颜色代码要在前面加上&H
      08.Bold -1为粗体, 0为常规
      09.Italic -1为斜体, 0为常规
      10.Underline [-1 或者 0] 下划线
      11.Strikeout [-1 或者 0] 中划线/删除线
      12.ScaleX 修改文字的宽度. 为百分数
      13.ScaleY 修改文字的高度. 为百分数
      14.Spacing 文字间的额外间隙. 为像素数
      15.Angle 按Z轴进行旋转的度数, 原点由alignment进行了定义. 可以为小数
      16.BorderStyle 1=边框+阴影, 3=纯色背景. 当值为3时, 文字下方为轮廓颜色的背景, 最下方为阴影颜色背景.
      17.Outline 当BorderStyle为1时, 该值定义文字轮廓宽度, 为像素数, 常见有0, 1, 2, 3, 4.
      18.Shadow 当BorderStyle为1时, 该值定义阴影的深度, 为像素数, 常见有0, 1, 2, 3, 4.
      19.Alignment 定义字幕的位置. 字幕在下方时, 1=左对齐, 2=居中, 3=右对齐. 1, 2, 3加上4后字幕出现在屏幕上方. 1, 2, 3加上8后字幕出现在屏幕中间. 例: 11=屏幕中间右对齐. Alignment对于ASS字幕而言, 字幕的位置与小键盘数字对应的位置相同.
      20.MarginL 字幕可出现区域与左边缘的距离, 为像素数
      21.MarginR 字幕可出现区域与右边缘的距离, 为像素数
      22.MarginV 垂直距离

  • 来演示一下,代码如下所示

    #在此,改变字幕的颜色,粗细等部分参数设置
    ffmpeg -i hack_with_zh.mp4 -strict -2 -vf subtitles=hack_en.srt:force_style='Fontsize=15\,Fontname=FZYBKSJW--GB1-0\,PrimaryColour=&HCCFF66&\,Bold=-1\,BorderStyle=1' -qscale:v 3 hack_with_double_subtitles.mp4
    
    • 上述代码,我们可以看到设置了字体大小,字体名称,字体的颜色,粗细等
  • 来看一下最终效果吧,图示如下:

在这里插入图片描述

  • 我们看到我们上述代码只对英文字幕设置了字幕的颜色样式等,若想对中文样式进行设置也是可以的,只需在添加中文字幕时,添加相关的选项设置即可

  • 还是一样,我们不对ffmpeg命令参数进行详细说明,小伙伴们可以查看ffmpeg官方文档


  • 好啦,这就是使用ffmpeg进行视频双语字幕的添加方法啦,感谢各位读者的观看,若有错误,请指正!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯吶psycho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值