ASS 轉 SRT
把 ASS/SSA 字幕轉成 SRT,讓電視、機上盒或較舊的播放器讀得出來。全部在瀏覽器裡完成,並明確列出這一趟會失去哪些特效。
在你的瀏覽器中執行
負值表示字幕提早出現。會被推到零之前的字幕會停在零,不會被丟掉。
沒有帶過去的東西
解析與輸出都在你的瀏覽器裡完成,檔案不會上傳。
先說你要放棄什麼
ASS 不是「加了樣式的字幕格式」,它是一套字幕排版格式,而那些樣式就是它存在的理由。SRT 只有起始 時間、結束時間、一段文字,整份規格就這樣。
所以這個轉換天生就是有損的,值得做的唯一理由是:你要拿去播的那個東西讀不懂 ASS。下面每一項在 原檔裡都還在——原檔請留著。
| ASS 帶得動 | 到了 SRT |
|---|---|
| 字型、字級、顏色、外框、陰影 | 沒了 |
位置——{\an8}、{\pos(…)}、{\move(…)} | 沒了 |
卡拉 OK 逐字——{\k}、{\kf} | 沒了 |
| 旋轉、縮放、裁切、向量繪圖 | 沒了 |
[V4+ Styles] 裡的逐行樣式 | 沒了 |
| 對白文字與時間 | 留著 |
頁面上列出的是你這個檔案實際上有的東西,而不是這張一般性的警告。
那為什麼還是要轉
字幕組交出 ASS,是因為招牌、歌詞和重疊對白非得要它不可。而電腦以外的東西幾乎都播不動:
- 智慧電視與機上盒讀 SRT,對 ASS 多半直接無視,或是把覆寫標籤當成文字一起顯示出來。
- Plex、Jellyfin 播得動 ASS,但那會強制轉檔把字幕燒進畫面。SRT 可以直接播。
- 要上傳到某個平台。 願意收字幕檔的平台,收的通常是 SRT 和 WebVTT。
如果你要播的地方就是電腦,那就裝 mpv 或 VLC 留著 ASS,結果會比這個頁面好。
檔案裡有讀進來的部分
只有 [Events] 這一節,而且只有其中的 Dialogue: 行。上面那行 Format: 定義了欄位順序,這件事
比看起來重要:Text 是最後一欄,也是唯一允許出現逗號的一欄,所以把 Dialogue: 行「見逗號就切」
會把台詞從第一個逗號截斷。這裡是讀 Format 行,而不是假設欄位順序。
文字內部有三件事會處理:
{…}覆寫標籤會被移除,而不是原樣留著。留著的轉換器會做出「{\an8}小心!」這種字幕,比 失去位置更糟。\N會變成真正的換行,\n也是。\h會變成一般空格。
Comment: 行不是對白,會跳過。
轉完之後要看兩件事
時間不會因此變精確。 ASS 的時間戳是百分秒——0:01:02.50——SRT 是毫秒,所以轉出來每一個時間
都以 0 結尾。那不是四捨五入的 bug,那個資訊本來就不在檔案裡。十毫秒在任何影格率下都不到一格,
看不出來。
重疊的行還是重疊。 ASS 很習慣同時顯示兩件事——上面一個招牌、下面一句對白——靠位置把它們分開。 SRT 沒有位置,所以兩條字幕就只是時間上重疊,而播放器要拿它怎麼辦全看播放器:疊起來、蓋在一起, 或是丟掉一條。特效招牌愈多的集數愈明顯。
轉完發現招牌看不懂,就是這件事,而且在 SRT 裡修不了。
如果字幕還不同步
完整的轉換器可以在轉檔的同時,把整條時間軸平移幾秒。固定平移只 能修固定的偏差;如果是愈到後面差愈多,那是影格率不合——通常是 23.976 對 25——平移救不了。
相關
要把結果掛到 HTML <video> 上,見 SRT 轉 WebVTT;所有格式組合與時間軸
平移,見完整的字幕轉換器。