调srt字幕时间的小脚本
首先,我知道mplayer和很多其他播放都有个类似 -subdelay的开关,可以实现字幕和电影的时间调整。
此脚本和subdelay又部分功能交叉,但是某些特殊的时候,还是用个这个脚本方便。
我当时的是电影一个avi文件,但srt字幕却只找到分CD1和CD2的那种,前半段电影的时间和CD1对上了,但是后半段就没字幕了。
为了解决这个文件,就写了这个脚本,名为 adjsrt.sh
我当时执行了 ./adjsrt.sh 3061 cd2.srt >> cd1.srt 就把第二个字幕的时间整体加上3061秒,然后加在了第一个字幕的后面了,哈哈。
脚本如下:
#!/bin/sh offset=$1 shift awk -v offset=$offset ' BEGIN{ FS="[ :,]+" } /^[0-9][0-9]:[0-9]*/ { ST=toT($1,$2,$3)+offset; ST1=int(ST/3600); ST2=int((ST-ST1*3600)/60); ST3=ST%60; ET=toT($6,$7,$8)+offset; ET1=int(ET/3600); ET2=int((ET-ET1*3600)/60); ET3=ET%60; printf("%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\n", ST1,ST2,ST3,$4,ET1,ET2,ET3,$9); } $0 !~ /^[0-9][0-9]:[0-9]*/ { print $0 } function toT( hour, min , sec ){ return hour*3600 + min*60 + sec } ' $* |