#!/usr/bin/perl -w use strict; # configuration bits my $pvastrumento = "/d/home/matt/.wine/fake_windows/pvastrumento 2.0.30/cmdshell/cPVAS.exe"; my $encfile = shift @ARGV; open (ENCFILE,"<$encfile"); while () { chomp; (my @data) = split("\@\@",$_); encode($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]); } close ENCFILE; sub encode { my $infile = shift; my $outfile = shift; my $vbitrate = shift; my $abitrate = shift; my $scale = shift; my $crop = shift; my $vopts = shift; my $pvas = shift; my $outbase = `/usr/bin/basename "$outfile" .avi`; chomp($outbase); my $tmpdir = "/tmp/benc.$$"; my $dostmp = "Z:\\tmp\\benc.$$"; if ($pvas eq "yes") { # do PVAstrumento stuff here mkdir $tmpdir; system ("nice","/bin/cp","$infile","$tmpdir/in.mpeg"); open (AJB,">$tmpdir/pvas.ajb"); print AJB < demux "$dostmp\\in.mpeg" "$dostmp\\out.mpv" "$dostmp\\out.mpa" # Streams to demux audio 1 video 1 # Job Parameters \$PARMS # program options loglevel 2 fixstart 1 sync 1 dropgop 1 dropwronggop 1 strongaudio 1 shortscan 1 scanseq 200 setbr 1 setvbr 1 setavg 1 adjusttc 1 packsize 0 usevdrmarks 0 splitsize 0 overlap 1 spliteven 0 splitaudioFMT 1 goppts 1 \$ENDS # end section EOText close (AJB); system ("nice","wine","$pvastrumento","$dostmp\\pvas.ajb"); unlink "$tmpdir/in.mpeg"; system ("nice","dvb-mplex","-t","MPEG2","-o","$tmpdir/out.mpg","-i","ES_STREAM","$tmpdir/out.mpa","$tmpdir/out.mpv"); unlink "$tmpdir/out.mpa"; unlink "$tmpdir/out.mpv"; $infile = "$tmpdir/out.mpg"; } my $pass = 1; while ($pass < 3) { my $cmd = "nice mencoder "; $cmd .= qq(-o "$outbase-pre.avi" ); $cmd .= "-oac copy "; $cmd .= "-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$vbitrate:$vopts:vpass=$pass "; $cmd .= "-vop scale=$scale,crop=$crop -sws 2 "; $cmd .= qq("$infile"); print "==> Running: $cmd\n"; if ($pass == 1) { unlink "frameno.avi"; unlink "dix2pass.log" } print "===> Encoding pass $pass <===\n"; system "$cmd"; $pass++; if ($pass == 3) { my $mp3cmd = "nice mencoder -ovc copy -oac mp3lame "; $mp3cmd .= qq(-lameopts cbr:br=$abitrate -o "$outfile" ); $mp3cmd .= qq("$outbase-pre.avi"); print "===> Encoding audio <===\n"; system "$mp3cmd"; unlink "$outbase-pre.avi"; } } if ($pvas eq "yes") { unlink "$tmpdir/out.mpg"; unlink "$tmpdir/pvas.ajb"; unlink "$tmpdir"; } }