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进行视频双语字幕的添加方法啦,感谢各位读者的观看,若有错误,请指正!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: Java ffmpeg 字幕合成是指使用Java编程语言和ffmpeg这个强大的多媒体处理工具,将视频字幕文件合成为一个新的视频文件的过程。一般来说,字幕文件可以是SRT、ASS、SSA等常见的格式,而视频文件格式则没有限制。 在Java中使用ffmpeg进行字幕合成的步骤如下: 1.下载和安装ffmpeg,并配置好环境变量。 2.在Java程序中引入ffmpeg相关的库文件。 3.编写Java代码,使用ProcessBuilder类创建一个新的进程,并在命令行中传递ffmpeg命令和参数,用于指定输入文件、输出文件、字幕文件及其格式等信息。 4.启动进程,并等待ffmpeg的执行结果。 5.如果合成成功,则可以得到一个新的视频文件,包含了原始视频字幕。如果有必要,可以使用Java程序来对新文件进行进一步处理。 Java ffmpeg 字幕合成可以应用于很多场景,比如制作字幕影片、合成公司宣传视频等。如果您需要使用Java ffmpeg 字幕合成技术,需要掌握ffmpeg的使用方法和Java语言的编程技巧。同时,您还需要了解视频字幕文件之间的格式转换和编码等知识,以确保最终合成的文件质量和兼容性。 ### 回答2: Java是一种广泛使用的编程语言,被用于开发各种类型的应用程序,而FFmpeg是一个流行的开源视频处理工具。在Java中使用FFmpeg进行字幕合成是非常常见的。字幕合成是将字幕嵌入到视频中的过程,使得观众可以看到字幕并理解视频的内容。 为了在Java中使用FFmpeg进行字幕合成,首先需要下载并安装FFmpeg程序。然后,可以使用Java中的ProcessBuilder类来调用FFmpeg程序并使用它的命令行参数来合成字幕。简单的代码示例如下: ``` ProcessBuilder pb = new ProcessBuilder("ffmpeg", "-i", "video.mp4", "-vf", "subtitles=subs.srt", "output.mp4"); pb.start(); ``` 在这个例子中,我们使用ProcessBuilder来创建一个新的进程并运行FFmpeg程序,使用其命令行参数来合成字幕。该命令行参数包括输入视频文件名(video.mp4)、字幕文件名(subs.srt)以及输出文件名(output.mp4)。 在Java中使用FFmpeg合成字幕可以让开发者方便地为自己的视频添加字幕,并提供更好的观看体验。此外,由于Java是跨平台的编程语言,因此该过程在不同平台上都可以使用。 ### 回答3: Java FFMPEG 字幕合成是一种将字幕视频合并在一起,生成新的视频文件的技术。在实际应用中,通常使用 FFMPEG 提供的 API 将字幕文件与视频文件进行合并。使用 Java 编程语言可以方便地操作 API,并实现将字幕视频合并成一段新的视频的功能。在合成字幕时,需要指定字幕的样式、字体、位置、颜色、大小以及出现和消失的时间等参数。Java 语言具有简单、易读、易于维护和交互性好等特点,利用 Java 语言编写的 FFMPEG 字幕合成程序可以实现更好的用户交互性。另外,合成的视频文件的质量在很大程度上依赖于 FFMPEG 命令行工具的配置。因此,在编写 Java FFMPEG 字幕合成程序时,需要根据具体情况,适时地进行参数调整和优化,确保合成出来的视频文件质量达到最佳效果。总之,Java FFMPEG 字幕合成技术为用户提供了一个可定制和灵活的视频字幕合成方案,既方便了用户使用,又提高了视频合成的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

疯吶psycho

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

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

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

打赏作者

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

抵扣说明:

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

余额充值