B1つ、サクッと再生
B2つ、これもOK
B3つ、ほうほう、これもいけるのか
B4つ、いや、どんだけ対応してるんだYO!
というわけで、B-frame 16枚までやってみたら、これも大丈夫だった。実際は、規格の制限か、x264の仕様かわからんが10枚ぐらいしかはさんでいなかったが、それでも多い。
CAVAC対応といい、高品位の液晶といい、PSPの動画再生は、ポータブル最強ですね。
ということで作成したスクリプトはコレ
mendocerでは、MPEG4出力(H264でもMPEG4形式)がイマイチなので、ffmpegを用います。
ffmpeg-pspはH264とAACに対応するようにコンパイルしなおしたモノです。
------------- pspenc.sh ------------------
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 [options] list_of_movie_files"
echo " options: -frame wide|normal"
echo " -bitrate high|low|middle"
echo " -snapshot no. (image only)"
exit 1
fi
# video encoding bit rate
OPTV=" -f psp -acodec libfaac -vcodec libx264 -coder 1 -vlevel 13 -ar 24000 -ab 64000"
OPTF=""
OPTB=" -qmin 28 -qmax 32 -bf 16"
OPTIB=" -f image2 -s 160x120 -vframes 1"
OPTIS1=$OPTIB" -ss 5"
OPTIS2=""
while [ "$1" ]; do
case "$1" in
"-frame" )
shift
case "$1" in
"wide" ) OPTF=" -s 480x270";;
"normal" ) OPTF=" -s 360x270";;
* ) echo "-frame option error. ex. -frame [normal|wide]"
exit 1;;
esac
shift;;
"-bitrate" )
shift
case "$1" in
"high" ) OPTB=" -qmin 22 -qmax 28 -bf 16";;
"low" ) OPTB=" -qmin 28 -qmax 32 -bf 16";;
"middle" ) OPTB=" -qmin 24 -qmax 30 -bf 16";;
* ) echo "-bitrate option error. ex. -bitrate [high|low|middle]"
exit 1;;
esac
shift;;
"-snapshot" )
shift
OPTIS2=$OPTIB" -ss "$1
shift;;
* ) break;;
esac
done
if [ -z "$OPTIS2" ]; then
while [ "$1" ]; do
ffmpeg-psp -i "$1" $OPTV $OPTF $OPTB $1.mp4
ffmpeg-psp -i "$1" $OPTIS1 $1.jpg
shift
done
else
while [ "$1" ]; do
ffmpeg-psp -i "$1" $OPTIS2 $1.jpg
shift
done
fi