Added new target audio bitrate command line option -B 2_3
authorAlan J. Pippin <ajp@pippin.pippins.net>
Sat, 13 Feb 2010 06:52:07 +0000 (23:52 -0700)
committerAlan J. Pippin <ajp@pippins.net>
Sat, 13 Feb 2010 06:52:07 +0000 (23:52 -0700)
rip_dvd
rip_dvd.conf.dist

diff --git a/rip_dvd b/rip_dvd
index ef2fdca96ff7b04a5b2529465d3a85aec93d73d0..e025e5705863918c5c9526adf4d48600c5eed8ea 100755 (executable)
--- a/rip_dvd
+++ b/rip_dvd
@@ -53,14 +53,16 @@ typeset -i make_final_dest_comp=0
 typeset -i errors=0
 typeset -i show_usage=0
 typeset -i mirror_mode=0
-typeset -i target_bitrate=2000
+typeset -i target_video_bitrate=2000
+typeset -i target_audio_bitrate=224
 typeset -i target_size=0
 typeset -i audio_2ch=0
 typeset -i audio_6ch=1
 typeset -i invalid_feature_title=0
 typeset -i feature_title_override=0
 typeset -i mplayer_dumpstream_incompatibility=0
-typeset -i custom_bitrate=0
+typeset -i custom_video_bitrate=0
+typeset -i custom_audio_bitrate=0
 typeset -i custom_audio_2ch=0
 typeset -i custom_audio_6ch=0
 
@@ -98,12 +100,13 @@ fi
 ##############################################################################################
 # Command line processing
 ##############################################################################################
