MicroDVD 字幕格式
這種格式能表達什麼
- 文字樣式
- 僅純文字
- 畫面定位
- 否
- 卡拉 OK 計時
- 否
- 字幕段落內換行
- 是
- 時間軸
- 每條字幕都有開始與結束時間
- 時間精確度
- 1 毫秒
- 時間以影格編號儲存
- 是
- 由右至左的文字
- 是
範例
一份典型的 MicroDVD 檔,以及從中讀出的內容
檔案
{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.
從中讀出了什麼
2 cues, 3 lines of text
{100}{150} = 00:00:04.000 → 00:00:06.000
The quick brown fox jumps over the lazy dog.
{200}{260} = 00:00:08.000 → 00:00:10.400
Faster than
the last one.
Outside the cues:
frame rate 25 fps, from the first line of the file右欄不是轉換產物,而是本站從左欄檔案裡讀出的內容,也是這份檔案任何一次轉換的起點。
一份格式凌亂的 MicroDVD 檔,仍然讀得出什麼
檔案
{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.
從中讀出了什麼
3 cues, 3 lines of text
{100}{150} = 00:00:04.171 → 00:00:06.256
Leading zeros in the frame numbers.
{300}{340} = 00:00:12.513 → 00:00:14.181
An unrecognized line above was kept in place.
{400}{450} = 00:00:16.683 → 00:00:18.769
Trailing spaces are kept.
Outside the cues:
frame rate 23.976 fps, from the first line of the file
kept as it was [INFORMATION]BOM、Windows 換行、認不出的行、帶前導零的影格編號都出現過。解析不會中斷:讀不出的部分會如實回報,而不是悄悄丟掉。
把 MicroDVD 轉成其他格式
每一個都完全在你的瀏覽器裡執行。標籤標明了那個方向要付出什麼代價,打開之前就能看到。
轉換為此格式
MicroDVD(`.sub`)是 DivX 時代的字幕格式:一行一條字幕,形狀是 `{開始影格}{結束影格}正文`。它存的不是時間碼,而是影格編號——也就是說,離開影格率,檔案裡的數字說明不了任何時刻。這也是它今天最容易出問題的地方:檔案複製來複製去,影格率宣告卻常常是錯的。
慣例是在第一行寫一條 `{1}{1}25` 之類的宣告。但大量 `.sub` 是轉檔工具按 PAL 的 25 個影格寫死的,宣告 25 並不等於素材真的跑在 25。所以本站把頁面上的影格率欄位排在檔案宣告之前:你先說這份字幕該按多少影格讀,宣告只在欄位留空時才生效,兩者都沒有才落到預設的 25,並在有損說明裡寫明整條時間軸是猜的。
它能表達的東西很少:每條字幕一個開始影格、一個結束影格、一段正文,正文裡用 `|` 表示硬換行。沒有樣式、沒有畫面位置、沒有卡拉 OK 逐字計時。有些檔案帶 `{Y:i}` 這類控制碼,本站把它們當正文原樣保留,不執行——看不懂就默默改寫,比留著標記更糟。所有轉換都在瀏覽器裡完成,檔案不上傳。
常見問題
MicroDVD 檔案第一行的 `{1}{1}25` 是什麼?
是影格率宣告,慣例寫在第一個非空行。它不是一條字幕,而是告訴讀檔案的人「這份字幕是按每秒 25 個影格寫的」;沒有這一行,檔案裡的影格編號就只能靠外部約定換算。
MicroDVD 的 `{100}{150}` 怎麼換算成秒?
影格編號除以影格率。25 fps 下第 100 個影格是 4 秒,第 150 個是 6 秒,所以這條字幕涵蓋 4.000 到 6.000 秒;檔案本身不存這個除法需要的數,它是外部的。
同一個 MicroDVD 檔按 23.976 和 25 讀,時間軸差多少?
影格編號不變,秒數按比例變。一小時素材在兩種影格率下會差出看得見的秒數,而且越往後越大;所以這不是精度問題,而是整條時間軸對不上畫面。
MicroDVD 裡的 `{Y:i}` 會被當成斜體執行嗎?
不會。MicroDVD 的樣式能力是 none,這類括號裡的控制碼按正文原樣保留,不解析也不丟棄;產物裡看到它,說明來源檔案本來就有這幾個字元。
MicroDVD 正文裡的 `|` 是換行還是普通字元?
是格式自帶的硬換行分隔符,本站會把它拆成同一條字幕的兩行。格式沒有跳脫機制,所以正文真的想顯示一條豎線,往返之後會變成兩行——這是格式本身的邊界,不是轉換改壞的。