跳至主要內容
SubtitleMatrix

ASS 轉 SRT

格式轉換Advanced SubStation Alpha(ASS)
或者貼上字幕文字

這次轉換會改變什麼

有 4 項會被捨棄或需要你決定

  • 樣式

    全部樣式(粗體、斜體、顏色、外框、陰影)

  • 定位

    螢幕定位(每條字幕都會回到預設位置)

  • 卡拉 OK

    卡拉 OK 計時(逐音節高亮)

  • 格式專屬內容

    來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們

這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。

這一頁把 ASS 腳本壓平成普通的 SRT。ASS 把字幕當成由樣式引擎繪製的文字,SRT 只把它當成兩個時間碼之間顯示的一段文字;轉換在瀏覽器裡完成,不上傳、不需要帳號。

有四類東西沒有落點:樣式表的全域設定(字型、字級、顏色、描邊、邊界)、螢幕定位(\pos、\an、\move)、卡拉OK 的逐字計時,以及字幕段落模型之外的腳本構造([Script Info]、Comment: 行、內嵌字型與圖形)。片段級強調會過去——粗體與斜體寫成 <b>、<i>,下劃線寫成 <u>,顏色寫成 <font color="…">。

時間軸不丟。ASS 只寫到百分秒,0:00:04.13 就是 4.13 秒;SRT 記到千分之一秒,換算後數值不變。反方向(毫秒寫回 ASS)才會落到百分秒,單一時間點最多差 5 毫秒。產物編號從 1 開始,可批次拖入整季,處理完打包下載。

範例

一份典型的 ASS 檔案轉成 SRT

輸入

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

輸出

1
00:00:01,000 --> 00:00:04,000
Hello there.

2
00:00:05,000 --> 00:00:08,500
<i>Italic</i> and <b>bold</b> text.

3
00:00:09,000 --> 00:00:12,000
Positioned

4
00:00:13,000 --> 00:00:16,000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>

5
00:00:17,000 --> 00:00:20,000
Line one
Line two

6
00:00:21,000 --> 00:00:24,000
Top left

這份產物丟掉樣式表、螢幕定位、卡拉OK 與字幕段落模型之外的構造;文字與時間逐行一致。

同一轉換遇到一份髒檔案

輸入

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

輸出

1
00:00:01,000 --> 00:00:04,000
Hello, world

2
00:00:05,000 --> 00:00:08,000
{\fad(300,300)}Unmodelled override

3
00:00:09,000 --> 00:00:12,000
Both, wrong order

4
00:00:13,000 --> 00:00:16,500
One decimal centisecond

5
00:00:17,000 --> 00:00:20,000
Soft
break

真實檔案的 BOM、CRLF、認不出的覆寫碼與壞時間碼都不會讓解析失敗;跳過的部分會如實記進有損說明。

常見問題

ASS 轉 SRT 後,\pos 的螢幕定位去哪了?

SRT 沒有任何欄位能把一條字幕放進畫面指定位置,位置由播放器決定。帶 \pos 的字幕會輸出成普通字幕段落,座標不會進入產物,這正是上方有損清單的一項。

ASS 轉 SRT 時,卡拉OK 的逐字計時還會保留嗎?

不會。逐音節卡拉OK是計時指令而不是文字,SRT 沒有對應指令;音節本身保留並加上標記方便你搜尋,但讓它們依序亮起的時長已經丟失,SRT 一次顯示整條字幕。

ASS 的 0:00:04.13 換成 SRT 時間碼會變成什麼?

寫成 00:00:04,130。ASS 只記到百分秒(0:00:04.13 就是 4.13 秒),SRT 記到千分之一秒;百分秒乘十就是毫秒,數值不變,只在反方向(毫秒寫回腳本)才會落到百分秒、單點最多差 5 毫秒。

ASS 轉 SRT 時,腳本裡的具名樣式會怎麼處理?

樣式會被讀取,SRT 能表達的部分會帶過去:某條字幕引用的樣式若開啟斜體或粗體,產物就出現對應的 <i>、<b> 標籤。字型、字級、顏色、描邊、邊界等其餘欄位沒有地方放,會丟棄。

ASS 腳本用了十幾個樣式,會影響 ASS 轉 SRT 的結果嗎?

不會。每條 Dialogue 都單獨讀取,並依它引用的樣式名查表;十多個樣式的腳本和只有一個樣式的腳本,轉換方式完全相同。

相關工具