You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.6 KiB
94 lines
2.6 KiB
#!/bin/bash |
|
# (c) 2012-2014 MORI Taeyeon |
|
# Convert video for playback on Sony PSP |
|
|
|
usage() { |
|
echo "Usage: `basename "$1"` [-subs] [-nothumb] <infile> [outfile] [-- <HandBrakeCLI options>]" |
|
echo |
|
echo "ffpsp (c) 2012-2014 MORI Taeyeon" |
|
echo "Convert a video for Sony PSP" |
|
echo |
|
echo "Positional Arguments:" |
|
echo -e "\tinfile\t\tInput file" |
|
echo -e "\toutfile\t\tOutput file (default: same name in psp/ subdir)" |
|
echo |
|
echo "Options:" |
|
echo -e "\t-h\t\tDisplay this help message and exit." |
|
echo -e "\t-subs\t\tHardcode softsubs" |
|
echo -e "\t-nothumb\tDon't generate Thumbnails" |
|
echo |
|
echo "Override Application executables:" |
|
echo -e "\t-avprobe -ffmpeg -hbcli -videothumb" |
|
echo |
|
echo "Additional HB-CLI options may be added after a '--' (if you know what you're doing!)" |
|
} |
|
|
|
# commandline options |
|
SUBTITLES=false |
|
THUMBNAIL=true |
|
INPUT_FILE= |
|
OUTPUT_FILE= |
|
|
|
avprobe=avprobe |
|
hbcli=HandBrakeCLI |
|
ffmpeg=ffmpeg |
|
videothumb=videothumb |
|
|
|
# Parse commandline options |
|
pos_args=0 |
|
next= |
|
for i in "$@"; do |
|
shift; |
|
if [[ -z "$next" ]]; then |
|
case "$i" in |
|
-subs) |
|
SUBTITLES=true;; |
|
-nothumb) |
|
THUMBNAIL=false;; |
|
-avprobe|-ffmpeg|-hbcli|-videothumb) |
|
next=${1#-};; |
|
--) |
|
break;; |
|
-h|-help|--help) |
|
usage $0 |
|
exit 0;; |
|
*) |
|
case $pos_args in |
|
0) INPUT_FILE=$i;; |
|
1) OUTPUT_FILE=$i;; |
|
esac |
|
pos_args=$[$pos_args+1];; |
|
esac |
|
else |
|
eval "$next=\"\$i\"" |
|
next= |
|
fi |
|
done |
|
[[ $pos_args -lt 1 || $pos_args -gt 2 ]] && usage $0 && exit 1 |
|
|
|
# Generate output filename |
|
if [[ -z "$OUTPUT_FILE" ]]; then |
|
OUTPUT_DIR=`dirname "$INPUT_FILE"`/psp |
|
OUTPUT_FILE=`basename "$INPUT_FILE"` |
|
OUTPUT_FILE=$OUTPUT_DIR/${OUTPUT_FILE%.*}.mp4 |
|
if ! [[ -e "$OUTPUT_DIR" ]]; then |
|
mkdir -p "$OUTPUT_DIR" |
|
elif [[ -e "$OUTPUT_FILE" ]]; then |
|
echo "File already exists: \"$OUTPUT_FILE\". Specify it explicitly to overwrite" |
|
exit 1 |
|
fi |
|
fi |
|
THUMBNAIL_FILE=${OUTPUT_FILE%.*}.thm |
|
|
|
# Handle Softsubs |
|
if $SUBTITLES && $avprobe "$INPUT_FILE" 2>&1 | grep -i Subtitle | grep -qi ass; then |
|
SUB_ARGS="--subtitle-burned 1 -s 1" |
|
echo "Found a subtitle Track!" |
|
fi |
|
|
|
# Go! |
|
$hbcli -X 480 -Y 272 --modulus 16 -E faac -B 128 -R 44.1 -6 stereo -e x264 -r 23.976 -x profile=main:level=30:weightp=1:subq=9:rc-lookahead=20:8x8dct=0:b-pyramid=none:me=umh:bframes=16 -i "$INPUT_FILE" -o "$OUTPUT_FILE" -q 20 $SUB_ARGS "$@" || exit $? |
|
|
|
|
|
$THUMBNAIL && $videothumb "$OUTPUT_FILE" "$THUMBNAIL_FILE" -s 160x120 || exit $? |
|
|
|
|