#!/bin/bash ########################################################################### # Simple mencoder script for ripping DVD's # # by listman@nerdherdclan.com with help from S1nned # # scripting help from goldfish and r00t|viao at #bash on irc.freenode.net # ########################################################################### ########################################################################### # All mencoder commands have been setup in the following format. # # If there is any reason this should be changed please let me know. # # if there isn't please keep the same format if you edit the script. # # this will make it easier for others to edit the script later. # # mencoder $SOURCE -aid 128 (video title track & audio track) # # -oac format options (audio format & options) # # -ovc format -options (video format & options) # # -o "$STORE/$TITLE".avi (output file) # # If the oac is set to lavc then the options will be in the video options # # You must have a value for store and aid or this script will not work # Path to save file in eg. /home/%username STORE="/home/videos" AID="128" # You can use the following to set your custom function. # Ill add more options later that will be based on what you # choose for oac and ovc #SCALE eg 720:480 640:480 not in script SCALE="720:480" # Ratio 4/3 - 16/9 - autoaspect not in script RATIO="16/9" # Audio Bitrate - not in script ABRATE="128" # File extention - do not include the . # (can set the format if useing lavc) TYPE="avi" ### oac options audio codec - OAC="lavc" ### ovc - options video codec - OVC="lavc" ### -of container format - not in script yet OF="mpeg" ### -of lavc container format - not in script yet # OFLCF="mpg" # not needed, set by file extention ## Functions - please do not edit the standard functions. ## There is a functions called Custom for you below ########################################################################### # 2 pass mpeg4 video w/ lame ---- EXTRA NEED TO REPLACE crop can be used # anywhere now MPEG4 () { mencoder "dvd://$TRACK" -aid 128 \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \ -oac mp3lame -lameopts vbr=3:vol=8 -mc 0 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## 2 pass + crop detect mpeg4 video w/ lame MPEG42 () { mencoder "dvd://$TRACK" -aid "$AID" \ -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \ -oac mp3lame -lameopts vbr=3:vol=6 -mc 0 \ -o /dev/null mencoder "dvd://$TRACK" -aid "$AID" \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -vf "$CROP" \ -oac mp3lame -lameopts vbr=3:vol=6 -mc 0 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## Good quality-large file-short encode time. NTSC_DVD () { mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac lavc \ -ovc lavc -of mpeg -mpegopts format=dvd -vf "$CROP",scale=720:480,harddup \ -srate 48000 -af volume=8:lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\ vrc_maxrate=9800:vbitrate=2900:keyint=18:aspect=16/9:acodec=ac3:abitrate=192 \ -ofps 30000/1001 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## NOT TESTED DVD2 () { mencoder "dvd://$TRACK" -aid "$AID" \ -oac lavc \ -ovc lavc -lavcopts vpass=1 \ -o /dev/null mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac lavc \ -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ -vf "$CROP",scale=720:480,harddup -srate 48000 -af volume=8:lavcresample=48000 \ -lavcopts vpass=2 vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=2900:\ keyint=18:vstrict=0:acodec=ac3:abitrate=192:autoaspect -ofps 30000/1001 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## NOT TESTED NTSC_SVCD () { mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac lavc \ -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ "$CROP",scale=480:480,harddup -srate 44100 -af volume=8:lavcresample=44100 -lavcopts \ vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\ keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## NOT TESTED SVCD2 () { mencoder "dvd://$TRACK" -aid "$AID" \ -oac lavc \ -ovc lavc -of mpeg -lavcopts vpass=1 \ -o /dev/null mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac lavc \ -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ "$CROP",scale=480:480,harddup -srate 44100 -af volume=8:lavcresample=44100 -lavcopts vpass=2 \ vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\ keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## NOT TESTED NTSC_VCD () { mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac lavc \ -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ "$CROP",scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\ vbitrate=2152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \ -o "$STORE/$TITLE".mpg echo exit 0 } ########################################################################### ## LONG encoding time but almost ##DVD quality and smaller file XVID () { mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac mp3lame -lameopts br=92:vol=9 \ -ovc xvid -xvidencopts fixed_quant=3 -vf "$CROP" \ -o "$STORE/$TITLE".avi echo exit 0 } ########################################################################### # Longer encode time than XViD But files are 1/2 the size XVID2 () { mencoder "dvd://$TRACK" -aid "$AID" \ -mc 0 -oac mp3lame -lameopts br=92:vol=9 \ -ovc xvid -xvidencopts autoaspect:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg:\ qpel:turbo:max_bframes=2:threads=2:bitrate=600 -vf "$CROP",scale=528:320 \ -o "$STORE/$TITLE".avi echo exit 0 } ########################################################################### CUSTOM () { mencoder "dvd://$TRACK" -aid "$AID" \ -oac $OAC \ -ovc $OVC \ -o "$STORE/$TITLE"."$TYPE" echo exit 0 } ##################### END FUNCTIONS ###################################### echo "Kick back for a sec, I have to grab some info" sleep 2 TITLE="$(lsdvd | awk '/Disc/ {print $3}')" TRACK="$(lsdvd | awk '/Longest/ {print $3}')" mencoder "dvd://$TRACK" -oac lavc -ovc lavc -vf cropdetect -o /dev/null > /tmp/cropdetect & PID=$!; sleep 15; kill "$PID" CROP="$( awk '/-vf/{moo=$19} END{sub(").","", moo); print moo}' /tmp/cropdetect )" clear echo echo " I am going to be writing to $STORE" echo echo "The Title has been set to $TITLE" echo echo "The longest track is track $TRACK" echo echo "and here is what crop detect gave us "$CROP"" sleep 5 case "$1" in mpeg4) MPEG4 ;; mpeg42) MPEG42 ;; dvd) NTSC_DVD ;; dvd2) DVD2 ;; svcd) NTSC_SVCD ;; svcd2) SVCD2 ;; vcd) NTSC_VCD ;; xvid) XVID ;; xvid2) XVID2 ;; custom) CUSTOM ;; *) echo echo "You didn't specify anything so lets do that now" ;; esac echo echo "If you know what you want to rip you can just" echo "type ripit format - like ripit dvd or ripit svcd" echo echo "Would you like to change the Title : (yes/no)" read TCHANGE case $TCHANGE in y|yes) echo "please enter a Title Name: " read TITLE ;; n|no) echo ;; *) echo "Im sorry I dont understand that selection" exit 1 ;; esac echo clear echo "############################################" echo "############################################" echo "## ##" echo "## Please select from the following menu ##" echo "## which format you would like to try ##" echo "## ##" echo "############################################" echo "############################################" echo " 1) MPEG4 should work not used yet" echo " 2) MPEG4 2pass should work not used yet" echo " 3) NTSC DVD 1 hr 3-5GB dvd quality" echo " 4) NTSC DVD 2 pass 2 hr 3-5GB dvd quality" echo " 5) NTSC SVCD 1 hr 800MB ok quality " echo " 6) NTSC SVCD 2 pass 1.5 hr 800MB ok quality" echo " 7) NTSC VCD 45min 600MB bad quality" echo " 8) XVID 1.5GB 2 hrs almost dvd quality" echo " 9) XVID-2 800mb 3 hrs good quality" echo " 10) CUSTOM" read CHOICE case "$CHOICE" in "1" ) mpeg4 ;; "2" ) mpeg42 ;; "3" ) NTSC_DVD ;; "4" ) DVD2 ;; "5" ) NTSC_SVCD ;; "6" ) SVCD2 ;; "7" ) NTSC_VCD ;; "8" ) XVID ;; "9" ) XVID2 ;; "10" ) CUSTOM ;; *) echo " You didnt select anything so we are all done here" echo " please try again after you wake up" exit 1 ;; esac exit 0