MicroDVD 轉 JSON
或者貼上字幕文字
選項
時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。
這次轉換會改變什麼
有 1 項會被捨棄或需要你決定
- 影格率
來源檔案以影格編號儲存時間——每個時間戳記都取決於你提供的影格率
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 MicroDVD 寫成 JSON:頂層是 `version` 與 `cues`,每條 cue 有 `start`、`end`(整數毫秒)與 `lines` 陣列。影格編號除以影格率得到毫秒,`|` 拆成 `lines` 裡的兩筆字串——一條字幕的兩行仍在同一條 cue 裡。
影格率依頁面欄位、檔案宣告、預設 25 的順序取用,產物裡還會寫一個 `"fps": 25` 記錄這次換算用的是哪個值。要分清兩件事:那個數字是本次換算的紀錄,JSON 的時間軸本身仍是毫秒,讀回來時不需要再除一次。所以能力層面仍把影格率記為遺失——JSON 沒有影格編號這一維。
樣式、定位、卡拉 OK 本來就不在 MicroDVD 裡,這一頁也不會憑空生出來。真正失去的只有影格率;時間精確到毫秒,`|` 的分組也保住了。產物依開始時間升序,UTF-8、LF、無 BOM;一次拖入多個檔案會依序處理,中途可以取消。
範例
一份典型的 MicroDVD 檔轉成 JSON
輸入
{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.
輸出
{
"version": 1,
"fps": 25,
"cues": [
{
"start": 4000,
"end": 6000,
"lines": [
"The quick brown fox jumps over the lazy dog."
]
},
{
"start": 8000,
"end": 10400,
"lines": [
"Faster than",
"the 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.
輸出
{
"version": 1,
"fps": 25,
"cues": [
{
"start": 4000,
"end": 6000,
"lines": [
"Leading zeros in the frame numbers."
]
},
{
"start": 12000,
"end": 13600,
"lines": [
"An unrecognized line above was kept in place."
]
},
{
"start": 16000,
"end": 18000,
"lines": [
"Trailing spaces are kept. "
]
}
]
}
真實檔案常見的狀況:混合換行、BOM、散落的空白、帶前導零的影格編號、認不出的行。可以對照上面那份乾淨範例,看解析器能容忍到什麼程度。
常見問題
MicroDVD 轉 JSON 後,`start` 與 `end` 是什麼單位?
整數毫秒。第 100 個影格在 25 fps 下是 4000,第 150 個是 6000;不會出現 `4.0` 這種秒數,也不會帶單位字串。
MicroDVD 轉 JSON 的產物為什麼有 `"fps": 25`?
它記錄這次換算用的是哪個影格率,方便回查。JSON 的 cue 時間是毫秒,讀檔案時不需要再拿它做除法;影格編號本身沒有被保留,所以能力層面仍把影格率列為遺失。
MicroDVD 的 `|` 在 JSON 裡怎麼表示?
變成 `lines` 陣列裡的兩筆字串,順序不變;它們仍屬同一條 cue,播放器會把兩行一起顯示。
MicroDVD 轉 JSON 時影格率欄位留空會怎樣?
檔案第一行有宣告就用宣告,沒有就用預設 25,並在有損說明裡寫明。預設值被用上時整條時間軸都是按 25 猜的,對 23.976 或 24 的素材都會偏。
MicroDVD 裡帶前導零的 `{0100}` 轉成 JSON 會變成什麼?
換算成同一個時刻,即 4000 毫秒。前導零只是原文拼法,不改變影格編號的值,也不會被寫進 JSON。
JSON 再轉回 MicroDVD 會丟掉什麼?
樣式、定位、卡拉 OK 與影格率。JSON 本身能帶行內標籤,但 MicroDVD 的樣式能力是 none,寫回去只剩文字與影格編號。