标题: 如何分割一个字幕文件为两个文件
[打印本页]
作者: sinbao
时间: 2007-10-13 18:58
标题: 如何分割一个字幕文件为两个文件
因为我下载了一个电影,分为cd1和cd2,但是字幕文件只有一个File.srt.
为了我的cd2可以使用字幕,需要把cd2的字幕部分截取出来,再把时间对应的偏移一下.
所以需要把文件File.srt分成两个:File1.srt和File2.srt
例子如下,时间的部分我就选了30秒作为偏移了,没有精确到毫秒:
File.srt文件是这样的:
1
00:00:02,700 --> 00:00:04,700
WWW.CHDTV.NET
2
00:00:08,700 --> 00:00:12,700
-=影片压制:阿步@CHD联盟=-
-=字幕制作:特大碗牛肉面@CHD联盟=-
3
00:00:23,420 --> 00:00:26,116
(澳洲雪梨)
4
00:00:33,830 --> 00:00:35,388
(拜塞制药厂)
5
00:00:38,869 --> 00:00:42,828
狄米特,每个英雄的诞生
6
00:00:43,507 --> 00:00:46,408
都有一个必备的条件
7
00:00:48,011 --> 00:00:48,943
一个坏人
8
00:00:49,980 --> 00:00:54,474
为了我们的英雄贝雷明
分割成:File1.srt
1
00:00:02,700 --> 00:00:04,700
WWW.CHDTV.NET
2
00:00:08,700 --> 00:00:12,700
-=影片压制:阿步@CHD联盟=-
-=字幕制作:特大碗牛肉面@CHD联盟=-
3
00:00:23,420 --> 00:00:26,116
(澳洲雪梨)
和File2.srt
1
00:00:03,830 --> 00:00:05,388
(拜塞制药厂)
2
00:00:08,869 --> 00:00:12,828
狄米特,每个英雄的诞生
3
00:00:13,507 --> 00:00:16,408
都有一个必备的条件
4
00:00:18,011 --> 00:00:18,943
一个坏人
5
00:00:19,980 --> 00:00:24,474
为了我们的英雄贝雷明
[
Last edited by sinbao on 2007-10-13 at 07:04 PM ]
作者: lxmxn
时间: 2007-10-13 20:42
BEGIN{
#设置时间差,根据自己的情况设定
times=30;
#设置生成文件名,根据自己的情况设定
file1="file1.txt";file2="file2.txt";
#调用内部函数system删除已经存在的file1和file2;
system("if exist " file1 " del " file1);system("if exist " file2 " del " file2);
}
#处理时间标签的行
function deal_with(fileline){
split(fileline,myarray)
return sprintf("%s %s %s",compute(myarray[1]),myarray[2],compute(myarray[3]));
}
#计算时间差并返回结果
function compute(lineTime){
n=split(lineTime,timeArray,/[:,]/);
timeArray[3]-=times;
if(timeArray[3]<0){
timeArray[2]-=1;
if(timeArray[2]<0){timeArray[1]-=1;timeArray[2]+=60;}
timeArray[3]+=60;
}
t=0
return sprintf("%02s:%02s:%02s,%s",timeArray[++t],timeArray[++t],timeArray[++t],timeArray[++t]);
}
#主程序部分,对file.srt文件进行分析并处理
{
if($0~/^[0-9]+$/){
num+=1;
if(num<4){
files=file1;
}else{
$0=++new_num;
files=file2;
}
}
if(num>3){
if($1~/^[0-9][0-9]:[0-9][0-9]/){
print deal_with($0)>files;
}else{print $0>files;}
}else{print $0>files;}
}
将以上脚本保存为split_file.awk,然后在命令行执行:
gawk -f split_file.awk file.srt
即可。
需要用到外部工具Gawk.exe,在这里下载:
http://www.cn-dos.net/forum/viewthread.php?tid=31098&page=1#pid205571
作者: sinbao
时间: 2007-10-13 22:15
http://zhenlove.com.cn/cndos/fileup/files/gawk.rar
连接似乎失效了...
作者: zh159
时间: 2007-10-13 22:32
http://zhenlove.com.cn/cndos/
作者: lxmxn
时间: 2007-10-13 22:54
提供一个公共的邮箱:
cn_dos_public@126.com
密码:chinados
里面有gawk.rar,请下载之后不要删除了.