なんというか冷や汗ものである。
このまま放置しておくのは色々危険そうな気がするので、もう一度書いておく。
でも、普通のx264では面白くないので、今回は現在開発進行中のx264_L-SMASHのビルドにする。
用意するもの
autoconf/libtoolが使えるmsys環境、mingw、pkg-config、wget、subversion、msysgit、nasm、yasm、
あきれるほどマメなMPC-HC開発者XhmikosR氏がこちらで配布しているセットを使えば、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 cp /bin/pkg-config.exe /bin/${CROSS64}-pkg-config.exe 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 git clone git://github.com/mstorsjo/vo-aacenc.git git clone git://github.com/mstorsjo/vo-amrwbenc.git git clone git://git.libav.org/libav.git libav 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 ../vo-aacenc autoreconf ./configure\ --prefix=$PREF32\ --disable-shared make clean && make && make install-strip cd ../vo-amrwbenc autoreconf ./configure\ --prefix=$PREF32\ --disable-shared make clean && make && make install-strip cd ../libav ./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\ --enable-libvo-aacenc\ --enable-libvo-amrwbenc\ --disable-encoders\ --enable-encoder=aac,ac3,alac,vorbis,libopencore_amrnb,libvo_aacenc,libvo_amrwbenc\ --disable-muxers\ --disable-hwaccels\ --disable-devices\ --disable-protocols\ --enable-protocol=concat,file,pipe,md5\ --disable-debug\ --extra-cflags=-fno-strict-aliasing 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-win32thread\ --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 ../vo-aacenc autoreconf ./configure\ --host=$HOST64\ --prefix=$PREF64\ --disable-shared make clean && make && make install-strip cd ../vo-amrwbenc autoreconf ./configure\ --host=$HOST64\ --prefix=$PREF64\ --disable-shared make clean && make && make install-strip cd ../libav ./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\ --enable-libvo-aacenc\ --enable-libvo-amrwbenc\ --disable-encoders\ --enable-encoder=aac,ac3,alac,vorbis,libopencore_amrnb,libvo_aacenc,libvo_amrwbenc\ --disable-muxers\ --disable-hwaccels\ --disable-devices\ --disable-protocols\ --enable-protocol=concat,file,pipe,md5\ --disable-debug\ --extra-cflags=-fno-strict-aliasing 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 PKG_CONFIG_PATH=${PREF64}/lib/pkgconfig/ \ ./configure\ --host=$HOST64\ --cross-prefix=$CROSS64\ --enable-win32thread\ --enable-nonfree make clean && make cp ./x264.exe /usr/local/bin/x264ls_x64_\ `x264 --version|grep "x264"|awk '{print $2}'|awk -F . '{print $3}'`.exe
golgol7777氏がmkv出力への音声対応を始めた&ffmpegビルド時は-fno-strict-aliasing推奨とのことなので、ffmpegのconfigureを修正。
返信削除ffmpegがsubversionを捨ててgitに完全に移行してしまったので、それにあわせて修正。
返信削除あと、x264_L-SMASHの64bitビルドにもpkg-configを使うように変更。(x264CLIの64bitビルドにpkg-configを使うためには、${CROSS_PREFIX}-pkg-config.exeが必要である…blame Kovensky)
ffmpeg projectが分裂したので、gitレポをlibavに変更。
返信削除ffmpegのビルドで--extra-cflags=-U__STRICT_ANSI__が不要になったので削除。
external librariesにvo-aacenc/amrwbencを追加
返信削除libavのビルドで--enable-w32threadsしてるので、これにあわせてx264も--enable-win32threadに変更