toolfree

ASS 轉 SRT

把 ASS/SSA 字幕轉成 SRT,讓電視、機上盒或較舊的播放器讀得出來。全部在瀏覽器裡完成,並明確列出這一趟會失去哪些特效。

在你的瀏覽器中執行

負值表示字幕提早出現。會被推到零之前的字幕會停在零,不會被丟掉。

偵測到
0
字幕條數
最後一條結束於

解析與輸出都在你的瀏覽器裡完成,檔案不會上傳。

先說你要放棄什麼

ASS 不是「加了樣式的字幕格式」,它是一套字幕排版格式,而那些樣式就是它存在的理由。SRT 只有起始 時間、結束時間、一段文字,整份規格就這樣。

所以這個轉換天生就是有損的,值得做的唯一理由是:你要拿去播的那個東西讀不懂 ASS。下面每一項在 原檔裡都還在——原檔請留著

ASS 帶得動到了 SRT
字型、字級、顏色、外框、陰影沒了
位置——{\an8}{\pos(…)}{\move(…)}沒了
卡拉 OK 逐字——{\k}{\kf}沒了
旋轉、縮放、裁切、向量繪圖沒了
[V4+ Styles] 裡的逐行樣式沒了
對白文字與時間留著

頁面上列出的是你這個檔案實際上有的東西,而不是這張一般性的警告。

那為什麼還是要轉

字幕組交出 ASS,是因為招牌、歌詞和重疊對白非得要它不可。而電腦以外的東西幾乎都播不動:

如果你要播的地方就是電腦,那就裝 mpv 或 VLC 留著 ASS,結果會比這個頁面好。

檔案裡有讀進來的部分

只有 [Events] 這一節,而且只有其中的 Dialogue: 行。上面那行 Format: 定義了欄位順序,這件事 比看起來重要:Text 是最後一欄,也是唯一允許出現逗號的一欄,所以把 Dialogue: 行「見逗號就切」 會把台詞從第一個逗號截斷。這裡是 Format 行,而不是假設欄位順序。

文字內部有三件事會處理:

Comment: 行不是對白,會跳過。

轉完之後要看兩件事

時間不會因此變精確。 ASS 的時間戳是百分秒——0:01:02.50——SRT 是毫秒,所以轉出來每一個時間 都以 0 結尾。那不是四捨五入的 bug,那個資訊本來就不在檔案裡。十毫秒在任何影格率下都不到一格, 看不出來。

重疊的行還是重疊。 ASS 很習慣同時顯示兩件事——上面一個招牌、下面一句對白——靠位置把它們分開。 SRT 沒有位置,所以兩條字幕就只是時間上重疊,而播放器要拿它怎麼辦全看播放器:疊起來、蓋在一起, 或是丟掉一條。特效招牌愈多的集數愈明顯。

轉完發現招牌看不懂,就是這件事,而且在 SRT 裡修不了。

如果字幕還不同步

完整的轉換器可以在轉檔的同時,把整條時間軸平移幾秒。固定平移只 能修固定的偏差;如果是愈到後面差愈多,那是影格率不合——通常是 23.976 對 25——平移救不了。

相關

要把結果掛到 HTML <video> 上,見 SRT 轉 WebVTT;所有格式組合與時間軸 平移,見完整的字幕轉換器