recursive-m4v-convert.sh-34.../recursive-m4v-convert.sh

63 lines
2.7 KiB
Bash
Raw Normal View History

2018-02-06 13:08:04 +00:00
#!/bin/bash
#
# Change this to specify a different handbrake preset. You can list them by running: "HandBrakeCLI --preset-list"
#
2018-04-11 11:55:32 +00:00
#set -ux
2018-02-06 13:08:04 +00:00
set +e
2021-03-27 11:00:59 +00:00
PRESET="Amazon Fire 720p30" # tweaked to work on my folks old LG smart tv.
2018-02-06 13:08:04 +00:00
if [ -z "$1" ] ; then
TRANSCODEDIR="."
else
TRANSCODEDIR="$1"
fi
2018-04-11 11:55:32 +00:00
BURN_SUBS=${2:-"false"}
2018-02-06 13:08:04 +00:00
abs_basefolder=`realpath "$TRANSCODEDIR"`
folder_base=`dirname "$abs_basefolder"`
folder_name=`basename "$abs_basefolder"`
output_basedirectory="$folder_base/$folder_name-converted"
mkdir -p "$output_basedirectory"
function recursive_convert {
find "$1" -type d -print0 |
while IFS= read -rd '' directory_to_convert; do
echo "Converting files in $directory_to_convert";
output_directory=$output_basedirectory
if [ "$directory_to_convert" != "$1" ]; then
abs_subfolder=`realpath "$directory_to_convert"`
rel_subfolder=${abs_subfolder#$abs_basefolder/}
#Create output directory
output_subdirectory="$output_basedirectory/$rel_subfolder"
mkdir -p "$output_subdirectory"
output_directory=$output_subdirectory
fi
echo "Converted files will be saved in $output_directory";
2018-04-11 11:55:32 +00:00
# TODO only find video files
# *.mkv *.webm *.flv *.avi *.mov *.wmv *.mp4 *.mp4$ *.m4v *.flv
2018-02-06 13:08:04 +00:00
find "$directory_to_convert" -maxdepth 1 -mindepth 1 -type f -print0 |
while IFS= read -r -d '' file_to_convert; do
file_to_convert_filename=$(basename "$file_to_convert")
2018-04-11 11:55:32 +00:00
if [[ ${file_to_convert_filename: -4} == ".mp4" ]] || [[ ${file_to_convert_filename: -4} == ".mkv" ]]; then
converted_filepath="$output_directory/${file_to_convert_filename%.*}.m4v"
subtitle_srt="$abs_basefolder/${file_to_convert_filename%.*}.srt"
# If the file doesn't exist then convert
if [ ! -e "$converted_filepath" ]; then
if [ -e "$subtitle_srt" ] && [ "$BURN_SUBS" = "true" ]; then
echo "Converting $file_to_convert with hardcoded subs"
2021-03-27 11:04:45 +00:00
HandBrakeCLI --input "$file_to_convert" --output "$converted_filepath" --preset="$PRESET" --srt-file "$subtitle_srt" --srt-codeset UTF-8 --srt-burn --aencoder="mp3"</dev/null
2018-04-11 11:55:32 +00:00
else
echo "Converting $file_to_convert"
2021-03-27 11:04:45 +00:00
HandBrakeCLI --input "$file_to_convert" --output "$converted_filepath" --preset="$PRESET" --aencoder="mp3"</dev/null
2018-04-11 11:55:32 +00:00
fi
else
echo "$converted_filepath already exists"
fi
2018-02-06 13:08:04 +00:00
fi
done
done
}
recursive_convert "$abs_basefolder"