导出视频内嵌字幕文件的两个方法
📖前言
一切起因是发现了 emby 这个媒体中心软件有个 “bug”
内嵌了 .ass字幕 的视频如果是 directplay 方式(直接播放)字幕能正确显示,
但是一旦触发了转码,字幕就得隔一分钟左右才能显示出来。
而造成这么慢的原因,是因为实时导出字幕这个操作比较耗时(目前我尝试过好几个软件都得实现不了秒出)
直接外挂的字幕就没这种烦恼,所以有了这个文章。
💡方法1 使用 mkvtoolnix 工具包
Mac 系统安装:brew install mkvtoolnix
查看文件信息:mkvmerge -i test.mkv
可以看到 4 跟 5 是 ass 字幕
导出命令:mkvextract tracks test.mkv 4:sub1.ass 5:sub2.ass
批量操作脚本
for file in *.mkv; do
filename=${file%.*}
mkvextract tracks "${file}" 4:"${filename}.map4.ass" 4:"${filename}.map5.ass"
done
💡方法2 使用 ffmpeg
查看文件信息:ffmpeg -i test.mkv
导出字幕:ffmpeg -i test.mkv -map 0:5 sub.ass
ffmpeg 还可以给字幕转格式,例如 ass 转 srt。只要指定输出的格式就会自动处理
批量操作脚本
for file in *.mkv; do
filename=${file%.*}
ffmpeg -i "${file}" -map 0:2 "${filename}.map2.ass" -map 0:3 "${filename}.map3.ass" -map 0:4 "${filename}.map4.ass" -map 0:5 "${filename}.map5.ass"
done