使用 ffmpeg 进行视频字幕压制

使用 ffmpeg 进行视频字幕压制

了解字幕压制的几种方式首先介绍下 ffmpeg 进行字幕压制的常见方式。视频字幕通常有两种方式来进行压制:

内嵌字幕(Soft subtitles):内嵌的字幕可以单独使用,通常与视频文件分开存储。硬字幕(Hard subtitles):硬字幕直接将字幕图像化,融入到视频画面中,后期无法分离。内嵌字幕压制示例内嵌字幕允许我们在观看视频时随意打开和关闭字幕,比较灵活。使用 ffmpeg 制作内嵌字幕的例子:

ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

参数解释:

input.mp4 你的视频文件。subtitle.srt 你的字幕文件。-c copy 拷贝所有流(视频、音频、字幕)。-c:s mov_text 将字幕编码为 mov_text 格式,这是常用 MP4 文件中的字幕格式。硬字幕压制示例硬字幕直接在视频上绘制字幕,是最常见的字幕压制方式,你平时在网上下载观看的大部分大片基本都是这种方式。接下来我们介绍两种常见字幕格式(SRT 和 ASS)的硬字幕压制示例,因为它们使用的命令格式稍有不同

SRT 字幕压制使用 SRT 字幕进行硬字幕压制的命令如下:

ffmpeg -i input.mp4 -vf subtitles=subtitle.srt -crf 16 output.mp4

参数解释:

-vf subtitles=subtitle.srt 使用字幕滤镜(subtitles)将 SRT 字幕应用到视频上。ASS 字幕压制相对于 SRT,ASS 字幕格式支持设置样式和文字特效。使用 ffmpeg 压制的命令为:

ffmpeg -i input.mp4 -vf ass=subtitle.ass -crf 16 output.mp4

参数解释:

-vf ass=subtitle.ass 使用字幕滤镜(ass)将 ASS 字幕应用到视频上。在使用嵌入式字幕压制时不需要对视频进行重新编码,而使用硬字幕压制时,因为需要将文字融入到视频画面中,会进行重新编码,在上述硬字幕压制时可以设置一些视频编码参数,例如 -crf 16 等等,之前的视频转码教程讲过,这里不再赘述。

字幕文本样式常见的字幕格式 SRT 和 ASS 他们有一些区别,SRT 不支持文字特效, 而 ASS 字幕格式支持丰富的样式和特效,可以用来制作一些花里胡哨的字幕效果。ASS 字幕文件各式也比较复杂,下面是一段简单的 ASS 字幕文件例子:

[Script Info]

; Script generated by FFmpeg/Lavc61.3.100

ScriptType: v4.00+

ScaledBorderAndShadow: yes

YCbCr Matrix: None

[V4+ Styles]

Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding

Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1

[Events]

Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

Dialogue: 0,0:00:04.00,0:00:10.74,Default,,0,0,0,,I was at Agenda 2000 and one of the people who was there was Craig Mundy who is some kind of

Dialogue: 0,0:00:10.74,0:00:15.66,Default,,0,0,0,,high mucky muck at Microsoft. I think vice president of consumer products or something

Dialogue: 0,0:00:15.66,0:00:23.76,Default,,0,0,0,,like that. And I hadn't actually met him. I bumped into him at an elevator and an elevator and I

Dialogue: 0,0:00:23.76,0:00:29.12,Default,,0,0,0,,looked at his badge and said, I see you work for Microsoft. And he looked back at me and said,

Dialogue: 0,0:00:29.12,0:00:34.42,Default,,0,0,0,,oh yeah, and what do you do? And I thought he seemed just sort of a tad dismissive. I mean,

Dialogue: 0,0:00:34.46,0:00:40.68,Default,,0,0,0,,here's the archetypal guy in a suit looking at a scruffy hacker. And so I gave him the

Dialogue: 0,0:00:40.68,0:00:43.62,Default,,0,0,0,,thousand yard stare and said, I'm your worst nightmare.

在这个例子中,Style 部分定义的样式包括字体、字号、颜色、边框、阴影等。Dialogue 部分则描述了具体的字幕内容。可以使用

Aegisub 这类字幕编辑器来定制你的字幕样式

脚本程序下载

script.bat使用方法是:下载 script.bat 文件,然后准备好视频文件和字幕文件(srt或者ass),确保字幕文件名称和视频文件名称保持一致。然后将视频文件用鼠标托放到 script.bat 程序图标上即可自动运行。

相关阅读

365提现多久能到账 365足球体育官方v7.91.91官方绿色版

365足球体育官方v7.91.91官方绿色版

365提现多久能到账 《红色警戒2》讲了啥故事,咱们来梳理梳理(盟军线)

《红色警戒2》讲了啥故事,咱们来梳理梳理(盟军线)

365提现多久能到账 成功解决mingw下载太慢的问题

成功解决mingw下载太慢的问题

365提现多久能到账 视频搜索⚓︎

视频搜索⚓︎

365提现多久能到账 想玩铁血传世?这份游戏攻略你绝对需要

想玩铁血传世?这份游戏攻略你绝对需要

365bater 为什么变更网站域名

为什么变更网站域名

365提现多久能到账 自动挡车主的必修课!变速箱油更换周期和注意事项全解析

自动挡车主的必修课!变速箱油更换周期和注意事项全解析

members28365-365 微星460评测——性能卓越,体验出色(解析微星460的关键特点及优势)

微星460评测——性能卓越,体验出色(解析微星460的关键特点及优势)

365bater 3/7——像散(Astigmatism)

3/7——像散(Astigmatism)