my $ipd=4;
my $wg=shift;
unless ($wg) {die("example: film_kreis <winkelgeschwinigkeit>\n")}
my $ely=1.2;
my $xc=500;my $yc=300;my $rad=250;
my $kod="$xc-$yc-$rad-$ely-$wg";
system("date +%b >/tmp/m");open(F,"/tmp/m");my $m=<F>;close F;
chomp($m);$kod.="_$m";my $tmp="/tmp/film$kod";mkdir($tmp);
my $idx="/tmp/balkon$kod.dir";my $sr=system("ls -1R /mnt/usb/balkon_sorted >$idx");
die("\n-> USB HDD not mounted!\n") if $sr;
my $dvdx=720;my $dvdy=576;my $xl=1600-$dvdx;my $yl=1200-$dvdy;
my $wink=0;
open(F,$idx) or die;
while (<F>) {
chomp;s/:$//;
if (/^\/.+\.\d\d\d\d/) {
my @fsa=();my $fsm=0;
while (my $fn=<$_/*>) {
my $fs=filesize($fn);$fsa[$fs]=$fn if $fs>500000;
if ($fs>$fsm) {$fsm=$fs}
}
my $rc=0;my $thr=$fsm;
for (my $i=$fsm;$i>0;$i--) {
$rc++ if $fsa[$i];
if ($rc==$ipd) {$thr=$i;print "Thresh: $thr\n";last}
}
while (my $fn=<$_/*>) {
my $fs=filesize($fn);
annot($fn) if (($fs>=$thr) and ($fs>500000));
}
}
}
system("mencoder mf://$tmp/*.jpg -ovc xvid -xvidencopts fixed_quant=4:vhq=4 -o balkon$kod.avi");
system("rm -rf $tmp");
sub filesize {
my $f=shift;my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)=stat $f;return $size;
}
sub annot {
use File::Copy;my $fn=shift;
print "getting exif info for $fn\n";
system("jhead $fn >/tmp/jhead.txt");
open(F2,"/tmp/jhead.txt");
while (<F2>) {
if (/Date\/Time/) {
if (/(\d\d\d\d):(\d\d):(\d\d) (\d\d):(\d\d)/) {$dat="$3.$2.$1 $4:$5"}
}
}
close F2;
print "copying $fn to $tmp\n";copy($fn,$tmp);
$fnp=$fn;$fnp=~s/^.+\///;
my $xi=int($rad*sin($wink)*$ely)+$xc;
my $yi=int($rad*cos($wink))+$yc;
$wink-=$wg;
$c="mogrify -crop $dvdx\lx$dvdy+$xi+$yi $tmp/$fnp";
print "$c\n";system($c);
my $xa=$dvdx-200;my $ya=$dvdy-10;
$c="convert -font Helvetica -pointsize 25 -fill red -draw \"text $xa,$ya \'$dat\'\" $tmp/$fnp $tmp/$fnp";
print "$c\n";system($c);print "\n";
}