FFmpeg添加或者烧录sub/idx格式字幕

关于sub/idx格式字幕

  • 这种字幕是提取自DVD光盘中的字幕格式
  • sub/idx格式的字幕文件必须同时存在,一个储存字幕图像,一个存储索引和时间轴,播放器加载字幕加载的是idx文件,然后idx文件再去加载sub文件中的图像。
  • 因为是图像,所以文件比常规的srt和ass字幕文件要大得多。
  • 提取成srt或者ass格式非常困难,需要借助orc识别技术

如何将sub/idx烧录或添加进视频文件

利用ffmpeg可以很方便的做到。

ffmpeg -i infile.mp4 -i infile.idx -i infile.sub -map 0:v -map 0:a -c copy -map 1 -c:s:1 dvd_subtitle -metadata:s:s:1 language=ch outfile.mkv

这条命令是加载视频文件infile.mp4,infile.idx和infile.sub文件,然后将字幕写进mkv中的metadata中,这样生成的mkv格式视频,可以在播放器中选择显示或者不显示字幕。

ffmpeg -i 1.mp4 -i 1.sub -i 1.idx -filter_complex "[0:v][2:s]overlay=0:H-h" -c:v libx264 out.mp4

这条命令是加载1.mp4,1.sub,1.idx文件,然后通过滤镜将字幕烧录进视频文件,[0:v]指的第一个加载的视频文件1.MP4,[2:s]指的是加载的1.idx文件,因为索引是2,然后通过overlay=0:H-h将字幕显示在视频下方。

这两条命令的差别在于第一个是合并到一个视频文件,这个视频如果进行hls切片的话,播放出来并不会有字幕。而第二个命令的作用是直接烧录进视频文件,这样切片之后还是会有字幕显示。

参考链接:https://askubuntu.com/questions/391122/how-can-i-burn-vobsub-subtitles-using-ffmpeg