-
-
Save ticean/735774 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| ############################################################ | |
| # Recursively peruses a directory and converts MKV files | |
| # to MP4 for streaming to Xbox360. | |
| # | |
| # @author: Ticean Bennett | |
| # @url: http://ticean.com | |
| # @see: http://trac.handbrake.fr/wiki/CLIGuide#options | |
| # | |
| # @param file The complete file path. | |
| # @param delete_mkv True if the original mkv will be deleted. | |
| # | |
| ############################################################ | |
| function convert_mkv { | |
| file="$1" | |
| filepath="${file%\/*}" | |
| filename=$(basename "$file") | |
| name=$(echo "$filename" | sed 's/\.[^\.]*$//') | |
| delete_mkv=1 #$2||0; | |
| echo "File: $file" | |
| echo "filepath: $filepath" | |
| echo "filename: $filename" | |
| echo "name: $name" | |
| HandBrakeCLI -i "${filepath}/${name}.mkv" -o "${filepath}/${name}.mp4" -e x264 -b 2000 -a 1 -E faac -B 160 -R 48 -6 dpl2 -f mp4 -x level=40:ref=2:mixed-refs:bframes=3:weightb:subme=9:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1 | |
| # @TODO Make sure that conversion was a success before deleting. | |
| if [ -e "${filename}" -a ${deleted}=1 ]; then | |
| echo "Deleting source file: ${filename}" | |
| rm "${filename}" | |
| fi | |
| } | |
| function walk_tree { | |
| local directory="$1" | |
| local extension="$2" | |
| local i | |
| for i in "$directory"/*; | |
| do | |
| echo "Checking ${i}" | |
| if [ "$i" = . -o "$i" = .. ]; then | |
| continue | |
| elif [ -d "$i" ]; then | |
| walk_tree "$i" | |
| elif [ "${i##*.}" = "mkv" ]; then | |
| echo "Found mkv file" | |
| file="$(basename $i)" | |
| filename=$(echo "$i" | sed 's/\.[^\.]*$//') | |
| echo "Invoking convert_mkv ${directory} ${filename}" | |
| #echo "via sed: ${fn}" | |
| convert_mkv "${i}" 0 | |
| else | |
| continue | |
| fi | |
| done | |
| } | |
| targetdir="$1" | |
| extension="$2" | |
| echo "Executing: convertMkv.sh ${targetdir} ${extension}" | |
| walk_tree "$targetdir" "mkv" |
| #!/bin/bash | |
| ########################################################## | |
| # sabnzbd script that runs both sabToSickbeard | |
| # and Mkv conversion. | |
| # | |
| # @author: Ticean Bennett | |
| # @see: http://ticean.com | |
| # @see: http://wiki.sabnzbd.org/user-scripts | |
| # @requires: sabToSickbeard.py | |
| # @requires: convertMkv.sh | |
| # | |
| # @param $l directory of the job (full path) | |
| # @param $2 The original name of the NZB file | |
| # @param $3 Clean version of the job name (no path info and ".nzb" removed) | |
| # @param $4 Indexer's report number (if supported) | |
| # @param $5 User-defined category | |
| # @param $6 Group that the NZB was posted in e.g. alt.binaries.x | |
| # @param $7 Status of post processing. 0 = OK, 1=failed verification, 2=failed unpack, 3=1+21 | |
| # | |
| ########################################################### | |
| scriptpath="$(cd ${0%/*} && pwd -P)" | |
| "${scriptpath}/convertMkv" "$1" "$2" "$3" "$4" "$5" "$6" "$7" | |
| "${scriptpath}/sabToSickBeard.py" "$1" "$2" "$3" "$4" "$5" "$6" "$7" |
Hmmm.. I haven't used these scripts in quite a while. Converting the mkv's is a really heavy process so I switched to XBMC. It can play the mkv files directly. If you have the means, I'd highly recommend that you do the same.
That being said, I just eyeballed it, and it looks likes there's a typo. The defined var is delete_mkv but the conditional is checking deleted (line 30) so it will always fail. This should fix:
if [ -e "${filename}" -a ${delete_mkv}=1 ]; thenLet me know if that works. ;)
This helped me 2 years later!
Have you considered using ffmpeg to repackage the mkv without transcoding? (assuming the objective was just to repackage)
ffmpeg -i "${filepath}/${name}.mkv" -c:v copy -c:a copy "${filepath}/${name}.mp4"
And only calling HandBrake if the file size : width ratio exceeds a certain constant, then transcode with HandBrakeCLI?
The mkv files remain after conversion, delete_mkv looks like it is set to true.
Where am I going wrong?