修正《 里约大冒险》字幕的程序

    在公司加班1周,累的要命。周末回来放松下,看看 《里约大冒险》,下载下来竟然没字幕,遂上网搜索,下载了一个外挂字幕,翻译的乱七八糟,估计是用谷歌翻译或爱词霸翻译的。下载第2个一开始还行,越看越发现画面跟声音对不上,先出来声音三四秒之后才是相应的画面。怒!坚持继续看了会,英语水平不够,越到精彩的地方就越乱。实在受不了了。用记事本打开字幕文件,发现字幕文件跟歌词文件差不多,里面都标明了每一句话的时间。哈哈,这会就好办了,用程序把文件中所有的时间延后4秒不就得了么!旋即动手,遂成:

(ps:所用语言是java,若没有java编译、运行环境,请依照思路转行成别的语言编译执行。)

public static void main(String s[]) throws  Exception{
  FileReader fr=new FileReader("d:/1/[里约大冒险].Rio.2011.R5.LiNE.XviD-ViSiON1.srt");
  BufferedReader br=new BufferedReader(fr);
  String line="";
  String reg=  "(([01]//d)|(2[0-3])):[0-5]//d(:[0-5]//d)?";
   //正则表达式来获取所有时间格式的字符串

  Pattern  regex=Pattern.compile(reg);
  StringBuilder sb=new StringBuilder();

  while((line=br.readLine())!=null){
   StringBuilder line_sb=new StringBuilder(line);
   Matcher regexMatcher = regex.matcher(line);
   while (regexMatcher.find()) {
    String  s1= regexMatcher.group(0) ;
    int start=regexMatcher.start(0);
    int end=regexMatcher.end(0);
    line_sb.replace(start, end, plus4(s1));
   }
   sb.append(line_sb);
   sb.append('/n');
  }
  System.out.println(sb);
  MyFileWriter(sb.toString());
 }
 

//把时间延后4000毫秒;

 static String plus4(String t){
  SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
  long time=0;
  try {
   time = sdf.parse(t).getTime();
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
   Date date=new Date(time+4000);
  
   return  sdf.format(date) ;
 
 }

//输出成文件
 static void MyFileWriter(String s){
  File f=new File("d://1//[里约大冒险].Rio.2011.R5.LiNE.XviD-ViSiON.srt");
  try {
   FileWriter fw=new FileWriter(f);
   fw.write(s);
   fw.flush();
   fw.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值