F5 Zeitmarken verschieben
Das Transkriptionprogramm F5 ist ja ganz nett, aber Zeitmarken nachträglich zu verschieben, scheint nicht möglich zu sein.
Anbei ein kleines Perl-Skript, dass Abhilfe schafft.
Datei als moveMarker.pl
speichern und via perl moveMarker.pl --delta 321.5 "Textdatei des Transkripts"
ausführen um
alle Zeitstempel 5m21.5s zu verschieben.
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my $deltaTime = 0;
# Change timestamp by adding $deltaTime to the parsed time
sub moveTime($) {
my ($t) = @_;
# F5 Format: HH:MM:SS-s
my ($h, $m, $s, $ss) = ($t =~ m/([0-9]+):([0-9]+):([0-9]+)-([0-9]+)/);
my $changedTime = ($h * 3600 + $m * 60 + $s + $ss / 10) + $deltaTime;
# Back to string representation
my $changedTimeStr = sprintf("%02d:%02d:%02d-%01d",
int(abs($changedTime) / 3600),
int(abs($changedTime / 60) % 60),
int(abs($changedTime) % 60),
int(abs($changedTime * 10) % 10));
if ($changedTime >= 0) {
return $changedTimeStr;
} else {
return "-".$changedTimeStr;
}
}
GetOptions ("delta=f" => \$deltaTime)
or die(qq{Error in command line arguments\n
Moves F5 timestamps [seconds] into the future.
Usage: moveMarker.pl [--delta seconds] {txt.files}+\n});
# Process all files and stdin, keep backups as .bak files
BEGIN { $^I = ".bak"; }
while (<>) {
$_ =~ s/#([0-9:\-]+)#/("#" . moveTime($1) . "#")/ge;
print $_;
}