Download source codes: Media:srt2sub.pl. After downloading, convert the file name from srt2sub.pl.txt to srt2sub.pl
#!/usr/bin/perl
while (<>) {
s/\r$//;
next if /^\d+$/;
if (/^(\d\d):(\d\d):(\d\d),(\d\d\d) --> (\d\d):(\d\d):(\d\d),(\d\d\d)/) {
$from=(($1*60)+$2)*60+$3+$4/1000.0;
$to=(($5*60)+$6)*60+$7+$8/1000.0;
} elsif (/^(.*\S)\s*$/) {
if ($text eq '') {
$text=$1;
} else {
$text .= "|" . $1;
}
} elsif (/^\s*$/) {
if ($from ne '' && $to ne '' && $text ne '') {
print "{", int(25*$from), "}{", int(25*$to), "}", $text, "\n";
}
$from='';
$to='';
$text ='';
}
}
if ($from ne '' && $to ne '' && $text ne '') {
print "{", int(25*$from), "}{", int(25*$to), "}", $text, "\n";
}
Usage: If the source frame rate is not 25 frames/sec, then you should change two lines in the code. For instance, if your source media has 30 frames/sec then Change two lines from
print “{”, int(25*$from), “}{”, int(25*$to), “}”, $text, “\n”
to
print “{”, int(30*$from), “}{”, int(30*$to), “}”, $text, “\n”
Command Sample:
cat source.srt | perl srt2sub.pl > target.sub
Typical SRT sample:
5
00:00:13,612 --> 00:00:14,647 X1:269 X2:447 Y1:482 Y2:524
What's up?
Output sample
{340}{366}What's up?