Skip to content

Instantly share code, notes, and snippets.

@vortex-5
Created July 5, 2013 20:18
#!/bin/bash
#
# converts an MKV file to PS3 format
#
# Requires avconv and HandbrakeCLI
#
# This script will attempt to convert a file with avconv (fast)
# and will fallback to Handbrake to encode more difficult files
# when encountering an error.
#
# Log start time
START_TIME=$(date +%s)
function mkvextensions() {
#filter out files that don't have mkv extensions and produce a list of files extension free
if [ "${1:(-4)}" = ".mkv" ]; then
filenamePath="${1:0:(-4)}"
else
filenamePath=''
fi
}
function removePath() {
filenameOnly="${1##*/}"
}
for filename in $@
do
mkvextensions $filename
if [ "$filenamePath" != "" ]; then
removePath $filenamePath
echo "--- [$filenamePath.mkv] ---"
avconv -i "$filenamePath.mkv" -c:v copy -c:a ac3 -b:a 448k "$filenameOnly.mp4"
if [ "$?" != "0" ]; then
echo "!!! Encode failed $filenameOnly.mp4 !!!"
rm $filenameOnly.mp4
echo "--- Switching to HANDBRAKE for $filenameOnly.mkv ---"
HandBrakeCLI -i "$filenamePath.mkv" -o "$filenameOnly.mp4" -e x264 -q 20.0 -a 1 -E ffac3 -6 stereo -R Auto -D 0.0 --audio-copy-mask ac3,aac,mp3 --audio-fallback ffac3 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.2
fi
fi
done
#log end time
END_TIME=$(date +%s)
echo "Conversion time: $(( $END_TIME - $START_TIME )) seconds"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment