2020/09/27

從(放在Synology NAS裡的)mkv抽取字幕檔

MKV和MP4一樣,檔案本身是一個container,影片的視頻、聲頻、字幕、封面等都可以塞進去。然而,MKV不能在iOS devices上native播放是一件很不爽的事,雖然簡單的conversion可以把MKV轉成能在iPhone / iPod / iPad (和我沒打算買的AppleTV)上播放的Apple標準MP4,但這樣的話,字幕就沒了。

英文的還好,反正聽得懂,但由內地各大小字幕組辛苦弄出來的日劇和動畫就不行了。

其實,Apple標準的MP4是支援純文字字幕的,格式是最簡單、最不花巧的SRT,所以只要找到編碼合適的字幕檔,就可以把它塞進MP4。不想自行上網找的話,先把SSA或者ASS弄出來,再轉成SRT也可。

附字幕720p的MKV影片越來越多,問題就要解決──Windows和Mac上都有不少的字幕工具,不過這些東西都是GUI為主,而我的影片都是存放在跑DSM 4.x (busybox)的Synology NAS上,尤其是十多集的一整輯動畫,才沒有空跟他一個一個在LAN上玩,所以就決定用mkvtoolnix的CLI集體處理。

下面就是以Command和mkvtoolnix從存在跑Busybox Linux的Synology NAS內的MKV影片抽出SSA、ASS或SRT字幕檔的實戰!

第一件事就是將字幕從MKV抽出來保存。

先在NAS上安裝打開SSH,裝好IPKG。然後以root身份用SSH從IPKG的repository中安裝下面一堆工具,缺一不可:

ipkg install mkvtoolnix
ipkg install boost-filesystem
ipkg install boost-system
ipkg install bzip2

mkvtoolnix CLI版很複雜,很強大,很多功能。不過我是來解決問題的,沒閒情學,所以只挑有用的寫:

先用mkvinfo看看字幕放在那一條track:

mkvinfo "path/file.mkv"

terminal-mkvinfo

假設track 4是字幕(上面有寫的,像srt、ssa和ass之類就是),那就用mkvextract把要的抽出來:

mkvextract tracks "path/file.mkv" 4:"path/file.ssa"

其中的「4:」是track number,後面是你要的字幕,抽取出來檔案的extension一定要果收在MKV內的一樣。

如是這般,善用shell script同spreadsheet program就可以砌出一個batch,一口氣把MKV裡頭的字幕都抽出來

~收工。