常见的字幕格式
https://zh.wikipedia.org/wiki/%E5%AD%97%E5%B9%95%E6%A0%BC%E5%BC%8F
常见的格式:srt、ass、webvtt
srt 字幕格式
SRT(Subripper)是最简单的文本字幕格式,扩展名为.srt
每个字幕段有四部分构成:
- 字幕序号
- 字幕显示的起始时间
- 字幕内容(可多行)
- 空白行(表示本字幕段的结束)
如:
45
00:02:52,184 --> 00:02:53,617
慢慢来
这表示:第45个字幕,显示时间从该影片开始的第2分52.184秒到第2分53.617秒,内容为:慢慢来
webvtt 字幕格式
webvtt 字幕格式会字幕文件前添加6个字母标识即 WEBVTT,内容和srt格式内容一样。
ffmpeg 字幕处理
ffmpeg 添加视频软字幕
- 将字幕封装到容器中
ffmpeg -i input.mp4 -i subtitles.srt -c copy output.mp4 - 从容器中提取字幕流
ffmpeg -i input.mp4 output.srt
例子中生成的是 srt 格式的,可以任意生成所需的格式,改一下扩展名即可。
输出轨道信息:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
date : 2020-03-03T09:02:55.0766495+08:00
encoder : Lavf58.29.100
Duration: 02:06:46.12, start: 0.000000, bitrate: 244 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 2449 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 124 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und): Subtitle: mov_text (tx3g / 0x67337874), 0 kb/s (default)
Metadata:
handler_name : SubtitleHandler
ffmpeg 添加视频硬字幕
通过ffmpeg在视频流上面加上添加硬字幕,需要使用 subtitles 的滤镜,命令 -vf subtitles=字幕文件名 ,这个操作会对视频重新编码。
-
使用 subtitles 滤镜为视频添加字幕(将字幕合成到视频流中,输出文件中不含字幕流,硬字幕):
ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4 -
将 input.mp4 中的字幕(默认)嵌入到 output.mp4 文件:
ffmpeg -i input.mp4 -vf subtitles=input.mp4 output.mp4 -
将 input.mp4 中的字幕(第二个)嵌入到 output.mp4 文件
ffmpeg -i input.mp4 -vf subtitles=input.mkv:si=1 output.mp4
关于 subtitles 滤镜的详细用法:
http://ffmpeg.org/ffmpeg-all.html#subtitles-1
ass 等字幕格式使用方法一样。
输出视频硬字幕效果:
ffmpeg 字幕格式转换
ffmpeg -i a.ass b.srt
ffmpeg -i c.vtt d.srt
ffmpeg -i e.lyric f.srt
参考
字幕网址:
http://www.zmxiazai.com/
https://www.zimutiantang.com/
可以网址上的常见的字幕来进行分析和测试。