added utility script file
This commit is contained in:
parent
427c97f5af
commit
8663f482c3
124
transcode2mp4.sh
Executable file
124
transcode2mp4.sh
Executable file
@ -0,0 +1,124 @@
|
||||
#!/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 <input file / folder> <output folder> <highres|lowres> <separate>"
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user