2008年8月23日

ASS2SRT 轉檔工具

※ 2007-02-04 補充:Windows 平台下我不清楚,不過如果你是 Linux 平台的話,不必再特地將字幕檔轉碼了。mplayer 很早就支援指定字幕檔編碼的選擇,問一下 mplayer 的男人吧!
※※ 從 mplayer 1.0rc1 起已正式支援 ass 字幕(真的),其實已不用再特地搞 ass2srt 了。
最近取得的字幕檔都是 Advanced SubStation Alpha (.ass) 格式,雖然花俏的字幕表現是各字幕組看上這種格式的主因,但是對 Linux 上的 MPlayer 來講卻是一種負擔。其實 MPlayer 是可以支援 .ass 字幕檔的,只可惜 MPlayer 把 .ass 檔當成 .ssa 檔處理,因此遇到 .ass 中的字幕特效指令時便會認定該字幕檔含有不合法的字元而放棄載入字幕的情形,結果就是我鴨子聽雷,完全搞不懂劇情進度。
找了一陣子後發現 Linux 上似乎沒有比較完整的字幕檔轉檔工具可以將 .ass 檔弄成 .srt (SubViewer) 格式(其實有幾個工具待測啦,但 Gentoo 上都沒有正式收錄),於是自己利用 perl 來寫一個:ass2srt.pl
這個小工具的特色(算嗎?)有:
  1. 可以指定 ass 來源檔/ srt 目的檔使用的編碼,預設值使用 utf8
  2. 可以濾除 ass 的控制指令,避免 MPlayer 播放時出現亂碼(可設定為保留)
  3. 對於註解用途的字幕(針對漫遊的設定)加上小括號
  4. 會處理 ass 字幕中的換行指令
  5. 合併多個相同時間軸設定的字幕內容到單一時間軸之下 ( v.0.2.2 新增 )
  6. 可指定輸出檔使用的換行格式(預設為 Unix)( v.0.2.4 新增 )
測試結果:
  1. 果然不會出錯了!
  2. 奇怪的是之前在 Windows 中轉檔的部份有些還是有問題,大概要多測測吧?
使用方式範例:
  1. 將 UTF-16 LE 的 .ass 來源檔轉成 UTF-8 的 .srt 目的檔:
    perl ass2srt.pl -f utf16-le -t utf8 utf16-le.ass utf8.srt
  2. 將 UTF-8 的 .ass 來源檔轉成 Big5 的 .srt 目的檔:
    perl ass2srt.pl -f utf8 -t big5 utf8.ass big5.srt
  3. 將 UTF-8 的 .ass 來源檔轉成 UTF-8 的 .srt 目的檔:
    perl ass2srt.pl utf8.ass big5.srt
  4. 將 UCS-2 的 .ass 來源檔轉成 UCS-2 的 .srt 目的檔,且將同時間軸之字幕合併:
    perl ass2srt -f ucs-2le -t ucs-2le -c ucs-2.ass ucs-2.srt
參考文件:
  1. Wiki: SubStation Alpha
  2. Wiki: SubRip
  3. SubViewer
2006-09-03 補充:
  1. erspicu_brox 將 .pl 檔弄成 Windows 下的 .EXE 執行檔,如果有需要的人可以自行前往下載。
  2. 已知在 Windows 2000 下直接執行該 exe 檔時會出現亂碼,這是個我也無法解決的鳥問題!
2006-10-06 補充:
  1. 目前網路上查的到的 ass2srt 應該有三個版本,分別是:
    1. ass2srt.wtf:這是使用 Windows Script Host 的版本
    2. ass2srt.pl:這是使用 Perl 的版本,也就是這篇 snip 所介紹的內容
    3. ass2srt.awk:這是使用 awk 的版本,請參閱 将ass字幕转化为srt字幕的脚本
2008-08-23 補充:
  1. 除了前述三個版本的 ass2srt 外,現在又多出一個以 python (應該吧)所撰寫的轉換器:ass2srt.py

Change Log:

2006-08-01 更新:
  1. 加入 CC-GNU GPL 授權聲明
  2. 加入中文程式註解
2006-08-03 更新:
  1. 修正解出來的註解用字幕錯誤
  2. 增加讀取系統環境變數作為檔案編碼之依據
    1. ASS2SRT_FROM:指定 .ass 來源檔檔案編碼
    2. ASS2SRT_TO:指定 .srt 目的檔檔案編碼
  3. 將版號改成 0.2.1 版
2006-09-03 更新:
  1. 新增合併多個相同時間軸設定的字幕內容到單一時間軸之下 ( 採 workaround 方式處理 )
  2. 變更版號為 0.2.2 版
2006-09-06 更新:
  1. 增加對 Windows 平台下的檔案編碼特別處理,以便在 Windows 下輸出可用的 SubRip 字幕檔
  2. 另外提供一個以 Big5 碼存檔的版本 ( ass2srt-big5.pl ),可在 Windows 下輸出中文訊息
  3. 將版號更新為 0.2.3 版
2006-09-07 更新:
  1. 增加對輸出檔案格式的切換選項 ( -m/--mac 及 -o/--dos 兩種 ),這主要是處理各平台間對換行方式差異的問題
  2. 修正時間軸格式錯誤的問題
  3. 加入免責聲明
  4. 將版號更新為 0.2.4 版
2006-09-07 更新:
  1. Bug Fixed
  2. 將版號更新為 0.2.4.1 版
2008-03-11 更新:
  1. Bug Fixed: 修正 srt 時間軸格式錯誤問題 ( 見 newhren 的說明,同時也感謝 newhren 的 patch 檔
  2. 將版號更新為 0.2.4.2 版
待測字幕檔處理工具:
  1. Sabbu:無法識別字幕檔的格式或編碼,移除之!
  2. Gaupol Subtitle Editor
  3. Subtitle Editor:無法識別出字幕檔格式或編碼,移除之!