去除字幕 HTML 標籤
或者貼上字幕文字
選項
一個欄位,七個選項,每個選項都有自己的頁面。斜體、粗體、底線和顏色只去掉對應的那一種區間,行內其他樣式不動。全部 會去掉工具建模的所有區間 —— 那四種加上卡拉 OK 計時 —— 文字裡的其他內容保持原樣。HTML 做同樣的事,並額外清掉解析時因為不被建模而留在文字裡的角括號標記,例如 VTT 的 <v Bob> 說話者標籤和 <c.className>。ASS 則改為清掉覆寫區塊,即解析時未能辨識的 {...} 代碼,例如 {\fad(500,500)}。這一頁會把欄位填成標題裡點名的選項,並且不列出其他選項。
時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。
這一頁把標記從字幕文字裡拿掉:檔案帶有的每一段樣式範圍,加上還留在文字本身的角括號標籤。回來的是乾淨可讀的對白——文字、時間,什麼都不多。當一份檔案的文字裡還坐著說話者標籤、class 標籤,或行中間一個落單的收尾標籤時,就跑這一輪。
後半段正是這一頁要與「移除全部字幕樣式」並存的原因。工具只建模它懂的四種強調標籤,其餘一律留在原地——讀檔時這是對的作法,因為默默吃掉不認得的標記就等於丟資料。但這也意味著一份帶 `<v Bob>` 的 WebVTT 檔,在站上其他每一次清理之後都還留著那個標籤;而一份經過 OCR 或手動編輯的檔案,行中間常常有一個對不上的收尾標籤。這一頁就是把它們掃掉的那一頁,標題裡也寫明了。
掃除刻意做得很窄。它只移除形狀像標籤的東西——角括號後面緊接著一個字母或斜線。對白裡的比較式 `5 < 10` 與傷心臉 `<3` 完全不受影響,因為更寬鬆的規則會刪掉兩個角括號之間的文字,而產物裡不會留下任何痕跡顯示它做過。沒有建模的東西,就不猜。
不上傳;檔案在瀏覽器分頁裡讀入與寫出。本來就是純文字的檔案會逐位元組回來,這也是確認你懷疑的隱形標記是否真的存在,最便宜的方法。
範例
帶說話者標籤與 class 標籤的 WebVTT 檔
輸入
WEBVTT
00:00:01.000 --> 00:00:02.000
<v Bob><c.yellow>Hello there</c>
00:00:03.000 --> 00:00:04.000
<i>She left</i> <ruby>東京<rt>とうきょう</rt></ruby>.
輸出
WEBVTT
00:00:01.000 --> 00:00:02.000
Hello there
00:00:03.000 --> 00:00:04.000
She left 東京とうきょう.
說話者標籤、class 標籤、斜體與 ruby 註記全部走,留下文字。注意第二條字幕:`<rt>` 裡的讀音是文字而不是標記,所以留著——產物把假名顯示在漢字旁邊,那本來就是播放器會顯示的東西。
一個收尾標籤對不上的 SRT 檔
輸入
1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> there</i> again.
2
00:00:03,000 --> 00:00:04,000
<b>And</b> one more.
輸出
1
00:00:01,000 --> 00:00:02,000
Hello there again.
2
00:00:03,000 --> 00:00:04,000
And one more.
`Hello` 前後那一對被讀成範圍、整段移除;`there` 後面那個落單的 `</i>` 被讀取留在文字裡,在這裡被掃掉。兩者最後都離開產物,這正是把兩件事放在同一輪做的重點——經過 OCR 或手動編輯的檔案,回來就是這種對不上的標籤。
比較式與符號不是標籤
輸入
1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1
2
00:00:03,000 --> 00:00:04,000
<3 you
輸出
1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1
2
00:00:03,000 --> 00:00:04,000
<3 you
什麼都沒被移除,而這是這一頁最重要的那一半。掃除只碰形狀像標籤的東西,也就是角括號後面緊接著一個字母或斜線;數學比較式與用小於符號拼成的心,兩者都原封不動,寫在兩個角括號之間的東西也一樣。
常見問題
這一頁跟移除全部樣式有什麼不同?
這一頁做那件事,而且再往前一步。移除樣式只拿掉工具建模的強調範圍——斜體、粗體、底線、顏色與卡拉OK。這一頁也移除那些,然後再把留在文字本身的角括號標籤掃掉:說話者標籤、class 標籤、ruby 標記,以及落單或對不上的收尾標籤。如果你的檔案裡沒有這類標記,兩頁的產物會一樣。
掃除會移除哪些標籤,又留下哪些?
它移除形狀像標籤的東西:開頭角括號後面緊接著一個字母或斜線,直到下一個收尾角括號。它不碰的是角括號後面接著別的東西的情況,所以像 `5 < 10 and 3 > 1` 的比較式與像 `<3` 的符號都原樣通過。這種狹窄是刻意的——更寬的規則會刪掉兩個角括號之間的對白,而產物裡不留痕跡。
被移除的標籤裡面的文字也會被刪掉嗎?
要看裡面是什麼。標籤自己的屬性會跟著它走,被移除的標籤裡再嵌套的東西也一樣——例如 ruby 註記裡的讀音是文字,會留在行上,而它周圍的 ruby 標記消失。永遠不會發生的,是刪掉普通對白中兩個角括號之間的文字,因為那個形狀不像標籤。
標記清掉之後,產物在我的播放器裡還是有效的嗎?
是,而且比以前更可靠。WebVTT 允許對不上的收尾標籤,不會抱怨,但一個少了收尾角括號的說話者標籤,在某些播放器裡會把整行剩下的部分吞掉,而不同播放器對不認得的標籤看法也不一致。純文字沒有這種歧義,所以在會覆寫樣式的平台上,一份檔案常常是清理過比上過樣式更好。
可以只移除殘留的標記、保留我的斜體嗎?
這一頁不行:樣式範圍先走,掃除才跑,所以帶斜體的檔案回來就沒有斜體了。這個順序不是隨便定的——移除標記會讓文字變短,之後的每一段範圍都得重新計算才能繼續指到正確的字元。把兩件事放在一起做,結果才會精確,所以這裡沒有做一半的設定。
檔案明明有標記,為什麼這一輪說沒有東西可移除?
最可能的原因是那些標記的形狀不像標籤:角括號後面接著空格、數字或符號的,頁面刻意不動,所以什麼都沒移除,檔案逐位元組回來。如果檔案裡確實有 `<v Bob>` 之類的東西,回來卻沒變,先確認那是不是你以為的那份檔案——頁面按檔案實際上是什麼格式讀,不是按副檔名。