[MPlayer-users] Script

Meino Christian Cramer Meino.Cramer at gmx.de
Mon Jul 19 09:47:48 CEST 2004


Hi,

 for those, who are interested in it...

 This script a prelimanary draft! Use at your own risk!!!!

 Keep hacking!
 Meino


#!/bin/sh
# ----------------------------------------------------------------------

# Language settings
export AID=129
export ALANG=de

# Size of target media: Uncomment the wanted size
# export TARGETSIZE=650    # 1 CD
export TARGETSIZE=700    # 1 CD
# export TARGETSIZE=800    # 1 CD
# export TARGETSIZE=1300   # 2 CD
# export TARGETSIZE=1400   # 2 CD
# export TARGETSIZE=1600   # 2 CD


# Your options to be given to lame
# stereo
export LAMEOPTS=mode=0:vbr=2:q=7
# mono
# export LAMEOPTS=mode=3:vbr=2:q=7

# Position and duration of the preview of encoding -- audio will be
# out of sync. This is OK
# Format hh:mm:ss
export PREVIEWSTART="00:01:00"
export PREVIEWDURATION="00:04:00"


# Your general options to mencoder
export OPTS="-vfm ffmpeg -vf denoise3d=0:0:0:hqdn3d=0:255:0:crop=696:576:14:0 -mc 0 -noskip -skiplimit 0"

# Your general options to ffmpeg/lavc
# color
export LAVOPTS=cbp:psnr:mbd=2:vcodec=mpeg4:vpass=#PASS#:vbitrate=#BITRATE#:autoaspect:trell:qpel   
# grayscaled
#export LAVOPTS=cbp:psnr:mbd=2:gray:vcodec=mpeg4:vpass=#PASS#:vbitrate=#BITRATE#:autoaspect:trell:qpel   

# ----------------------------------------------------------------------
# ========= NO USER CONFIGURABLE PARTS BEYOND THIS LINE ================
# ----------------------------------------------------------------------

export scriptstart=`date`

case $TARGETSIZE in
    650   ) export TARGET="Recommended video bitrate for 650MB"     ;;
    700   ) export TARGET="Recommended video bitrate for 700MB"     ;;
    800   ) export TARGET="Recommended video bitrate for 800MB"     ;;
    1300  ) export TARGET="Recommended video bitrate for 2 x 650MB" ;;
    1400  ) export TARGET="Recommended video bitrate for 2 x 700MB" ;;
    1600  ) export TARGET="Recommended video bitrate for 2 x 800MB" ;;
    *     ) echo "# ERR: Setup invalid! Check TARGETSIZE!"; exit 1  ;;
esac

export TIMESLICE="-ss $PREVIEWSTART -endpos $PREVIEWDURATION"


NO_ARGS=0 
E_OPTERROR=65

if [ $# -eq "$NO_ARGS" ]  
then
  echo "Usage: `basename $0` [-p [0-2]][-o outfile] [-t] -d <dir with video files>"
  exit $E_OPTERROR
fi  


export TS=""
export OFILEN="test.avi"
export MODE="-w"
export PASS=""
export MONO=""

while getopts "p:d:to:" Option
do
  case "$Option" in
    t     ) TS=$TIMESLICE; MODE="+w"           ;; # activate test mode
    d     ) VOBDIR=$OPTARG                     ;; # set directory w/ video
    o     ) OFILEN=$OPTARG                     ;; # set ouput filename
    p     ) PASS=$OPTARG                       ;; # activate a single pass
    *     ) echo "Unimplemented option chosen.";; # break on nonsense
  esac
done

if [ -f $OFILEN ]
then
    if [ ! -w $OFILEN ]
    then
        echo
        echo "Target file already exists!"
        echo "Aborting..."
        Echo
        exit 1
    fi
fi

if [ ! -d $VOBDIR ]    
then
    echo
    echo "Directory with video files not existing:" $VOBDIR
    echo "Aborting..."
    echo
    exit 1
fi

case $PASS in
    0 ) PASS0=truee; PASS1=false PASS2=false ;;
    1 ) PASS0=false; PASS1=true; PASS2=false ;;
    2 ) PASS0=false; PASS1=false; PASS2=true ;;
    * ) PASS0=true; PASS1=true; PASS2=true  ;;