-while (($#)) && getopts 162wmvifkzx:ht:n:d:b:s:t:a:p:e:j:l:r: opt "$@"
+while (($#)) && getopts 162wmvifkzx:ht:n:d:b:B:s:t:a:p:e:j:l:r: opt "$@"
 do
     case $opt in
         (n)     dvdname=$OPTARG;;
         (d)     dest=$OPTARG;;
-        (b)     target_bitrate=$OPTARG; custom_bitrate=1;;
+        (b)     target_video_bitrate=$OPTARG; custom_video_bitrate=1;;
+        (B)     target_audio_bitrate=$OPTARG; custom_audio_bitrate=1;;
        (s)     target_size=$OPTARG;;
         (2)     audio_2ch=1; custom_audio_2ch=1;;
         (6)     audio_6ch=1; custom_audio_6ch=1;;
@@ -166,7 +169,8 @@ function usage() {
     echo >&2 "   -e <encoder>  Specify the encoder to use to make the compressed file (valid encoders=mencoder|handbrake) (default=handbrake if found)"
     echo >&2 "                 You must also specify the target size or bitrate using the '-s' or '-b' options with xvid profiles"
     echo >&2 "   -s <size>     Set the target size of the compressed file in MB (ex: 700, 1000, etc)"
-    echo >&2 "   -b <bitrate>  Set the bitrate desired in the compressed file in kbits/sec (ex: 1500, 2000 (default), etc)"    
+    echo >&2 "   -b <bitrate>  Set the video bitrate desired in the compressed file in kbits/sec (ex: 1500, 2000 (default), etc)"    
+    echo >&2 "   -B <bitrate>  Set the audio bitrate desired in the compressed file in kbits/sec (ex: 96, 128, 160, 224 (default), 300, etc)"    
     echo >&2 "   -a <W:H>      Specify the width x height aspect ratio to scale the DVD to (only used in -z mode)"
     echo >&2 "      <W>        If only the width is given, it will autoset the height to a value which preserves the aspect ratio"
     echo >&2 "                 The default behavior is autoaspect mode, which preserves the original aspect, with no scaling being done"
@@ -212,7 +216,7 @@ if ([ $target_size -ne 0 ] || [ "$aspect" != "" ]) && [ $make_final_dest_comp -n
   usage
 fi
 
-if [ $target_bitrate -eq 0 ] && [ $target_size -eq 0 ] && [ $make_final_dest_comp -eq 1 ]; then
+if [ $target_video_bitrate -eq 0 ] && [ $target_size -eq 0 ] && [ $make_final_dest_comp -eq 1 ]; then
   echo "-E- You must specify a bitrate in compressed file mode. You must specify '-b' or '-s' when using '-z'" | tee -a $logfile
   usage
 fi
@@ -471,6 +475,7 @@ function encode_vob_file_handbrake {
   typeset handbrake_audio_opts=""
   typeset hb_profile=""
   typeset SIZE=""
+  typeset AUDIO_BITRATE=""
 
   # Set a variable that we will use later to determine if we found a handler for $profile or not
   typeset -i found_profile=0    
@@ -487,8 +492,10 @@ function encode_vob_file_handbrake {
     SIZE="-S $target_size"
   fi 
 
-  # Check the global force_onepass_mode. If it is set, change our variables appropriately
-  # to force 1-pass encoding across all profiles.
+  if [ $custom_audio_bitrate -eq 1 ]; then
+    AUDIO_BITRATE="-B $target_audio_bitrate"
+  fi
+
   if [ $force_onepass_mode -eq 1 ]; then
     PASSES=""
   fi
@@ -506,7 +513,7 @@ function encode_vob_file_handbrake {
     # Very High Quality (16fps)
     if [ "$profile" == "xvidvhq" ]; then
       handbrake_opts[0]="-f avi"
-      handbrake_opts[1]="-b $target_bitrate"
+      handbrake_opts[1]="-b $target_video_bitrate"
       handbrake_opts[2]="-e xvid"
       handbrake_opts[3]="-T"
       handbrake_opts[4]="-5"
@@ -515,7 +522,7 @@ function encode_vob_file_handbrake {
     # High Quality (20fps)
     if [ "$profile" == "xvidhq" ]; then
       handbrake_opts[0]="-f avi"
-      handbrake_opts[1]="-b $target_bitrate"
+      handbrake_opts[1]="-b $target_video_bitrate"
       handbrake_opts[2]="-e ffmpeg"
       handbrake_opts[3]="-T"
       handbrake_opts[4]="-5"
@@ -523,7 +530,7 @@ function encode_vob_file_handbrake {
     # Fast (28fps)
     if [ "$profile" == "xvid" ]; then
       handbrake_opts[0]="-f avi"
-      handbrake_opts[1]="-b $target_bitrate"
+      handbrake_opts[1]="-b $target_video_bitrate"
       handbrake_opts[2]="-e ffmpeg"
       handbrake_opts[3]="-T"
     fi
@@ -537,8 +544,8 @@ function encode_vob_file_handbrake {
     PASSES=""
 
     # Handle custom parameter overrides
-    if [ $custom_bitrate == 1 ]; then
-      handbrake_opts[0]="-b $target_bitrate"
+    if [ $custom_video_bitrate == 1 ]; then
+      handbrake_opts[0]="-b $target_video_bitrate"
     fi
     if [ $custom_audio_2ch == 0 ]; then
       audio_2ch=0
@@ -569,8 +576,8 @@ function encode_vob_file_handbrake {
     PASSES=""
 
     # Handle custom parameter overrides
-    if [ $custom_bitrate == 1 ]; then
-      handbrake_opts[0]="-b $target_bitrate"
+    if [ $custom_video_bitrate == 1 ]; then
+      handbrake_opts[0]="-b $target_video_bitrate"
     fi
     if [ $custom_audio_2ch == 0 ]; then
       audio_2ch=0
@@ -598,8 +605,8 @@ function encode_vob_file_handbrake {
     PASSES=""
 
     # Handle custom parameter overrides
-    if [ $custom_bitrate == 1 ]; then
-      handbrake_opts[0]="-b $target_bitrate"
+    if [ $custom_video_bitrate == 1 ]; then
+      handbrake_opts[0]="-b $target_video_bitrate"
     fi
     if [ $custom_audio_2ch == 0 ]; then
       audio_2ch=0
@@ -648,6 +655,7 @@ function encode_vob_file_handbrake {
   handbrake_cmd_line_opts="$handbrake_cmd_line_opts $DRC"
   handbrake_cmd_line_opts="$handbrake_cmd_line_opts $SCALE"
   handbrake_cmd_line_opts="$handbrake_cmd_line_opts $SIZE"
+  handbrake_cmd_line_opts="$handbrake_cmd_line_opts $AUDIO_BITRATE"
 
   # Execute the handbrake command to encode the video
   # I have to copy-n-paste the code below to handle the 2 conditions, 1) hb_profile (mp4) 2) no hb_profile (xvid)
@@ -705,7 +713,7 @@ function encode_vob_file_mencoder {
 
     # Very High Quality (16fps)
     if [ "$profile" == "xvidvhq" ]; then
-      video_encoder_opts[0]="bitrate=$target_bitrate"
+      video_encoder_opts[0]="bitrate=$target_video_bitrate"
       video_encoder_opts[1]="threads=$mencoder_threads"
       video_encoder_opts[2]="chroma_opt"
       video_encoder_opts[3]="vhq=4"
@@ -715,7 +723,7 @@ function encode_vob_file_mencoder {
     fi
     # High Quality (20fps)
     if [ "$profile" == "xvidhq" ]; then
-      video_encoder_opts[0]="bitrate=$target_bitrate"
+      video_encoder_opts[0]="bitrate=$target_video_bitrate"
       video_encoder_opts[1]="threads=$mencoder_threads"
       video_encoder_opts[2]="chroma_opt"
       video_encoder_opts[3]="vhq=2"
@@ -725,7 +733,7 @@ function encode_vob_file_mencoder {
     fi
     # Fast (28fps)
     if [ "$profile" == "xvid" ]; then
-      video_encoder_opts[0]="bitrate=$target_bitrate"
+      video_encoder_opts[0]="bitrate=$target_video_bitrate"
       video_encoder_opts[1]="threads=$mencoder_threads"
       video_encoder_opts[2]="vhq=0"
       video_encoder_opts[3]="turbo"
@@ -745,7 +753,7 @@ function encode_vob_file_mencoder {
       mencoder_audioch_opts[2]=""
     else
       # These options produce good 2 channel audio for linux and windows (including the internal mythvideo player)
-      mencoder_audio_opts="-oac mp3lame -lameopts cbr:br=$audio_bitrate"
+      mencoder_audio_opts="-oac mp3lame -lameopts cbr:br=$target_audio_bitrate"
       mencoder_audioch_opts[0]=""
     fi
  
@@ -772,7 +780,7 @@ function encode_vob_file_mencoder {
     mencoder_output_opts="-ofps 30000/1001 -sws 9 -of lavf -lavfopts format=mp4"
     mencoder_video_filter_opts="-vf harddup$CROP$SCALE";
     mencoder_video_encoder_opts="-ovc x264 -x264encopts $pass_opt"
-    video_encoder_opts[0]="bitrate=$target_bitrate"
+    video_encoder_opts[0]="bitrate=$target_video_bitrate"
     video_encoder_opts[1]="threads=$mencoder_threads"
     video_encoder_opts[2]="vbv_maxrate=1500"
     video_encoder_opts[3]="vbv_bufsize=2000"
@@ -789,7 +797,7 @@ function encode_vob_file_mencoder {
       mencoder_video_encoder_opts="$mencoder_video_encoder_opts:$OPTS"
     done
 
-    mencoder_audio_opts="-oac faac -faacopts mpeg=4:object=2:br=$audio_bitrate:raw"
+    mencoder_audio_opts="-oac faac -faacopts mpeg=4:object=2:br=$target_audio_bitrate:raw"
     mencoder_audioch_opts[0]="-channels 2 -srate 48000"
   fi
 
@@ -1241,9 +1249,9 @@ function calculate_bitrate_from_target_size {
   # determine what our bitrate needs to be if a target size was specified instead
   if [ $target_size -ne 0 ]; then
     vob_length=`mplayer -identify -v "$vobfile" -endpos 0 2>&1 | grep ID_LENGTH | awk -F '=' '{ print $2 }' | awk -F '.' '{ print $1 }'`
-    ((target_bitrate = (target_size * 1024 * 8) / vob_length ))
-    custom_bitrate=1
-    echo "   With a given target size of $target_size MB, the estimated bit rate will need to be $target_bitrate kbits/sec"
+    ((target_video_bitrate = (target_size * 1024 * 8) / vob_length ))
+    custom_video_bitrate=1
+    echo "   With a given target size of $target_size MB, the estimated bit rate will need to be $target_video_bitrate kbits/sec"
   fi
 }
 
index 53949a33d4a19431215877a2457834cbbfb71ded..4b15b7175095be47b60172ffd38508598dc3a0c9 100644 (file)
@@ -33,9 +33,6 @@ PATH=/etc/mythtv/bin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/usr/share/tovid:.:
 # If this is set to 0, other methods will be employed to get the DVD VOB dump.
 use_mplayer_dumpstream=1
 
-# 2-channel AVI encoding audio bit rate
-audio_bitrate=224
-
 # If set to 1, this script will call another script to fill in the mythvideo metadata
 # If you don't use mythtv, set this option to 0. If you use mythtv, and have downloaded
 # the fill_mythvideo_metadata.pl script shown above, you can leave this option set to 1.