引用 | 编辑
PeterPan
2005-05-03 13:47 |
楼主
▼ |
||
![]() 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 .. 访客只能看到部份内容,免费 加入会员 ![]()
|
引用 | 编辑
skywalker509
2007-11-30 23:49 |
2楼
▲ ▼ |
往前移的功能有写错喔
往后移正常 ![]() |
引用 | 编辑
daweproject
2009-06-23 01:49 |
7楼
▲ ▼ |
这好用的软体当然要下载回来试试啰.谢谢分享
![]() |
引用 | 编辑
overing
2009-10-16 01:55 |
9楼
▲ ▼ |
如果没有需要额外储存资料
其实changeTime可以加个static 就可以在main里面直接用ChangeSrtTime.changeTime呼叫 不用再生成(new)一个ChangeSrtTime物件 ![]() |
引用 | 编辑
jumbo1012001
2009-12-19 14:53 |
10楼
▲ ▼ |
![]() ![]() |