日々の出来事を書き殴る

2010年9月7日火曜日

x264_L-SMASHのビルド

以前書いたlavf/ffmsつきx264のビルドに関する記事を数ヶ月ぶりに読み返してみた。
なんというか冷や汗ものである。
このまま放置しておくのは色々危険そうな気がするので、もう一度書いておく。
でも、普通のx264では面白くないので、今回は現在開発進行中のx264_L-SMASHのビルドにする。

用意するもの
autoconf/automake/libtoolが使えるmsys環境、mingw、pkg-config、wget、subversion、msysgit、nasm、yasm、pthread-w32、zlib、bzip2
あきれるほどマメなMPC-HC開発者XhemikosR氏がこちらで配布しているセットを使えば、msysgit以外すべて揃っているのでとても楽である。 (説明の手間が省けるので)
あとは自分の環境に合わせて/etc/fstabと/etc/profileをいじり、別にインストールしたmsysgitのgit.exeにPATHを通すなりすればよい。

1.x264_L-SMASH_clone.sh
x264_L-SMASHはこちらで公開されているが、そのままgit cloneすると、バイナリのバージョン表記がおかしくなるので、ここにあるx264_L-SMASH_clone.shを使ってcloneする。
DLしたら、この.shを$HOMEに置いておくこと。
もしくは
wget http://up-cat.net/wiki.cgi?action=ATTACH&page=L-SMASH&file=x264_L-SMASH_clone.sh -O $HOME/x264_L-SMASH_clone.sh
を、スクリプトに追加する。

2.ビルド
あとは以下のスクリプトを実行すればおしまい。現状で使用できるaudio用codecを全部リンクしたx264.exeが出来る。
変数の内容は各自で自分の環境にあわせていじるように。
QuickTime SDKをインストールしていない場合や、libfaacをリンクさせたくない場合は、適当にコメントアウトすること。


#!/bin/sh
#Preparation
WORK=$HOME/LSMASH
PREF32=/mingw/i686-pc-mingw32
PREF64=/mingw/x86_64-w64-mingw32
HOST64=x86_64-w64-mingw32
CROSS64=x86_64-w64-mingw32-
QTSDK=/g/quicktime_sdk

mkdir $WORK/src

#download src
cd $WORK/src
wget\
 http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz\
 http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2\
 http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz
svn co svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
svn co http://ffmpegsource.googlecode.com/svn/trunk/ ffms
$HOME/x264_L-SMASH_clone.sh
cp -r . $WORK/x86
cp -r . $WORK/x64

#32bit
cd $WORK/x86
for i in ./*.gz ; do tar zxvf $i ;done
for i in ./*.bz2 ; do tar jxvf $i ; done
rm ./*.gz ./*.bz2

cd ./lame*
./configure\
 --prefix=$PREF32\
 --disable-shared\
 --enable-nasm
make clean && make && make install-strip

cd ../faac*
./configure\
 --prefix=$PREF32\
 --disable-shared\
 --without-mp4v2
make clean && make && make install-strip

cd ../opencore*
./configure\
 --prefix=$PREF32\
 --disable-shared
make clean && make && make install-strip

cd ../ffmpeg
./configure\
 --prefix=$PREF32\
 --cpu=i686\
 --disable-doc\
 --disable-ffprobe\
 --enable-gpl\
 --enable-version3\
 --enable-postproc\
 --disable-network\
 --enable-w32threads\
 --enable-runtime-cpudetect\
 --enable-memalign-hack\
 --enable-libopencore-amrnb\
 --enable-libopencore-amrwb\
 --disable-encoders\
 --enable-encoder=aac,ac3,alac,mp2,libopencore_amrnb\
 --disable-muxers\
 --disable-hwaccels\
 --disable-devices\
 --disable-protocols\
 --enable-protocol=concat,file,pipe,md5\
 --disable-debug\
 --cpu=i686\
 --extra-cflags=-U__STRICT_ANSI__
make clean && make && make install

cd ../ffms
PKG_CONFIG_PATH=${PREF32}/lib/pkgconfig/\
 ./configure\
 --prefix=$PREF32
make clean && make && make install-strip

cd ../x264_L-SMASH
PKG_CONFIG_PATH=${PREF32}/lib/pkgconfig/\
 ./configure\
 --qtsdk=$QTSDK\
 --enable-nonfree
make clean && make
cp ./x264.exe /usr/local/bin/x264ls_x86_`x264 --version|grep "x264"|awk '{print $2}'|awk -F . '{print $3}'`.exe

#64bit
cd $WORK/x64
for i in ./*.gz ; do tar zxvf $i ;done
for i in ./*.bz2 ; do tar jxvf $i ; done
rm ./*.gz ./*.bz2

cd ./lame*
./configure\
 --host=$HOST64\
 --prefix=$PREF64\
 --disable-shared\
 --enable-nasm
make clean && make && make install-strip

cd ../faac*
./configure\
 --host=$HOST64\
 --prefix=$PREF64\
 --disable-shared\
 --without-mp4v2
make clean && make && make install-strip

cd ../opencore*
./configure\
 --host=$HOST64\
 --prefix=$PREF64\
 --disable-shared
make clean && make && make install-strip

cd ../ffmpeg
./configure\
 --prefix=$PREF64\
 --target-os=mingw32\
 --cross-prefix=$CROSS64\
 --cpu=x86_64\
 --arch=x86_64\
 --disable-doc\
 --disable-ffprobe\
 --enable-gpl\
 --enable-version3\
 --enable-postproc\
 --disable-network\
 --enable-w32threads\
 --enable-runtime-cpudetect\
 --enable-memalign-hack\
 --enable-libopencore-amrnb\
 --enable-libopencore-amrwb\
 --disable-encoders\
 --enable-encoder=aac,ac3,alac,mp2,libopencore_amrnb\
 --disable-muxers\
 --disable-hwaccels\
 --disable-devices\
 --disable-protocols\
 --enable-protocol=concat,file,pipe,md5\
 --disable-debug\
 --extra-cflags=-U__STRICT_ANSI__
make clean && make && make install

cd ../ffms
PKG_CONFIG_PATH=${PREF64}/lib/pkgconfig/\
 ./configure\
 --host=$HOST64\
 --prefix=$PREF64
make clean && make && make install-strip

cd ../x264_L-SMASH
./configure\
 --host=$HOST64\
 --cross-prefix=$CROSS64\
 --enable-nonfree\
 --extra-ldflags="-lopencore-amrnb -lopencore-amrwb"
make clean && make
cp ./x264.exe /usr/local/bin/x264ls_x64_`x264 --version|grep "x264"|awk '{print $2}'|awk -F . '{print $3}'`.exe

0 コメント:

コメントを投稿