假設 in.mkv 為
Track ID 1: video (V_MS/VFW/FOURCC, XVID)
Track ID 2: audio (A_MPEG/L3)
Track ID 3: subtitles (S_TEXT/ASS)
的複合檔
Tools: libcharset.dll、libiconv.dll、mkvmerge.exe、mkvextract.exe、中文內碼轉換器 Convertz
首先要知道為第幾 Track ID (後以TID 稱之)為何?
指令: mkvmerge.exe -i in.mkv
即可得如上資訊 Track ID 1: video...
現在要擷取 TID 1 :
指令: mkvextract.exe tracks in.mkv 1:in_video.avi
即可得 in_video.avi
要擷取 TID 2 :
指令: mkvextract.exe tracks in.mkv 2:in_audio .mp3
即可得 in_audio .mp3
皆下來是重頭戲擷取 TID 3 (字幕檔) :
指令: mkvextract.exe tracks in.mkv 3:in_subtitles.ass
即可得 in_subtitles.ass
但這裡有一點問題會的到英文+亂碼(或空字元)
通常 .mkv 的字幕檔為適應各語系下的 OS 會用 UTF-8 (Unicode 的一支)編碼
所以改成
指令: mkvextract.exe tracks in.mkv -c UTF-8 3:in_subtitles.ass
在此得到的 out_subtitles.ass 可能由於DOS作用於OS語系的問題還是選錯 charset 的原因,因此還是會得到英文+亂碼的字幕檔
此時最後只要用 Convertz 將 in_subtitles.ass 字幕檔內碼由 UTF-8 轉成 BIG-5 即完成 (簡體或許不會有此問題)
當然方法不只一個還可用 VirtualDubMod 但成功率不高
畢竟其從 1.5.xx 才開始支援 .mkv 的 multi-Track 特別是 .ass .ssa
PS.擷取字幕檔時常被視為大忌,望看到的人不要廣為流傳,應此此不提供Tools 的載點
其實 -c 這個 chapters 有一大排字元code 用對了就可得到正確的字幕檔,有興趣的可自己研究 ^^