===================↑執行範例↑====================
A‧將執行檔與字幕檔搬到同一目錄,執行ChangeSrtTime.exe
B‧輸入字幕檔案名稱與修改的毫秒數
C‧成功變出修改好的字幕檔
==========↓前言﹝碎碎唸﹞↓===========
昨晚抓了一些電影以及字幕檔,準備考試完畢以後犒賞自己,但是有些字幕顯示時間與影片時間不合,又懶的每次都要去DirectVobSub設定偏差時間,於是開始在茫茫網海中搜尋能修改 .srt 字幕時間的程式,但是找了半小時都找不到...﹝這傢伙搜尋功力果然夠差﹞,一怒之下就花了三個小時半寫出這隻程式﹝這傢伙只顧著寫 Web Application,基本的小程式居然都忘記怎麼寫了!﹞
============↓程式原理↓=============
.srt 檔案的規則很簡單,以下擷取部份內容說明
3
00:00:29,891 --> 00:00:33,504
∮噢,我來自一個遙遠的國度
4
00:00:33,572 --> 00:00:36,834
∮一個沙漠駱駝隊徜徉的地方
5
00:00:36,901 --> 00:00:40,415
∮那裡平坦寬闊、廣袤無邊、酷熱難耐
由此可知,每段字幕就是編號、顯示時間的範圍、字幕內容 這三個部分。而時間這行有字串 " --> ",所以程式只要在讀取每行資料的時候,判斷這行資料是否有 " --> " 這個字串,如果有,就修改這行 String,如果沒有,就直接 write 囉。
時間這行 String 的格式很固定↓
小時:分鐘:秒數,毫秒 --> 小時:分鐘:秒數,毫秒
我的做法是將兩個時間通通換算成毫秒數,再增減希望增減的毫秒數,然後傳入 Date 的 constructor,再傳入 SimpleDateFormat 來設定格式,然後再輸出。
=============↓程式碼↓=============/**
.srt 字幕檔的字幕顯示時間修改程式
written by PeterPan 【peterpan_pp.tw@yahoo.com.tw】
2005/05/02
**/
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;
public class ChangeSrtTime{
public ChangeSrtTime(){
}
public void changeTime(Strin ..
訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容