#! /bin/sh
#

USAGE="`basename $0` [-h] [-a] file.mkv..."

abort () {
  echo $1 >&2
  exit ${2-1}
}

trap "rm -f video.h264 video.h265 audio.aac audio.ac3" 0 1 2 3 15

ac3=0

# parse command line
set -- `getopt ah $*`

if [ $? != 0 ]
then
  abort "$USAGE" 1
fi

while [ $1 != -- ]
do
  case $1 in
    -h)
	abort "$USAGE" 0
	;;
    -a)
	ac3=1
	;;
  esac
  shift	# next flag
done

shift	# skip --

if [ $# = 0 ]
then
  abort "$USAGE" 1
fi

for f in $*
do
	ext=`echo -n $f | sed 's/.*\.//'`
	if [ ! -f $f -o "$ext" != "mkv" ]
	then
  		abort "$f?"
	fi
	
	file=`basename $f .mkv`

	if [ $ac3 ]
	then
		mkvextract tracks $f 0:video.h265 1:audio.ac3
		ffmpeg -i audio.ac3 -acodec libfdk_aac audio.aac
	else
		mkvextract tracks $f 0:video.h265 1:audio.aac
	fi

	ffmpeg -i video.h265 -c:v libx264 -preset medium video.h264

	MP4Box -add video.h264 -add audio.aac $file.mp4

	if [ $? -ne 0 ]
	then
  		abort "$f?"
	fi
done

