rendered paste body#!/bin/bashecho -e "palmrest 0.2\r"echo -e "-----\r"echo -e "This script takes in a HandBrakeCLI command, a quality percentage, and\r"echo -e "a stats file name. From those, it executes a CRF pass, then uses the\r"echo -e "statistics from that to do a(n) ABR pass(es). The bitrate of the ABR\r"echo -e "pass(es) is taken from the output bitrate of the CRF rip.\r"echo -e "-----\r"#Enable interactive mode if the arguments weren't provided by the userif [ -z "$1" ]then echo -e "\n* Choose a workflow\r" echo -e " (just enter the number for the one you want to use):\r" echo -e "* 1: 1 CRF, 1 ABR (fastest)\r" echo -e "* 2: 1 CRF, 2 ABR (needlessly slow)\r" echo -e "* 3: 1 CRF linked to 2 ABR (most precise)\r" read WORKFLOW echo -e "\n* Enter a HandBrake command and hit return:\r" echo -e " (omit bitrate/quality and output destination)\r" read HBCOMMAND echo -e "\n* Provide a quality in decimal form:\r" echo -e " (1% is 0.01, 75% is 0.75)\r" read QUALITY echo -e "\n* Input a base name for the files.\r" echo -e " (on the desktop, in /tmp, and the output movie)\r" read BASENAME echo -e "\n* Where should the output movie go?\r" echo -e " (default: $HOME/Movies)\r" read DESTINATION echo -e "\n* Any extra x264 options?\r" read X264OPTIONSelse HBCOMMAND="$1" QUALITY="$2" BASENAME="$3" DESTINATION="$4" WORKFLOW="$5" X264OPTIONS="$6" #When the user doesn't specify a workflow at the prompt, use the fastest if [ "$5" == "" ] then echo -e "\rUsing default workflow: 1 CRF, 1 ABR\r" WORKFLOW="1" fifi#These options will be applied to the first pass(es) to double the speed at minimal bitrate increase.TURBO="subme=1:me=dia:trellis=0:analyse=none"echo -e "\n Well, here's what I've got...\r"echo -e "-----\r"echo -e "WORKFLOW: $WORKFLOW\r"echo -e "HBCOMMAND: $HBCOMMAND\r"echo -e "QUALITY: $QUALITY\r"echo -e "BASENAME: $BASENAME\r"echo -e "USERNAME: $USER\r"echo -e "X264OPTIONS: $X264OPTIONS\r"echo -e "TURBO: $TURBO\r"echo -e "\nPASS 1: $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -q $QUALITY -Q -a none -x $X264OPTIONS:$TURBO:pass=1:stats=$HOME/Desktop/$BASENAME.stats"echo -e "\nOkay, starting the jobs now.\r"echo -e "-----\r"if [ "$WORKFLOW" == "1" ]then echo -e "\rMODE 1: 1 CRF, 1 ABR (fastest)\r" ###### 1 CRF, 1 ABR ####### ##### (good, fast) ####### ((($HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -q $QUALITY -a none -x $X264OPTIONS:$TURBO:pass=1:stats=$HOME/Desktop/$BASENAME.stats) 3>&1 1>&2 2>&3 | tee /tmp/$BASENAME.log) 3>&1 1>&2 2>&3) echo -e "PASS 2: $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -x $X264OPTIONS:pass=2:stats=$HOME/Desktop/$BASENAME.stats" $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -x $X264OPTIONS:pass=2:stats=$HOME/Desktop/$BASENAME.stats elif [ "$WORKFLOW" == "2" ]then echo -e "\rMODE 2: 1 CRF, 2 ABR (needlessly slow)\r" ###### 1 CRF, 2 ABR ####### ##### (better, slow) ##### ((($HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -q $QUALITY -a none -x $X264OPTIONS:$TURBO) 3>&1 1>&2 2>&3 | tee /tmp/$BASENAME.log) 3>&1 1>&2 2>&3) echo -e "PASS 2: $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -2 -x $X264OPTIONS" $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -2 -x $X264OPTIONS elif [ "$WORKFLOW" == "3" ]then echo -e "\rMODE 3: 1 CRF linked to 2 ABR (most precise)\r" ###### 1 CRF, 2 ABR, n-pass ####### ########## (best, slow) ########## ((($HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -q $QUALITY -a none -x $X264OPTIONS:$TURBO:pass=1:stats=$HOME/Desktop/$BASENAME.stats) 3>&1 1>&2 2>&3 | tee /tmp/$BASENAME.log) 3>&1 1>&2 2>&3) echo -e "PASS 2: $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a none -x $X264OPTIONS:$TURBO:pass=3:stats=$HOME/Desktop/$BASENAME.stats" $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a none -x $X264OPTIONS:$TURBO:pass=3:stats=$HOME/Desktop/$BASENAME.stats echo -e "PASS 3: $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -x $X264OPTIONS:pass=2:stats=$HOME/Desktop/$BASENAME.stats" $HBCOMMAND -o $DESTINATION/$BASENAME.mp4 -b $(cat /tmp/$BASENAME.log | grep kb/s:*| awk '{print $NF}' | awk -F\: '{print $2}') -a 1 -x $X264OPTIONS:pass=2:stats=$HOME/Desktop/$BASENAME.statsfi