#!/bin/sh DTCBIN=/usr/local/bin/ffplay DTCARG="-an -vn -nodisp -stats" ENCBIN=/usr/local/bin/ffmpeg AWK=/usr/bin/awk GREP=/usr/bin/grep OUTDIR=. usage() { echo "usage: `basename $0` [options] " echo echo "options:" echo "-o : Output directory. default: $OUTDIR" echo "-h : Print this message." } if [ -z "$1" ]; then usage exit fi while [ $# -ne 0 ]; do case "$1" in -o) shift if [ -n "$1" -a -d "$1" ]; then OUTDIR=$1 else echo "Invalid Output directory path: $1" >&2 exit 1 fi ;; -h) usage exit ;; *) break ;; esac shift done if [ -z "$1" ]; then echo "Input filename is not given." >&2 exit 1 fi while [ $# -ne 0 ]; do if [ ! -f "$1" ]; then echo "given Input filename doesn't exist: $1" >&2 shift continue fi VINFO=`$DTCBIN $DTCARG "$1" 2>&1 | \ $AWK ' \ / Video: / { videomode = ""; split(substr($5, 1, length($5)-1), vid, "x"); if( int(vid[1] / 160) == int(vid[2] / 90) ) videomode = "C"; if( int(vid[1] / 40) == int(vid[2] / 30) ) videomode = "N"; if( videomode == "" ) videomode = "x"; } / Audio: / { audiofreq = $5 } END { print videomode, audiofreq } ' ` VMODE=`echo $VINFO | $AWK '{ print $1 }'` AFREQ=`echo $VINFO | $AWK '{ print $2 }'` if [ ! -n "`echo $AFREQ | $GREP "[[:digit:]]\{1,\}$"`" ]; then echo "Invalid audio sampling freq. Skipping: $1" >&2 shift continue fi case "$VMODE" in C) $ENCBIN -y -i "$1" -bitexact -vcodec mpeg4 -qns -nr -mbd 2 -4mv -trell \ -s 240x136 -padtop 20 -padbottom 20 \ -r ntsc -qscale 4 -acodec aac -ac 2 -ar $AFREQ -ab 24 \ "${OUTDIR}/${1}.mp4" ;; N) $ENCBIN -y -i "$1" -bitexact -vcodec mpeg4 -qns -nr -mbd 2 -4mv -trell \ -s 240x176 \ -r ntsc -qscale 4 -acodec aac -ac 2 -ar $AFREQ -ab 24 \ "${OUTDIR}/${1}.mp4" ;; *) echo "Invalid video mode detecting [${VMODE}] . Skipping: $1" >&2 ;; esac shift done