Visual Studio Code 中的「取代」功能是支援使用規則運算式來尋找及取代字元的,而軟體本身是採用 .NET 的規則運算式,舉例來說,\n
是換行的意思、\s
是比對任何空白字元的意思、[0-9]
是比對 0 至 9 範圍之間的任何字元,詳細介紹還請參考此文件。運用規則運算式搭配尋找取代功能的方式,我們就能做到將 SRT 字幕檔轉換為時間軸標記(時間戳記),即可於串流平台(像是 YouTube)影片簡介中放入讓觀眾方便尋找影片內容對應的時間點。
為何我會想要研究這樣的問題與解決方案呢?站長長期製作公路行車錄影系列,而影片中常常會以字幕來標記行經的地點、地標、橋梁或隧道等,然而都已經可以輸出成 SRT 字幕檔案,那為何不順便用出時間軸標記呢?但手動轉換實在麻煩,尤其在很大量的情況下更是非常傷害手的行為,於是我就想到用規則運算式來尋找不要用到的部分並將其取代成空白或是無(移除),SRT 字幕檔案包含了字幕序號、開始時間跟結束時間,開始跟結束時間中間還會用 -->
來連接,而我就只想保留開始時間 + 字幕顯示。
▲ 去頭去尾(標題跟結尾),剩下的就能直接轉換為時間軸標記,至少在我的需求下這樣處理就可以了!
▲ 這次要用到的規則運算式必須在取代時就開啟(箭頭處要點一下)。
完整步驟
1. 先移除大致上不需要轉換的部分(如:開頭、結尾等)。
2. 依序用 \s\n[0-9][0-9][0-9]
、\s\n[0-9][0-9]
、\s\n[0-9]
尋找並取代為無(移除,取代欄位不輸入任何字元),這步驟將移除字幕序號與多餘的跳行。
3. 再依序用 ,[0-9][0-9][0-9] --> .*\n
、,[0-9][0-9] --> .*\n
、,[0-9] --> .*\n
尋找並取代為空白(取代欄位輸入一格空白字元),這步驟將移除開始時間影格數、--> 箭頭、結束時間及多餘的跳行,空白字元會在開始時間跟字幕文字間,有個間隔比較美觀。
4. 自行去除時間軸標記中不需要的部分,轉換完成!
字幕量大才好用,個人覺得歌詞之類的也許就很合適,量不大就手動一個個處理就好,這樣反而多此一舉,供大家參考。
留言區 / Comments
萌芽論壇