mkv 是一种容器,可以包含视频,音频流,也可以包含字幕等等文件,如果要从 mkv 文件中提取字幕,可以使用一款叫做 mkvtoolnix
的命令行工具。
mkvtoolnix
macOS 下:
brew install mkvtoolnix
在 Ubuntu 下:
sudo apt install mkvtoolnix
mkvtoolnix 使用
查看文件内容:
mkvmerge -i path/to/video.mkv
提取字幕文件:
mkvextract tracks path/to/video.mkv 3:file1.srt 4:file2.srt
假设有很多个字幕文件提取,从轨道 3 开始:
for file in *.mkv; do
sub=$(echo $file | sed 's/\.mkv$/.srt/');
mkvextract tracks "${file}" 3:"${sub}";
done
ffmpeg
使用 [[FFmpeg]] 也可以提取字幕。
首先查看文件内容:
ffmpeg -i video.mkd
查看输出的内容中 Stream #<stream number>(eng): Subtitle: subrip
其中 <stream number>
就是字幕的轨道。比如 0:2
然后使用如下命令提取:
ffmpeg -i video.mkv -map <stream number> subs.srt
比如:
ffmpeg -i video.mkv -map 0:2 subs.srt
另外一种更复杂一些的写法可以
ffmpeg -i video.mkv -map 0:s:0 subtitle.srt
这个地方 -map 0:s:0
中的第一个 0
表示的是输入文件的序号,因为这个地方只有一个输入文件 video.mkv
所以就表示这个文件。