iPod touch用のビデオエンコード
せっかく液晶がでかいのでビデオでも入れてみた。
液晶の解像度はハーフVGAなのだけど、再生可能な動画はQVGAかVGAのMPEG4に限られる。QVGAでも再生時にスケーリングされるので視聴には問題ないのだけど、せっかくだからVGAサイズで。
素材はアナログ放送適当に録画してあるので、そこから再エンコード。mencoderだとMPEG-4のコンテナ形式への出力が上手く動かなかったためffmpegで。素材が良くないため画質はなんとも言えないが、これぐらいの大きさの液晶なら動画みるにも十分な感じ。
以下、無駄に長いエンコードスクリプト
#!/bin/bash export LANG=C while getopts b OPT do case $OPT in "b" ) background="TRUE" ;; esac done if [ "$background" = "TRUE" ];then if tty --silent ; then nohup $0 $* >/dev/null 2>&1 & exit fi fi shift $(($OPTIND - 1)) FFMPEG="/usr/bin/ffmpeg" maxbr=1500k fps="30000/1001" TMP=/var/tmp audio_br="96k" size="640x480" aspect="4:3" br="1024k" max_br="1500k" bufsize=256kb log=enc_`date +%Y%m%d%H%M%S`.log sws=lanczos video_param="-sws_flags $sws -bitexact -fixaspect -vcodec libx264 -level 30 -croptop $croptop -cropbottom $cropbottom -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -bufsize $bufsize -g 250 -qmin 18 -qmax 51 -s $size -aspect $aspect -r $fps -b $br -maxrate $max_br" audio_param="-acodec libfaac -ac 2 -ar 44100 -ab $audio_br" while [ "$1" != "" ] do src=$1 BASENAME=`basename $src |sed -e 's/\..\{3,4\}$//' ` passfile=pass_$$ if [ ! -r "$src" ] ; then echo "could not read source file : $src" shift continue fi echo "transcoding : $src" >>$log date >>$log echo "start 1st pass" >>$log nice -n 15 $FFMPEG -y -i $src -pass 1 $video_param -an -f mp4 /dev/null >>$log 2>&1 if [ $? != "0" ] ; then exit 1 fi echo "finished 1st pass" >>$log echo "start 2nd pass" >>$log date >>$log nice $FFMPEG -y -i $src -pass 2 $video_param $audio_param -f mp4 $BASENAME.mp4 >>$log 2>&1 if [ $? != "0" ] ; then exit 1 fi echo "finished 2nd pass" >>$log date >>$log rm -f x264_2pass.log rm -f ffmpeg2pass-0.log shift done rm -f $log exit