跳到主要內容

mkv字幕分離與重製

mkv字幕分離與重製要用到軟體mkvtoolnix
到這裡下載選擇windows 的安裝程式,因為它用wxWindow,用rar版會缺dll
http://www.bunkus.org/videotools/mkvtoolnix/

主要是以命令列為主
mkvinfo 觀看mkv的資訊
mkvextract分離
mmg圖形介面
mkvmerge產生mkv檔,也可以看mkv影片檔資訊

用mkvinfo或者mkvmerge都可以看到你要分離的字幕在第幾個tracks

mkvinfo的情況 ,似乎code page不同,新版的mkvinfo在中文console下有些問題,所以改用gui
K:\mkv>mkvinfo -g 鋼1.mkv
...(略)
(MKVInfo) | + A track at 397
(MKVInfo) | + Track number: 3 at 400
(MKVInfo) | + Track UID: 1051997168 at 403
(MKVInfo) | + Track type: subtitles at 410
(MKVInfo) | + Codec ID: S_TEXT/ASS at 413
(MKVInfo) | + CodecPrivate, length 1254 at 425
(MKVInfo) | + Language: chi at 1683
(MKVInfo) | + Lacing flag: 0 at 1690
(MKVInfo) | + A track at 1693
(MKVInfo) | + Track number: 4 at 1696
(MKVInfo) | + Track UID: 449712430 at 1699
(MKVInfo) | + Track type: subtitles at 1706
(MKVInfo) | + Codec ID: S_TEXT/ASS at 1709
(MKVInfo) | + CodecPrivate, length 1254 at 1721
(MKVInfo) | + Default flag: 0 at 2979
(MKVInfo) | + Language: tai at 2982
(MKVInfo) | + Lacing flag: 0 at 2989

mkvmerge的情形

C>mkvmerge -i 鋼1.mkv
File '鋼1.mkv': container: Matroska
Track ID 1: video (V_MS/VFW/FOURCC, XVID)
Track ID 2: audio (A_MPEG/L3)
Track ID 3: subtitles (S_TEXT/SSA)
Track ID 4: subtitles (S_TEXT/SSA)

完整顯示出該影片資訊,知道我們要的是chi字幕,另一種國別寫法是zho,也是中文

分離字幕的指令
C>mkvextract tracks 鋼1.mkv -c UTF-8 3:1.ssa
Extracting track ID 3 to a SSA/ASS file '1.ssa'.
progress: 100%

在utf-8後面的3是track後面是你自己命名的字幕檔名
因為不加utf-8這個參數分離出來的字幕檔會變亂碼
在這裏有兩個字幕,4是泰文,可利用mmg看一下

完整的分離影片應為mkvextract tracks 鋼1.mkv -c UTF-8 3:1.ssa 1:1.avi 2:1.mp3

接下來可用notepad等編輯,注意為utf-8格式
若是純文字檔請存成.srt
若為簡體中文,可利用ConvertZ這套軟體去轉換為繁體,可批次處理,很快。
由於用ssa字幕大小格式還要調整,最好用Sub Station Alpha這套軟體編輯,手動編輯怪
怪的,後來我直接轉成srt檔,字幕反而比較清楚。
python ssa2srt.py 1.ssa > 1.srt
字幕也有可能是idx等等,請自行找到對應的程式處理

最後用mmg製成mkv檔,將1.avi、1.mp3和1.srt加入即可,請注意以下兩點
1. 字幕的語系請選zho或是chi,為中文
2. Subtitle Charset用此方式編碼為UTF-8,但經過ConvertZ轉換,則為Big5或是CP950,請多加注意。
即可用media player classic播放
若使用命令列格式,可批次處理,由於個案不同,請參考mmg產生的command line
本例子為
C>mkvmerge -o 鋼1.mkv --default-track 0 -d 0 -A -S 1.avi --default-track 0 -a 0 -D -S 1.mp3 --sub-charset 0:UTF-8 --language 0:zho --default-track 0 -s 0 -D -A 1.srt --track-order 0:0,1:0,2:0

其實步驟不多,只有3~4步,可寫成批次檔。請多推廣正體中文。

留言

匿名表示…
有辦法批次轉出原字幕檔名嗎
我好像轉一個都有問題了...
Error: Missing track ID in argument '4'.
鳥毅寫道…
Missing track ID in argument '4'. 表示你弄錯track了,用MKVToolnix的UI確認一下吧 :D

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?