#!/bin/bash INFILE=$1 OUTPUT=$2 RH=$3 LOGO=$4 if [ -z "$INFILE" -o -z "$OUTPUT" -o -z "$RH" -o -z "$LOGO" ]; then echo "Usage sh $0 [gen]" exit fi if [ $RH -ne 480 -a $RH -ne 320 ]; then echo Unknown height. Allowed are 480 and 320 exit fi if [ $RH -eq 480 ]; then VPRE=ipod640 VBR=800k else VPRE=ipod320 VBR=300k fi if [ ! -s $INFILE ]; then echo "File $INFILE does not exists" exit fi S0=`ffprobe -show_format $INFILE 2>&1 | grep Video:` S=`echo $S0 | sed -e 's/^.* \([0-9]\+x[0-9]\+\).*$/\1/'` S2=`echo $S | awk '{ print $1 }'` echo S0:$S0 echo S2:$S2 SAR=`echo $S0 | grep SAR | sed -e 's/^.*SAR \([0-9]\+:[0-9]\+\) .*$/\1/'` echo $SAR is SAR if [ ! -z "$SAR" ]; then PW=`echo $SAR | cut -d":" -f 1` PH=`echo $SAR | cut -d":" -f 2` else PW=1 PH=1 fi S=$S2 echo $INFILE >&2 echo original size $S >&2 ResW=`echo $S | cut -d"x" -f1` ResH=`echo $S | cut -d"x" -f2` let W=$ResW*$PW let H=$ResH*$PH let NH=$RH DH=`echo | awk -vH=$H -vNH=$NH 'BEGIN { printf("%f", NH /H); }'` NW=`echo | awk -vW=$W -vDH=$DH 'BEGIN { a=W*DH; if(a%2) a++; printf("%d", a); }'` let TT=$NW%2 if [ $TT -gt 0 ]; then echo Width not divisible by 2. correting let NW=$NW+1 fi RW=`echo | awk -vRH=$RH 'BEGIN { printf("%d", 16*RH/9); }'` let A=$RW%2 if [ $A -eq 1 ]; then let RW=$RW+1 fi echo $NW x $NH >&2 DW2=`echo | awk -vW=$NW -vRW=$RW 'BEGIN { printf("%d",(RW-W)/2);}'` if [ $DW2 -lt 0 ]; then DW2=0 fi echo bar delta $DW2 >&2 echo >&2 if [ $DW2 -le 0 ]; then if [ $NW -gt 0 ]; then if [ "$5" = "gen" ]; then echo 'ffmpeg -i '\"$INFILE\"' -s '${NW}x$NH' -vcodec libx264 -trellis 2 -vb '$VBR' -vprofile baseline -level 30 -vpre '$VPRE' -keyint_min 15 -g 30 -acodec libfaac -ab 64k -f mp4 -vf "movie='$LOGO' [logo]; [in][logo] overlay=main_w-overlay_w:0 [out]; [out] yadif=0:0:0" -y '$i.mp4 else ffmpeg -i "$INFILE" -s ${NW}x$NH -vcodec libx264 -trellis 2 -level 30 -vb $VBR -vprofile baseline -level 30 -vpre $VPRE -keyint_min 15 -g 30 -acodec libfaac -ab 64k -f mp4 -vf "movie=$LOGO [logo]; [in][logo] overlay=main_w-overlay_w:0 [out]; [out] yadif=0:0:0" -y $OUTPUT fi fi else if [ $NW -gt 0 ]; then if [ "$5" = "gen" ]; then echo 'ffmpeg -i '\"$INFILE\"' -s '${NW}x$NH' -vcodec libx264 -trellis 2 -level 30 -vb '$VBR' -vprofile baseline -level 30 -vpre '$VPRE' -keyint_min 15 -g 30 -acodec libfaac -ab 64k -f mp4 -vf "pad='${RW}:${RH}:${DW2}':0:black [o1]; movie='$LOGO' [logo]; [o1][logo] overlay=main_w-overlay_w:0 [out]; [out] yadif=0:0:0" -y '$i.mp4 else ffmpeg -i "$INFILE" -s ${NW}x$NH -vcodec libx264 -trellis 2 -vb $VBR -vprofile baseline -level 30 -vpre $VPRE -keyint_min 15 -g 30 -acodec libfaac -ab 64k -f mp4 -vf "pad=${RW}:${RH}:${DW2}:0:black [o1]; movie=$LOGO [logo]; [o1][logo] overlay=main_w-overlay_w:0 [out]; [out] yadif=0:0:0" -y $OUTPUT fi fi fi