#!/bin/sh # # high bitrate -a224 -b6500 -q2 if it underruns # medium bitrate -a224 -b6000 -q3 if it underruns # low bitrate -a192 -b5500 -q4 if it underruns # very low bitrate -a96 -b5000 -q4 if it underruns # # quantizer values are essentially half that of mjpegtools # def_abitrate=224 def_bitrate=6000 def_interlace=2 def_ratio=2 def_quant=3 def_signal=1 def_mjpegtools=0 help(){ cat < Options: -a n Set the audio bitrate ($def_abitrate) -b n Set the bitrate ($def_bitrate) -i n n=0 progressive, n=1 top, n=2 bottom ($def_interlace) -q n minimum quantizer value ($def_quant) -r n aspect ratio, n=1 4:3, n=2 16:9 ($def_ratio) -v n Video Signal, n=1 ntsc n=2 pal ($def_signal) -j Use mjpegtools for encoding -h Print this help message END exit 0 } abitrate=$def_abitrate bitrate=$def_bitrate interlace=$def_interlace quant=$def_quant ratio=$def_ratio signal=$def_signal mjpegtools=$def_mjpegtools while getopts v:a:b:i:r:jh name "$@" do case $name in v) signal=$OPTARG ;; a) abitrate=$OPTARG ;; b) bitrate=$OPTARG ;; i) interlace=$OPTARG ;; j) mjpegtools=1 ;; q) quant=$OPTARG ;; r) ratio=$OPTARG ;; *) help ;; esac done let shiftind=$OPTIND-1 shift $shiftind if test "$#" != "1" then help fi case $1 in *.qt) input="$1" base=`echo $input | sed "s/\.qt$//"` ;; *.mov) input="$1" base=`echo $input | sed "s/\.mov$//"` ;; *.avi) input="$1" base=`echo $input | sed "s/\.avi$//"` ;; *.dv) input="$1" base=`echo $input | sed "s/\.dv$//"` ;; *.mpg) input="$1" base=`echo $input | sed "s/\.mpg$//"`-dvd ;; *) help ;; esac echo Encoding $input to $base.mpg.... case $signal in 2) Frate="-r pal" ;; *) Frate="-r ntsc" ;; esac case $interlace in 0) flags="-interlace 0" mjpegi=NOT_INTERLACED ;; 1) flags="-interlace 1 -ildct -ilme -top 1" mjpegi=INTERLACED_TOP_FIRST ;; *) flags="-interlace 1 -ildct -ilme -top 0" mjpegi=INTERLACED_BOTTOM_FIRST ;; esac case $ratio in 2) aflag="-aspect 16:9" mjpega="-a3" ;; *) aflag="-aspect 4:3" mjpega="-a2" ;; esac # To resize 16:9 NTSC to 4:3 PAL (missing aspect ratio?) # -s 800x480 -padtop 48 -padbottom 48 -cropright 40 -cropleft 40 \ # To resize 4:3 NTSC to 4:3 PAL (or 16:9 NTSC to 16:9 PAL) # -s 600x480 -padtop 48 -padbottom 48 -padleft 60 -padright 60 \ case $mjpegtools in 0) echo ffmpeg -i $input $aflag $flags $Frate -target dvd \ -qmin $quant -b $bitrate -ab $abitrate -y $base.mpg sleep 5 ffmpeg -i $input $aflag $flags $Frate -target dvd \ -qmin $quant -b $bitrate -ab $abitrate -y $base.mpg ;; *) echo using mjpegtools filter chain... ( lav2wav $input > $base.wav ; mp2enc < $base.wav -r48000 -b192 -o $base.m2a ) & ( lav2yuv $input | \ yuvcorrect -T $mjpegi | \ yuvscaler -O DVD | \ yuvdenoise -g 2,4,4 -t 6,10,10 -M 3,5,5 | \ mpeg2enc -f8 -nn $mjpega -o $base.m2v ) & wait mplex -f8 $base.m2v $base.m2a -o $base.mpg ;; esac