引用 | 編輯
PeterPan
2005-05-03 13:47 |
樓主
▼ |
||
x1
===================↑執行範例↑====================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 .. 訪客只能看到部份內容,免費 加入會員 x6
|
引用 | 編輯
skywalker509
2007-11-30 23:49 |
2樓
▲ ▼ |
往前移的功能有寫錯喔
往後移正常 x0 |
引用 | 編輯
daweproject
2009-06-23 01:49 |
7樓
▲ ▼ |
這好用的軟體當然要下載回來試試囉.謝謝分享
x0 |
引用 | 編輯
overing
2009-10-16 01:55 |
9樓
▲ ▼ |
如果沒有需要額外儲存資料
其實changeTime可以加個static 就可以在main裡面直接用ChangeSrtTime.changeTime呼叫 不用再生成(new)一個ChangeSrtTime物件 x0 |
引用 | 編輯
jumbo1012001
2009-12-19 14:53 |
10樓
▲ ▼ |
我也常為了字幕與影片不同步而困擾,可這位大大,您這程式是針對有兒電腦程式設計概念的人寫的,以您的功力,想來可以弄個更簡單,供我這種電腦白痴者使用的「同步機」,先謝囉。
x0 |