JSON 轉 TXT
或者貼上字幕文字
這次轉換會改變什麼
有 5 項會被捨棄或需要你決定
- 時間
整條時間軸(輸出格式完全不記錄時間)
- 樣式
全部樣式(粗體、斜體、顏色、外框、陰影)
- 定位
螢幕定位(每條字幕都會回到預設位置)
- 卡拉 OK
卡拉 OK 計時(逐音節高亮)
- 換行
換行(多行字幕會被合併成一行)
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 JSON 字幕檔轉成 TXT。拖入檔案或直接貼上文字,就會拿回 TXT 版本;轉換全程在瀏覽器裡跑,不上傳、也不需要帳號。
兩個格式能存的東西不同,差別不是外觀問題:時間軸、樣式、定位、卡拉OK與換行分組在 TXT 裡沒有落點。上方清單來自兩個格式各自能表達什麼,不是讀了你的檔案才算出來的,所以檔案還沒載入就已經是這個答案。
本站的 JSON 完整形狀是版本號加一個 cues 陣列,也可以直接是一串 cue;它保留樣式、定位與卡拉OK,這些正是播放器格式常丟掉的。單檔可以,整季也可以:佇列依序處理,結果打包成一個 ZIP。
範例
一份典型的 JSON 檔轉成 TXT
輸入
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
輸出
Hello world.
Second line.
Plain line.
Styled line.
Roger: I am here.
這份產物丟掉了:時間軸、樣式、定位、卡拉OK與換行分組。其餘內容逐行對得上。
同一轉換遇到結構鬆散的 JSON 輸入
輸入
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
輸出
First.
Second.
Third.
真實檔案常有混合換行、多餘空白與空欄位,這份輸入就是那個樣子;可以對照上面那份乾淨範例,看看解析器容忍到哪裡。
常見問題
JSON 轉 TXT 後,時間碼還在嗎?
不在了。JSON 的時間碼在 TXT 裡沒有落點:輸出的第 40 行仍然是原檔的第 40 行,但沒有任何欄位說明它何時出現在畫面上。
JSON 轉 TXT 時,粗體、斜體與顏色到哪裡去了?
TXT 完全不存樣式,所以全部丟掉:cue 行裡的 tags 或檔案裡的 styles 物件都沒有落點,每一行都寫成純文字。文字本身不受影響。
JSON 轉 TXT 時,螢幕上的位置會被保留嗎?
TXT 不能指定字幕畫在哪裡,所以每條 cue 儲存的位置在轉出時丟掉,播放器會回到它自己的預設位置——大多數播放器是畫面底部置中。
JSON 轉 TXT 時,卡拉OK計時會留下嗎?
時間會丟,字會留。卡拉OK記在 JSON cue 的區間標記裡,標出每個音節何時亮起;TXT 沒有辦法記錄一行之內的時間點,所以標記拿掉,音節變成普通文字。
JSON 的兩行字幕轉成 TXT 後,還讀得出是同一條嗎?
兩行都會寫出來、上下相鄰,但檔案不再說明它們屬於同一條:TXT 不能把行分組,JSON 裡的一條字幕,別的工具再讀時會變成兩條。若後面還要交給翻譯或對時工具,這一點要記得。
JSON 轉成 TXT 的產物長什麼樣子?
TXT 是最少的:沒有編號、沒有時間碼,一行文字就是一行字幕。JSON 的每一條 cue 會展開成它的文字行,順序照舊。
JSON 的 cue 順序在 TXT 檔裡會重排嗎?
會按開始時間排序,最早的在前。JSON 的每一條字幕進到 TXT 都照這個順序寫;若原檔本來是亂的,產物會把它們排回正確順序——改的是結構,不是內容,這也是本站每個格式共用的讀檔順序。
把 TXT 轉回 JSON,剛才丟掉的東西補得回來嗎?
TXT 轉回 JSON 時,時間軸是重新排出來的(第一行從 0 開始、每行固定秒數),原本的時間已經不在檔案裡;樣式、定位、卡拉OK與換行分組同樣無法還原。
JSON 轉 TXT 的產物用什麼編碼與換行?
一律是 UTF-8、Unix 換行(LF)、不帶 BOM,不管 JSON 原檔用什麼。若輸入是 UTF-16 或 Windows 單一位元編碼,讀入時會先解碼,結果面板會說明;TXT 產物永遠是同一種 UTF-8。