#!/bin/bash INPUT="$1" OUTPUT="$2" MP4BOX="$(which MP4Box 2>/dev/null)" MPLAYER="$(which mplayer 2>/dev/null)" MENCODER="$(which mencoder 2>/dev/null)" INWIDTH=$($MPLAYER $INPUT -identify -nosound -vo null -nocache -frames 1 | grep '^ID_VIDEO_WIDTH' | tail -n 1 | awk -F= '{print $2}') INHEIGHT=$($MPLAYER $INPUT -identify -nosound -vo null -nocache -frames 1 | grep '^ID_VIDEO_HEIGHT' | tail -n 1 | awk -F= '{print $2}') let "OUTWIDTH=((230400/$INHEIGHT))" let "OUTHEIGHT=((640*$INHEIGHT/$INWIDTH))" INASPECT=$($MPLAYER $INPUT -identify -nosound -vo null -nocache -frames 1 | grep '^ID_VIDEO_ASPECT' | tail -n 1 | awk -F= '{print $2}') SCALE="640:360" if [[ $ASPECT != 1.7778 ]] then if [[ $ASPECT > 1.7778 ]] then SCALE="640:$OUTHEIGHT" else SCALE="$OUTWIDTH:360" fi fi OUTPUT="$(echo "$OUTPUT" | sed 's|\.mp4|\.avi|')" $MENCODER $INPUT -o /dev/null -vf scale=$SCALE,harddup -ovc xvid -xvidencopts pass=1:max_bframes=0 -oac faac $MENCODER $INPUT -o $OUTPUT -of avi -vf scale=$SCALE,harddup -ovc xvid -xvidencopts pass=2:bitrate=1000:max_bframes=0 -oac faac -faacopts br=128:mpeg=4:object=2 -channels 2 -srate 48000 MP4FPS=$($MPLAYER $OUTPUT -identify -nosound -vo null -nocache -frames 1 | grep '^ID_VIDEO_FPS' | tail -n 1 | awk -F= '{print $2}') $MENCODER $OUTPUT -nosound -ovc copy -of rawvideo -o $OUTPUT.cmp VIDEOINPUT="-add $OUTPUT.cmp" MP4AUD="$MP4BOX -aviraw audio $OUTPUT -out $OUTPUT.raw" MVRAW="mv -f "$OUTPUT"_audio.raw $OUTPUT.aac" AUDIOINPUT="-add $OUTPUT.aac" $MP4AUD $MVRAW MP4OUT="$(echo "$OUTPUT" | sed 's|\.avi|\.mp4|')" $MP4BOX $VIDEOINPUT -fps $MP4FPS $AUDIOINPUT $MP4OUT rm $OUTPUT.cmp rm $OUTPUT.aac rm $OUTPUT rm divx2pass.log