===================↑执行范例↑====================
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 可以看到全部内容