Macでニコニコ動画:H.264 MPEG4にエンコード
Macでニコニコ動画にアップするために、H.264のMPEG4に動画をエンコードする方法を紹介します。OS以外は全てフリーソフトを使います。手順はシンプルです。
MacPorts をインストール
The MacPorts Project -- Home から MacPorts をインストールします。
動画をエンコード
つぎのようなシェルコマンドを作ります。
#! /bin/sh TMPDIR=`dirname $1` FFMPEG=/opt/local/bin/ffmpeg LOG=$TMPDIR/passlog$$ export DYLD_BIND_AT_LAUNCH=1 FIN=$1 if [ ! -f $FIN ] ; then echo "No such a file: $FIN" ; fi FOUT="`echo $FIN | cut -f 1 -d .`.mp4" FPS= if [ $FPS ] ; then FPS="-r $FPS" ; fi # 映像のビットレート BPS=150k # オーディオのビットレート AUDIOBITRATE=80k # 画像サイズ RESOLUTION=512x384 #CROP="-cropleft 8 -cropright 8" # 音声ボリューム VOL= if [ $VOL ] ; then VOL="-vol $VOL" ; fi # 音声サンプルレート AR= if [ $AR ] ; then AR="-ar $AR" ; fi echo "encoding: $FIN ===> $FOUT" QOPT="-qcomp 0.7 -qmin 20 -qmax 41 -qdiff 10" $FFMPEG -y -i $FIN -pass 1 -passlogfile $LOG -vcodec libx264 -level 30 -b $BPS $FPS \ $QOPT -me_method umh -subq 7 -trellis 2 -coder ac -g 250 -bf 3 \ -b_strategy 1 -directpred 2 -partitions parti4x4+partp8x8+partb8x8 \ $CROP -sws_flags lanczos -s $RESOLUTION \ -me_range 32 -sc_threshold 50 -flags loop \ -cmp chroma -refs 5 -acodec libfaac -ab $AUDIOBITRATE $VOL $AR -async 100 \ -threads 0 $FOUT $FFMPEG -y -i $FIN -pass 2 -passlogfile $LOG -vcodec libx264 -level 30 -b $BPS \ $QOPT -me_method umh -subq 7 -trellis 2 -coder ac -g 250 -bf 3 \ -b_strategy 1 -directpred 2 -partitions parti4x4+partp8x8+partb8x8 \ $CROP -sws_flags lanczos -s $RESOLUTION \ -me_range 32 -sc_threshold 50 -flags loop \ -cmp chroma -refs 5 -acodec libfaac -ab $AUDIOBITRATE $VOL $AR -async 100 \ -threads 0 $FOUT /bin/rm -f ${LOG}* /bin/rm x264_2pass.log exit 0
この shell コマンドをたとえば h264encode.sh とすると、
./h264encode.sh movie.mov
とすると、movie.mp4 が吐き出されます。音声はAACになります。
ffmpeg は HE-AAC v2 のデコーダをサポートしていますが、エンコーダは未サポートのようです。まぁ、このあたりは時間が解決するでしょう。