Download source codes: Media:sub2csv.pl
After downloading, convert the file name from sub2csv.pl.txt to sub2csv.pl
#!/usr/bin/perl
while (<>) {
s/\r$//;
if (/^{([0-9]+)}{([0-9]+)}(.*)/) {
$from=$1/25;
$from_hour = int($from/3600);
$from_minute = int(($from - $from_hour*3600)/60);
$from_second = int($from - $from_hour*3600 - $from_minute*60);
$from_fraction = int(($from - $from_hour*3600 - $from_minute*60
- $from_second)*1000);
$to=$2/25;
$to_hour = int($to/3600);
$to_minute = int(($to - $to_hour*3600)/60);
$to_second = int($to - $to_hour*3600 - $to_minute*60);
$to_fraction = int(($to - $to_hour*3600 - $to_minute*60 -
$to_second)*1000);
$text=$3;
printf("%02d:%02d:%02d.%04d\t%02d:%02d:%02d.%04d\t%s\n",
$from_hour, $from_minute, $from_second, $from_fraction,
$to_hour, $to_minute, $to_second, $to_fraction,
$text);
$from='';
$to='';
$text ='';
}
}
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
$from=$1/30;
..
$to=$2/30;
Command Sample:
cat source.sub | perl sub2csv.pl > target.csv
Additional information: Typical SUB sample:
{478}{563}- Hey, guys.|- Hey.
{592}{690}Don't say that loud.|He is gonna want to hug me.
{719}{769}Good news, everyone.|We finally found him.
“|” represent the carriage return. Output sample
00:00:19.0120 00:00:22.0519 - Hey, guys.|- Hey.
00:00:23.0679 00:00:27.0600 Don't say that loud.|He is gonna want to hug me.
00:00:28.0760 00:00:30.0760 Good news, everyone.|We fina