代码: 全选
./mp4 -r 320x240 -v 300 -a 128 -t 2 ../abc/*.avi
注意:很多2寸的播放器需要将输出分辨率指定为220x176。
代码: 全选
#!/bin/sh
res=320x240
vbr=300
abr=128
threads=2
encode_thread() {
for f in "${src[@]}"; do
name=`basename "$f"`
if rm "${name}.lock" 1>/dev/null 2>&1; then
name="[mp4]${name%.*}.avi"
echo "[$1]Processing: $f"
nice mencoder \
"$f" \
-o "$name" \
-noodml \
-of avi \
-ofps 20 \
-vf-add scale=${res%x*}:-3 \
-vf-add expand=${res%x*}:${res#*x} \
-vf-add scale=-3:${res#*x} \
-vf-add expand=${res%x*}:${res#*x}:-1:-1:1 \
-srate 44100 \
-ovc xvid \
-xvidencopts bitrate=${vbr}:max_bframes=0:quant_type=h263:me_quality=4 \
-oac lavc \
-lavcopts acodec=mp2:abitrate=${abr} \
-really-quiet \
1>/dev/null 2>&1
fi
done
}
unset src
while [[ -n "$@" ]]; do
if getopts r:v:a:t: key $@; then
case $key in
r) res="$OPTARG" ;;
v) vbr="$OPTARG" ;;
a) abr="$OPTARG" ;;
t) threads="$OPTARG" ;;
esac
shift $((OPTIND-1))
else
src[${#src[@]}]="$1"
name=`basename "$1"`
touch "${name}.lock"
shift
fi
OPTIND=0
done
unset pid
for ((i=1; i<=threads; i++)); do
encode_thread $i &
pid[${#pid[@]}]="$!"
done
trap 'rm *.lock; kill "${pid[@]}"' SIGINT
wait "${pid[@]}"