#!/bin/bash INPUT="$1" RESOLUTION="$3" SEPARATE="$4" TITLES=0 OPTS_HIGHRES="-e x264 -q 20.0 -r 29.97 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -4 -X 1024 --strict-anamorphic -m" OPTS_LOWRES="-e x264 -q 20.0 -a 1 -E faac -B 128 -6 dpl2 -R 48 -D 0.0 -f mp4 -X 480 -m -x cabac=0:ref=2:me=umh:bframes=0:subme=6:8x8dct=0:trellis=0" OPTS_SOURCE="-e x264 -q 20.0 -a 1,1 -E faac,ac3 -l 576 -B 160,160 -6 dpl2,auto -R Auto,Auto -D 0.0,0.0 -f mp4 --detelecine --decomb --strict-anamorphic -m -x b-adapt=2:rc-lookahead=50" MODE="" HANDBRAKE=HandBrakeCLI DIRNAME=`dirname "$INPUT"` BASENAME=`basename "$INPUT"` OPTS="" OUTPUT_DIR="$2" OUTPUT_FILE_NAME="" if [ -z "$INPUT" ] then echo "usage $0 " echo echo "Input either file, VIDEO_TS directory or .ISO" echo echo -e "highres:\t1024 x 576" echo -e "lowres:\t\t480 x 320" echo -e "source:\t\tsame as source." echo echo -e "separate:\tseparate files for episodes of a serie." exit 1 fi if [ ! -z "$OUTPUT_DIR" ] then if [ ! -e "$OUTPUT_DIR" ] || [ ! -d "$OUTPUT_DIR" ] then echo "Output directory does not exist or is not a directory." exit 1 fi else echo "Output to current directory." OUTPUT_DIR="." fi if [ ! -e "$INPUT" ] then echo "$INPUT does not exist!" exit 1 fi if [ -d "$INPUT" ] then MODE=DIR else MODE=FILE fi echo "Input type is $MODE" case "$RESOLUTION" in highres|HIGHRES ) OPTS="$OPTS_HIGHRES" ;; lowres|LOWRES ) OPTS="$OPTS_LOWRES" ;; source|SOURCE ) OPTS="$OPTS_SOURCE" ;; *) echo "Resolution must be 'highres', 'source' or 'lowres'." exit 1 ;; esac function titles () { TITLES=`./$HANDBRAKE -t 0 -i "$INPUT" 2>&1 | grep "+ title" | awk '{ print $3 }' | sed s/://g` echo $TITLES } if [ "$MODE" = "FILE" ] then mkdir -p "$OUTPUT_DIR/$DIRNAME" OUTPUT_FILE_NAME="$OUTPUT_DIR/$DIRNAME/${BASENAME%.*}" elif [ "$MODE" = "DIR" ] then echo "$INPUT" | grep -i video_ts >> /dev/null 2>&1 if [ "$?" = "0" ] then INTERMEDIATE2=`basename "$DIRNAME"` mkdir -p "$OUTPUT_DIR/$DIRNAME" OUTPUT_FILE_NAME="$OUTPUT_DIR/$DIRNAME/$INTERMEDIATE2" else INTERMEDIATE2="$BASENAME" mkdir -p "$OUTPUT_DIR/$DIRNAME/$INTERMEDIATE2" OUTPUT_FILE_NAME="$OUTPUT_DIR/$DIRNAME/$INTERMEDIATE2/$INTERMEDIATE2" fi echo "INTERMEDIATE2 = $INTERMEDIATE2" else echo "Mode is not determined..." exit 1 fi if [ "$SEPARATE" = "separate" ] then TITLES=`titles $INPUT` echo "TITLES = $TITLES" ERROR=0 for x in $TITLES do HandBrakeCLI $OPTS -i "$INPUT" -o "$OUTPUT_FILE_NAME-$x.mp4" if [ ! "$?" = "0" ] then ERROR="1" fi done exit "$ERROR" else echo "Creating a single file." HandBrakeCLI $OPTS -i "$INPUT" -o "$OUTPUT_FILE_NAME.mp4" fi