ffmpeg 字幕格式转换,webvtt字幕格式,srt字幕格式

常见的字幕格式

https://zh.wikipedia.org/wiki/%E5%AD%97%E5%B9%95%E6%A0%BC%E5%BC%8F
常见的格式:srt、ass、webvtt

srt 字幕格式

SRT(Subripper)是最简单的文本字幕格式,扩展名为.srt
每个字幕段有四部分构成:

  1. 字幕序号
  2. 字幕显示的起始时间
  3. 字幕内容(可多行)
  4. 空白行(表示本字幕段的结束)
    如:
1
2
3
45
00:02:52,184 --> 00:02:53,617
慢慢来

这表示:第45个字幕,显示时间从该影片开始的第2分52.184秒到第2分53.617秒,内容为:慢慢来

webvtt 字幕格式

webvtt 字幕格式会字幕文件前添加6个字母标识即 WEBVTT,内容和srt格式内容一样。

ffmpeg 字幕处理

ffmpeg 添加视频软字幕

  1. 将字幕封装到容器中
    ffmpeg -i input.mp4 -i subtitles.srt -c copy output.mp4
  2. 从容器中提取字幕流
    ffmpeg -i input.mp4 output.srt

例子中生成的是 srt 格式的,可以任意生成所需的格式,改一下扩展名即可。

ffmpeg 添加视频硬字幕

通过ffmpeg在视频流上面加上添加硬字幕,需要使用 subtitles 的滤镜,命令 -vf subtitles=字幕文件名 ,这个操作会对视频重新编码。

  1. 使用 subtitles 滤镜为视频添加字幕(将字幕合成到视频流中,输出文件中不含字幕流,硬字幕):
    ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4

  2. 将 input.mp4 中的字幕(默认)嵌入到 output.mp4 文件:
    ffmpeg -i input.mp4 -vf subtitles=input.mp4 output.mp4

  3. 将 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/
可以网址上的常见的字幕来进行分析和测试。