mp4播放器视频格式转换脚本
发表于 : 2008-01-14 11:20
这个脚本用于将一般格式的视频文件转换为很多常见mp4机所支持的xvid格式的avi,功能类似于mp4机驱动光盘中附带的AVIConverter。视频格式转换由mencoder完成,所以机器上需要预先装好mencoder才能使用这个脚本。它的使用方法很简单,如下面这个例子:
将../abc/*.avi文件转换为mp4机使用的xvid格式并保存在当前目录,转换的目标视频分辨率为320x240,其中视频部分的码率为300kbps,音频的码率为128kbps,为提高双核cpu的使用率,使用两个线程同时转换。
注意:很多2寸的播放器需要将输出分辨率指定为220x176。
代码: 全选
./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[@]}"