跳至主要內容
SubtitleMatrix

MicroDVD 轉 ASS

格式轉換MicroDVD(SUB)
或者貼上字幕文字

選項

時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。

這次轉換會改變什麼

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

  • 影格率

    來源檔案以影格編號儲存時間——每個時間戳記都取決於你提供的影格率

  • 精確度

    時間精確度——輸出的時間刻度較粗,因此每個時間戳記都會四捨五入到最接近的 10 毫秒

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

這一頁把 MicroDVD 的 `.sub` 寫成 ASS:輸入是一行 `{100}{150}正文`,產物是 `[Events]` 裡的一條 `Dialogue: 0,0:00:04.00,0:00:06.00,Default,,0,0,0,,正文`。影格編號除以影格率就是秒,所以檔案裡沒有現成時間碼,影格率必須先定下來。

影格率的取用順序是:頁面上的影格率欄位、檔案第一行的宣告、預設的 25。頁面欄位永遠先贏——範例檔寫著 `{1}{1}23.976`,但欄位預設 25,於是第 100 個影格仍落在 4 秒。這個順序是刻意的:複製來的 `.sub` 常帶著錯的宣告,那個欄位存在的意義就是讓你糾正它。

到了 ASS 這裡有兩樣東西沒有落點。第一是影格率本身:ASS 存時鐘、不存影格編號,原始編號不會出現在產物裡。第二是精度:ASS 寫到百分秒(`0:00:04.13`),換算出來的毫秒要四捨五入到 10 ms,單條位移不超過 5 ms。正文裡的 `|` 是硬換行,產物寫成 `\N`,兩行仍屬同一條字幕;輸出固定 UTF-8、LF、無 BOM,批次可取消。

範例

一份典型的 MicroDVD 檔轉成 ASS

輸入

{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.

輸出

[Script Info]
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,0,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:04.00,0:00:06.00,Default,,0,0,0,,The quick brown fox jumps over the lazy dog.
Dialogue: 0,0:00:08.00,0:00:10.40,Default,,0,0,0,,Faster than\Nthe last one.

這個方向丟掉的是影格率與精度;其餘逐行對應。

同一轉換遇到一份格式凌亂的檔案

輸入

{1}{1}23.976
{0100}{0150}Leading zeros in the frame numbers.
[INFORMATION]
{300}{340}An unrecognized line above was kept in place.
{400}{450}Trailing spaces are kept.   

輸出

[Script Info]
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,0,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:04.00,0:00:06.00,Default,,0,0,0,,Leading zeros in the frame numbers.
Dialogue: 0,0:00:12.00,0:00:13.60,Default,,0,0,0,,An unrecognized line above was kept in place.
Dialogue: 0,0:00:16.00,0:00:18.00,Default,,0,0,0,,Trailing spaces are kept.   

真實檔案常見的狀況:混合換行、BOM、散落的空白、帶前導零的影格編號、認不出的行。可以對照上面那份乾淨範例,看解析器能容忍到什麼程度。

常見問題

MicroDVD 轉 ASS 時,頁面上的影格率欄位和檔案第一行誰說了算?

頁面欄位優先。範例檔第一行寫著 23.976,但欄位預設 25,所以 `{100}` 換算出來仍是 4 秒,而不是 4.171 秒;想照檔案宣告走,就把欄位留空。

MicroDVD 轉 ASS 後,時間碼為什麼只到百分秒?

ASS 的時間寫法是 `0:00:04.13`,只到百分秒。毫秒換算結果會四捨五入到最近的 10 ms,單條位移不超過 5 ms,時間軸不會被拉長或重排。

MicroDVD 轉 ASS 會保留原來的影格編號嗎?

不會。ASS 只存時鐘時間,`{100}{150}` 這兩個數字不會出現在產物裡;之後若還要按影格交給影片工具,請保留原始 `.sub`。

MicroDVD 的兩行字幕轉成 ASS 後還在同一條裡嗎?

還在。`|` 會寫成 `\N`,這是 ASS 的硬換行寫法;兩行仍屬同一條字幕,播放器會一起顯示。

MicroDVD 轉 ASS 時,認不出的行(例如 `[INFORMATION]`)去了哪裡?

它們不是字幕,不會被當成一條 cue。ASS 產物只有 `[Script Info]`、樣式表與 `[Events]`,沒有能安放這類原始行的位置,所以不會進產物;解析時其餘可辨識的內容照讀。

ASS 再轉回 MicroDVD 會丟掉什麼?

樣式、畫面定位、卡拉 OK 逐字計時、影格率,以及 ASS 的格式私有構造;這份清單與本頁方向不同,因為兩個格式各自保留的東西不一樣。

MicroDVD 轉 ASS 的產物用什麼編碼?

UTF-8、Unix 換行、沒有 BOM。原檔若是 UTF-16 或 Windows 單一位元編碼,讀入時會先解碼並在結果面板說明;寫出去一律是同一種 UTF-8 ASS。

相關工具