esac    


OPTS="-o $OFILEN $OPTS"

if [ $PASS0 == true ]
then
    if [ -f frameno.avi ]
    then
        if [ ! -f PASS0.log ]
        then
            echo
            echo "# ERR: Audio file exists, but no logfile of PASS0 found...Aborting!"
            echo
            exit 1
        fi  
    else
        touch AUDIO.log
        echo
        echo -n "Extracting audio channel data ..."
        echo "----------------------------------------------------------------------" >> AUDIO.log
        echo "cat <video> | mencoder -ovc frameno -oac mp3lame -lameopts $LAMEOPTS  -alang $ALANG -aid $AID -o frameno.avi - " >> AUDIO.log
        echo "----------------------------------------------------------------------" >> AUDIO.log
        rxvt -title "### EXTRACTING AUDIO: PASS 0 ###" -e tail --follow=name AUDIO.log &
        cat $VOBDIR/*.vob | mencoder -ovc frameno -oac mp3lame -lameopts ${LAMEOPTS}  -alang $ALANG -aid $AID -o frameno.avi - >> AUDIO.log 2>&1
        mv AUDIO.log PASS0.log
        echo "...done"
    fi
fi

export BITRATE=`grep "$TARGET" PASS0.log | sed  's#.*\([0-9]\{4\}\)$#\1#'`
echo $BITRATE > bitrate.log

export LAVOPTS=`echo $LAVOPTS | sed 's|#BITRATE#|'$BITRATE'|'`
export PASS1LAVOPTS=`echo $LAVOPTS | sed 's|#PASS#|1|'`
export PASS2LAVOPTS=`echo $LAVOPTS | sed 's|#PASS#|2|'`


if [ $PASS1 == true ]
then
    echo -n "Extracting pass 1 of video..."
    touch PASScur1.log
    echo "----------------------------------------------------------------------" >> PASScur1.log
    echo "OPTIONS: cat <video> | mencoder $OPTS $TS -oac copy -ovc lavc -lavcopts $PASS1LAVOPTS -" >> PASScur1.log 
    echo "----------------------------------------------------------------------" >> PASScur1.log
    rxvt -title "### EXTRACTION VIDEO: PASS 1 ###" -e tail --follow=name PASScur1.log &
    (( cat $VOBDIR/*.vob | \
    mencoder $OPTS $TS -oac copy \
    -ovc lavc \
    -lavcopts ${PASS1LAVOPTS} - ) >> PASScur1.log 2>&1)
    mv PASScur1.log PASS1.log
    echo "...done"
fi

if [ $PASS2 == true ]
then
    echo -n "Extracting pass 2 of video..."
    touch PASScur2.log
    echo "----------------------------------------------------------------------" >> PASScur2.log
    echo "OPTIONS: cat <video> | mencoder $OPTS $TS -oac copy -ovc lavc -lavcopts $PASS2LAVOPTS -" >> PASScur2.log 
    echo "----------------------------------------------------------------------" >> PASScur2.log
    rxvt -title "### EXTRACTION VIDEO: PASS 2 ###"  -e tail --follow=name PASScur2.log &
    (( cat $VOBDIR/*.vob | \
    mencoder $OPTS $TS -oac copy \
    -ovc lavc \
    -lavcopts   ${PASS2LAVOPTS} - ) >> PASScur2.log 2>&1) 
    mv PASScur2.log PASS2.log
    echo "...done"
fi

chmod $MODE $OFILEN

export scriptend=`date`


echo
echo
cat PASS2.log | tail -1
echo "mencoder $OPTS $TS -oac copy -ovc lavc -lavcopts $PASS2LAVOPTS -" >> results.txt
cat PASS2.log | tail -1 >> results.txt
ls -l $OFILEN >> results.txt
echo "Started: $scriptstart / Ended: $scriptend" >> results.txt
echo "----------------------------------------------------------------------" >> results.txt
echo
echo
echo "--- FINISHED ---"




More information about the MPlayer-users mailing list