それでは、FFmpeg(w32threads版)のコンパイルです。
MSYSとMinGWから準備する方は、1、2番の記事からお読みください。
MSYSとMinGWの準備ができている方は、3番の記事からお読みください。
1. MSYS環境のアップデート2. MinGW環境のアップデート2012/05/02 追記FFmpegのDirectShow(dshow)を有効にするためには、MinGW-w64が必要です。
MinGWのmingwrtとw32apiの代わりに、MinGW-w64を使う方手順は、以下の記事を参照してください。
MinGW-w64 for win32 のインストール3. 個別のライブラリについて以下のライブラリは、あらかじめインストールしておいてください。
この記事を書いた時点より新しくなっているものもありますので、それぞれの記事で確認してください。
nasm-2.09.10yasm-1.1.0zlib-1.2.5bzip2-1.0.6libbluray-0.2.2libcdio-0.83gitgsm-1.0.13libmodplug-0.8.8.4lame-3.98.4opencore-amr-0.1.2vo-aacenc-0.1.1vo-amrwbenc-0.1.1libogg-1.2.2aoTuV Beta6.03 (libvorbis-1.3.2)libtheora-1.1.1speex-1.2rc1libvpx-v1.0.0x264 (make fprofiled)xvidcore-1.3.2OpenSSLを使用する場合は、以下の記事を参照してください。
openssl-1.0.0drtmpdump-2.4PolarSSLを、OpenSSLの代わりに使用する場合は、以下の記事を参照してください。
当サイトでは、PolarSSLを使用しています。
polarssl-1.0.0rtmpdump-2.4 PolarSSL版2011/11/11 追記GnuTLSを、OpenSSLの代わりに使用する場合は、以下の記事を参照してください。
OpenSSLはGPL非互換なので、GnuTLSかPolarSSLをおすすめします。
gnutls-3.0.12rtmpdump-2.4 GnuTLS版2011/12/07 追記字幕ファイルを読み込むためのライブラリlibassを追加する場合、以下のライブラリが必要になります。
pkg-config_0.26-1_win32libiconv-1.13.1freetype-2.4.8expat-2.0.1fontconfig-2.8.0fribidi-0.19.2libass-0.10.04. FFmpegのコンパイルFFmpegは、以下の場所にあります。
http://ffmpeg.org/ソースコードはGitで管理されるようになり、SVNはrev.26402で更新が止まっています。
今後は、
Gitをインストールして、以下のコマンドでソースコードを入手してください。
$ git clone git://git.videolan.org/ffmpeg.git
または、
Get FFmpeg
http://ffmpeg.org/download.htmlここの、一番上のSnapshotのリンクからソースコードをダウンロードできます。
ファイルは、ffmpeg-HEAD-(Gitハッシュ値).tar.gz という形式になっていますので、そのファイル名に読み替えてください。
$ tar xzf ffmpeg-HEAD-3b5ddf0.tar.gz
$ cd ffmpeg-HEAD-3b5ddf0
次に、configure、その他諸々の一括パッチを適用します。
2012/07/22 追記パッチを更新しました。(rev.42739(9e1508f)〜)
ffmpeg-20120722.diff2012/01/30 追記FFmpeg rev.37209以降の更新で、「-flags2」で設定していたものが独立したオプションになり、特にx264関連の設定が大幅に変わりました。
以前の「-flags2」の設定も使用できるように、Revert用のパッチを作りましたので、必要であれば適用してください。
2012/06/16 追記「-flags2」用のパッチを更新しました。(rev.41595(15f8941)〜)
ffmpeg-global_opts-20120615.diff2012/04/17 追記2012/04/13 以降、以下のようなエラーが出る場合があります。
library.mak:95: *** missing separator. Stop.
ファイルの最後に、改行コードが入っていないものがあるのが原因です。
その場合は、以下のパッチを適用してください。2012/05/10 追記改行コードが原因のエラーが出るMakefileが増えるたびに、パッチを適用するのも面倒です。
ダウンロード(git clone)済みのソースコードがある場合、一旦Makefileを全部削除して、改行コードをLFにして作成し直せば、エラーが出なくなります。
$ echo 'Makefile eol=lf' > .gitattributes
$ find ./ -name 'Makefile' -print | xargs rm
$ git stash
その後、以下のパッチを適用します。
$ patch -p1 < ffmpeg-20120722.diff
$ patch -p1 < ffmpeg-global_opts-20120615.diff
パッチを適用したら、configureを実行します。
FFmpeg SVN rev.23653から、
libfaadが削除されました。
HE-AAC v2デコーダーが本体に実装されたので、libfaadは不要になったらしいです。
古い記事を参考にしている方で、
Unknown option "--enable-libfaad".
というメッセージが出る場合は、
--enable-libfaad --disable-decoder=aac
は削除してください。
2012/05/26 追記テスト(make fate)を実行するためにffprobeが必要だったのですが、また必要なくなりました。
configureオプションに、--disable-ffprobe を追加しました。
$ ./configure --enable-gpl --enable-version3 --enable-avisynth --enable-fontconfig --enable-libass --enable-libbluray --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libcdio --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-librtmp --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libx264 --enable-libxvid --disable-ffplay --disable-ffprobe --disable-ffserver --enable-w32threads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --cpu=i686 --optflags="-O2 -finline-functions"
最適化レベルは、以前は、
--enable-small 有りの場合 -Os
--enable-small 無しの場合 -O3
しか選択できませんでしたが、FFmpeg Git rev.30971(4b87a08)から、
--optflags
というオプションが追加され、最適化レベルを変えられるようになりました。
--enable-small 有りだと、バイナリのサイズは小さくなるが、エンコード速度が落ちる。
--enable-small 無しだと、エンコード速度は速いが、バイナリのサイズがでかくなる。
--enable-small 無しで、--optflags="-O2 -finline-functions" だと、バイナリサイズがあまり大きくならないわりに、--enable-small 無しの場合とエンコード速度が大して変わらない。
ということで、色々試した結果、以下のようにしました。
--enable-small 無し
--optflags="-O2 -finline-functions" 追加
最適化オプションは、PCの環境により以下のようにしています。
※あくまでも一例ですので、もっと凝ってみたい方は、gccのマニュアルなどを見て研究されると良いかもしれません。
最適化無し版
--extra-cflags="-march=i686 -mtune=generic"
Pentium4最適化版
--extra-cflags="-mtune=pentium4 -mfpmath=sse -msse" --cpu=pentium4
Core2最適化版
--extra-cflags="-mtune=core2 -mfpmath=sse -msse" --cpu=i686
Athlon64最適化版
--extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --cpu=i686
Phenom最適化版
--extra-cflags="-mtune=amdfam10 -mfpmath=sse -msse" --cpu=i686
FFmpegのconfigureオプションに、
--cpu=athlon64
などど追加すると、そのCPUに特化した最適化が実行されますので、ご自分の環境でしか使用しない場合は、試してみると良いかもしれません。
2012/01/07 追記Core2最適化版、Athlon64最適化版、Phenom最適化版のconfigureオプションに、--cpu=i686 を追加しました。
Pentium4のconfigureオプションに、--cpu=pentium4 を追加しました。
configureの結果に以下のような違いがあります。
・「--cpu」オプション無し
CMOV enabled=no, CMOV is fast=no, EBX available=yes, EBP available=no
・「--cpu=i686」オプション追加
CMOV enabled=
yes, CMOV is fast=
yes, EBX available=yes, EBP available=
yes・「--cpu=pentium4」オプション追加
CMOV enabled=
yes, CMOV is fast=no, EBX available=yes, EBP available=
yes問題なければ、以下のようなメッセージが出ます。
source pathはコンパイル環境により異なります。
思ったよりも時間がかかりますので、気長に待ちましょう。
configureのメッセージを見る
install prefix /usr/local
source path .
C compiler gcc
ARCH x86 (generic)
big-endian no
runtime cpu detection no
yasm yes
MMX enabled yes
MMX2 enabled yes
3DNow! enabled yes
3DNow! extended enabled yes
SSE enabled yes
SSSE3 enabled yes
AVX enabled yes
CMOV enabled yes
CMOV is fast yes
EBX available yes
EBP available yes
debug symbols yes
strip symbols yes
optimize for size no
optimizations yes
static yes
shared no
postprocessing support yes
new filter support yes
network support yes
threading support w32threads
SDL support no
Sun medialib support no
libdxva2 enabled no
libva enabled no
libvdpau enabled no
AVISynth enabled yes
libcelt enabled no
frei0r enabled no
gnutls enabled no
libaacplus enabled no
libass enabled yes
libcdio support yes
libcelt support no
libdc1394 support no
libdirac enabled no
libfaac enabled no
libgsm enabled yes
libmodplug enabled yes
libmp3lame enabled yes
libnut enabled no
libopencore-amrnb support yes
libopencore-amrwb support yes
libopencv support no
libopenjpeg enabled no
librtmp enabled yes
libschroedinger enabled no
libspeex enabled yes
libstagefright-h264 enabled no
libtheora enabled yes
libutvideo enabled no
libv4l2 enabled no
libvo-aacenc support yes
libvo-amrwbenc support yes
libvorbis enabled yes
libvpx enabled yes
libx264 enabled yes
libxavs enabled no
libxvid enabled yes
openal enabled no
openssl enabled no
zlib enabled yes
bzlib enabled yes
configureのメッセージを閉じる
(長いので中略)
License: GPL version 3 or later
Creating config.mak and config.h...
その後、
$ make
ffmpeg.exe が出来ていれば完了です。
【補足】
自分用の場合は、再配布を考えなくても良いので、libfaac入りのFFmpegをビルドすることもできます。
追加で、libfaacをコンパイル&インストールします。
libfaac のコンパイル&インストールconfigureオプションの適当な所に、
--enable-nonfree
--enable-libfaac
を追加します。
configureのメッセージに、
libfaac enabled yes
と表示されていれば、makeして完了です。
FFmpegのエンコードオプションで、
-acodec libfaac
が使えるようになります。
当サイトで配布しているFFmpegは配布用のため、libfaacは無効にしています。
【更新履歴】を見る
2011/07/31 追記
configureオプションを変更したため、全面的に書き直しました。
当サイトで配布しているバイナリは
--enable-w32threads
としていますが、
pthreadsを使用する手順は、以下の記事を参照してください。
FFmpegのコンパイル (2011/07/31) pthreads
2011/08/06 追記
libvpx-v0.9.7 w32threads版の記事へのリンクを追加しました。
libvpx-v0.9.7
2011/08/14 追記
パッチを更新しました。(rev.31873(658a8bb)〜)
ffmpeg-20110724.diff
ffmpeg-20110814.diff
2011/08/30 追記
パッチを更新しました。(rev.32154(caf63eb)〜)
ffmpeg-20110830.diff
2011/09/21 追記
パッチを更新しました。(rev.32736(0bbb1cd)〜)
ffmpeg-20110921.diff
2011/09/21 追記
個別のライブラリに、libcdio-0.83git を追加しました。
libcdio-0.83git
2011/09/21 追記
configureオプションに、--enable-libcdio を追加しました。
2011/09/25 追記
パッチを更新しました。(rev.33094(1aad9cd)〜)
libcdioで、エンコードの最後にクラッシュするのを修正しました。
ffmpeg-20110925.diff
2011/09/30 追記
パッチを更新しました。(rev.33094(ecf31a6)〜)
ffmpeg-20110929.diff
2011/10/14 追記
パッチを更新しました。(rev.33608(e91230a)〜)
libmodplug対応など。
ffmpeg-20111013.diff
2011/10/14 追記
個別のライブラリに、libmodplug-0.8.8.4 を追加しました。
libmodplug-0.8.8.4
2011/10/14 追記
configureオプションに、--enable-libmodplug を追加しました。
2011/10/26 追記
パッチを更新しました。(rev.34028(02ac6a6)〜)
ffmpeg-20111025.diff
2011/11/10 追記
パッチを更新しました。(rev.34615(26ae9a5)〜)
ffmpeg-20111110.diff
2011/11/11 追記
GnuTLSを、OpenSSLの代わりに使用する場合は、以下の記事を参照してください。
OpenSSLはGPL非互換なので、GnuTLSかPolarSSLをおすすめします。
gnutls-2.12.14
rtmpdump-2.4 GnuTLS版
2011/11/11 追記
polarssl-0.99-pre5 を polarssl-1.0.0 に修正しました。
2011/11/21 追記
パッチを更新しました。(rev.35051(50d6f81)〜)
ffmpeg-20111121.diff
2011/11/22 追記
パッチを更新しました。(rev.35063(2c28e26)〜)
ffmpeg-20111122.diff
2011/11/28 追記
パッチを更新しました。(rev.35260(2cf4bd7)〜)
ffmpeg-20111128.diff
2011/11/29 追記
configureオプション、--enable-postproc はデフォルトなので削除しました。
その他、順番をいくつか変更しました。
2011/12/02 追記
パッチを更新しました。(rev.35369(bba8975)〜)
ffmpeg-20111202.diff
2011/12/07 追記
パッチを更新しました。(rev.35482(b404ab9)〜)
libass追加用にconfigureを修正。など。
ffmpeg-20111206.diff
2011/12/07 追記
configureオプションに、--enable-libass と --enable-libfreetype を追加しました。
2011/12/07 追記
字幕ファイルを読み込むためのライブラリlibassを追加する場合、以下のライブラリが必要になります。
pkg-config_0.26-1_win32
libiconv-1.13.1
freetype-2.4.8
expat-2.0.1
fontconfig-2.8.0
fribidi-0.19.2
libass-0.10.0
2011/12/17 追記
libavformat/sbgdec.c に、MinGWで未定義のマクロ(ENOTSUP, ELOOP, EOVERFLOW)があってコンパイルできないため、configureオプションに、--disable-demuxer=sbg を追加しました。
2011/12/19 追記
パッチを更新しました。(rev.35931(1af0ace)〜)
libavformat/sbgdec.c のAVERROR(ENOTSUP)をAVERROR_PATCHWELCOMEに変更。など。
ffmpeg-20111219.diff
2011/12/19 追記
libavformat/sbgdec.c のエラーはパッチで対応したので、configureオプションの、--disable-demuxer=sbg を削除しました。
2011/12/21 追記
パッチを更新しました。(rev.36001(b0aaf30)〜)
libavformat/sbgdec.c は公式に修正されました。
ffmpeg-20111221.diff
2012/01/07 追記
パッチを更新しました。(rev.36539(4dfb74c)〜)
以下の記事についても、パッチを追加しました。
Latest FFMPEG 0.9 Issues
http://permalink.gmane.org/gmane.comp.video.ffmpeg.devel/138355
ffmpeg-20120107.diff
2012/01/07 追記
Core2最適化版、Athlon64最適化版、Phenom最適化版のconfigureオプションに、--cpu=i686 を追加しました。
Pentium4のconfigureオプションに、--cpu=pentium4 を追加しました。
configureの結果に以下のような違いがあります。
・「--cpu」オプション無し
CMOV enabled=no, CMOV is fast=no, EBX available=yes, EBP available=no
・「--cpu=i686」オプション追加
CMOV enabled=yes, CMOV is fast=yes, EBX available=yes, EBP available=yes
・「--cpu=pentium4」オプション追加
CMOV enabled=yes, CMOV is fast=no, EBX available=yes, EBP available=yes
2012/01/20 追記
パッチを更新しました。(rev.36936(4cf81d9)〜)
ffmpeg-20120120.diff
2012/01/29 追記
パッチを更新しました。(rev.37208(01fcbdf)〜)
ffmpeg-20120127.diff
2012/01/29 追記
個別のライブラリに、libvpx-v1.0.0 を追加しました。
libvpx-v1.0.0
旧版は削除しました。
libvpx-0.9.6(旧版)
libvpx-v0.9.7(旧版)
2012/01/30 追記
個別のライブラリに、gnutls-3.0.12 を追加しました。
gnutls-3.0.12
旧版は削除しました。
gnutls-2.12.14(旧版)
2012/01/30 追記
FFmpeg rev.37209以降の更新で、「-flags2」で設定していたものが独立したオプションになり、特にx264関連の設定が大幅に変わりました。
以前の「-flags2」の設定も使用できるように、Revert用のパッチを作りましたので、必要であれば適用してください。
ffmpeg-global_opts-20120130.diff
2012/02/12 追記
パッチを更新しました。(rev.37798(cd1c12b)〜)
ffmpeg-20120212.diff
2012/02/23 追記
「-flags2」用のパッチを更新しました。(rev.38090(eadd426)〜)
ffmpeg-global_opts-20120223.diff
2012/02/28 追記
「-flags2」用のパッチを更新しました。(rev.38307(e382288)〜)
ffmpeg-global_opts-20120228.diff
2012/03/02 追記
「-flags2」用のパッチを更新しました。(rev.38402(79ae084)〜)
ffmpeg-global_opts-20120302.diff
2012/03/03 追記
パッチを更新しました。(rev.38474(23a5bf9)〜)
ffmpeg-20120303.diff
2012/03/22 追記
「-flags2」用のパッチを更新しました。(rev.39033(967facb)〜)
ffmpeg-global_opts-20120322.diff
2012/04/17 追記
2012/04/13 以降、以下のようなエラーが出る場合があります。
library.mak:95: *** missing separator. Stop.
ファイルの最後に、改行コードが入っていないものがあるのが原因です。
その場合は、以下のパッチを適用してください。
ffmpeg-arch_objs-20120417.diff
$ patch -p1 < ffmpeg-arch_objs-20120417.diff
2012/04/22 追記
「-flags2」用のパッチを更新しました。(rev.40017(3194ab7)〜)
ffmpeg-global_opts-20120422.diff
2012/04/25 追記
パッチを更新しました。(rev.40098(44bd2f9)〜)
ffmpeg-20120425.diff
2012/04/25 追記
個別のライブラリに、libbluray-0.2.2 を追加しました。
libbluray-0.2.2
2012/04/25 追記
configureオプションに、--enable-fontconfig と --enable-libbluray を追加しました。
2012/05/02 追記
パッチを更新しました。(rev.40282(b197c1c)〜)
ffmpeg-20120502.diff
2012/05/02 追記
「-flags2」用のパッチを更新しました。(rev.40282(b197c1c)〜)
ffmpeg-global_opts-20120502.diff
2012/05/02 追記
改行が抜けているファイル用のパッチを更新しました。(rev.40282(b197c1c)〜)
ffmpeg-arch_objs-20120502.diff
2012/05/02 追記
FFmpegのDirectShow(dshow)を有効にするためには、MinGW-w64が必要です。
MinGWのmingwrtとw32apiの代わりに、MinGW-w64を使う方手順は、以下の記事を参照してください。
MinGW-w64 for win32 のインストール
2012/05/09 追記
改行が抜けているファイル用のパッチを更新しました。(rev.40508(b4178a3)〜)
ffmpeg-arch_objs-20120509.diff
2012/05/09 追記
rev.40508(b4178a3)以降、テスト(make fate)を実行するためにffprobeが必要になりました。
configureオプションの、--disable-ffprobe を削除しました。
2012/05/10 追記
パッチを更新しました。(rev.40546(61930bd)〜)
ffmpeg-20120510.diff
2012/05/10 追記
その場合は、以下のパッチを適用してください。
改行コードが原因のエラーが出るMakefileが増えるたびに、パッチを適用するのも面倒です。
ダウンロード(git clone)済みのソースコードがある場合、一旦Makefileを全部削除して、改行コードをLFにして作成し直せば、エラーが出なくなります。
$ echo 'Makefile eol=lf' > .gitattributes
$ find ./ -name 'Makefile' -print | xargs rm
$ git stash
その後、以下のパッチを適用します。
$ patch -p1 < ffmpeg-arch_objs-20120509.diff
2012/05/14 追記
「-flags2」用のパッチを更新しました。(rev.40630(6108e1b)〜)
ffmpeg-global_opts-20120514.diff
2012/05/18 追記
「-flags2」用のパッチを更新しました。(rev.40792(ae1ab82)〜)
ffmpeg-global_opts-20120518.diff
2012/05/26 追記
テスト(make fate)を実行するためにffprobeが必要だったのですが、また必要なくなりました。
configureオプションに、--disable-ffprobe を追加しました。
2012/06/02 追記
「-flags2」用のパッチを更新しました。(rev.41161(a1fc1d2)〜)
ffmpeg-global_opts-20120601.diff
2012/06/16 追記
「-flags2」用のパッチを更新しました。(rev.41595(15f8941)〜)
ffmpeg-global_opts-20120615.diff
2012/06/27 追記
パッチを更新しました。(rev.41840(e847f41)〜)
ffmpeg-20120627.diff
2012/07/10 追記
パッチを更新しました。(rev.42313(46a4707)〜)
ffmpeg-20120710.diff
2012/07/13 追記
パッチを更新しました。(rev.42471(81fe2e8)〜)
ffmpeg-20120713.diff
2012/07/15 追記
パッチを更新しました。(rev.42516(39afcf1)〜)
ffmpeg-20120715.diff
2012/07/22 追記
パッチを更新しました。(rev.42739(9e1508f)〜)
ffmpeg-20120722.diff
【更新履歴】を閉じる
丁寧に解説してあり、パッチも用意されていますので、記事のとおりに操作すれば完璧です。素晴らしい!
1点だけ、MSYSはMinGWのパッケージで入ってしまうので、インストール不要でした。
ttp://www.kkaneko.com/rinkou/cygwin/mingw.html
コメントありがとうございます。
お役に立てて良かったです。
> 1点だけ、MSYSはMinGWのパッケージで入ってしまうので、インストール不要でした。
確かに、いっぺんにインストール出来た方が楽ですね。
だいぶ前に試した時、MSYS関連のツールまでMinGWのディレクトリに入ってしまうのが嫌で、使うのをやめたような?
しばらく試してなかったので、時間のある時に試してみます。
ご指摘ありがとうございました。
Kazuki Ashiyaです。
すごく久々にビルドしようとしたら、以前は全く問題なかったところでエラーになって困っています。
libavformat/os_support.cのところです。
以前もこのブログで上がっていたようでbashを入れ直してみたのですが、全く直りません。
何が問題なのでしょう?
要はソケットのヘッダ周りですよね…
お久しぶりです。
ソケットのヘッダ周りなら、w32apiでしょうか。
ちなみに私の環境では、
w32api-3.17
mingwrt-3.20
binutils-2.21.53
となっています。
GCCは、4.5系でも4.6系でも大丈夫なはずです。
エラーメッセージを載せていただけると、解決のヒントになるかもしれません。
エラーメッセージは大量すぎるので載せられません(汗
見たところではwinsock2.hとio.h、socket.h、in.h、inet.h、netdb.hの間で大量にconflictしているわけなんですよね。
今さっきMSYSもMinGWも全部新しくしなおしたので、w32apiとかも全部新しくなってるんですけど、それでもまだ出ますね。
なんなんだろう…。
たとえば、
make 1>out.log 2>err.log
などと出力をログに保存して、err.logから該当する部分をpastebinで共有するというのはいかがでしょうか?
pastebinにテキストをペーストしてから、Submit Postして、出てきたURLを教えていただければ、だれでも見られるようになります。
pastebinは、
http://pastie.org/
http://paste2.org/
http://ja.pastebin.ca/
あたりが簡単そうです。
私がエラーメッセージを見ても解決できるかどうか分かりませんが、どなたか分かる方がいらっしゃるかもしれません。
pastebinにアップしてみました。
http://ja.pastebin.ca/2094629
ちなみに、w32apiをソースからビルドしてみたけど変わりませんでした。
エラーのログ見てみました。
include/netdb.h
include/sys/socket.h
include/bits/socket.h
include/arpa/inet.h
など、私のMinGW環境には無いインクルードファイルでエラーになっています。
glibcとか、何か特殊なライブラリなどインストールしていませんか?
そうか、glibcが悪さしていたのか…
アンインストールしたらうまく行きました。ご迷惑をおかけしました。
GCCを自前でビルドするときにいるんだったかな…でインストールしたのをすっかり忘れていました。今度から別個に環境作ってやることにします。
確証は無かったのですが、glibcで当たってましたか。
私も以前、glibcをインストールしようとして、うまくいかなかったことがあったような?
とりあえず、解決してよかったです。
http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.11/
MSYS-1.0.11.exeをダウンロード
http://sourceforge.net/projects/mingw/files/MinGW/
mingw-get-inst-20111118.exeをダウンロード
C++ Compilerにチェックを入れる
MSYSとmingwをインストールする
パスを環境変数から;C:\MinGW\binを追加する
http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=HEAD;sf=tgz
からffmpeg-HEAD-58c2572.tar.gzをダウンロード
http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
からspeex-1.2rc1.tar.gzをダウンロード
C:\msys\home\owner に
ffmpeg-HEAD-58c2572.tar.gz
speex-1.2rc1.tar.gz
を移動してwinrarで2つを解凍
C:\msys\msys.bat を起動して
cd speex-1.2rc1
./configure --prefix=/mingw --enable-sse
make
make install
cd
cd ffmpeg-HEAD-58c2572
./configure --enable-gpl --enable-version3 --enable-libspeex --disable-yasm
ここでエラーが出て止まってしまいます。
config.log の最後にこのように書いてあります。
C:/Users/owner/AppData/Local/Temp/ffconf..OWNER-PC.500.5860.c:1:25: fatal error: speex/speex.h: No such file or directory
compilation terminated.
ERROR: libspeex not found
PCのOSはWin7 64bitとVista 32bitでも試しました。
config.log の全部はこちらです。
http://privatepaste.com/160b1c230f
今回のSpeexに限った話ではないのですが、x264やlameでもNo such file or directoryと
同様のエラーが出てしまいます。どのようにすれば解決できるでしょうか。
全部「No such file or directory」になってしまうということは、おそらく、MinGWのディレクトリ「C:\MinGW」が「/mingw」にマウントされていないのではないでしょうか。
C:\msys\1.0\etc\ の「fstab」というテキストファイルに、
c:/MinGW /mingw
という1行はありますか?
「fstab」がなければ、テキストファイルを新規作成して、上記の1行を追加してみてください。
「C:\MinGW」が「/mingw」にマウントできていれば、Windowsの環境変数は修正しなくても良いはずです。
MSYSをインストールする時に、MinGWのインストール先を訪ねられたと思いますが、そこで
c:/MinGW
と指定すれば、自動で「fstab」を書き換えてくれるようになっています。
mingw-get-inst-20111118.exeでMSYSも一緒にインストールすれば、「fstab」も勝手に設定してくれますので、いろいろ試して上手く行かなければ、最初からインストールし直してみると良いかもしれません。
まだ他にもエラーが出ているのでもう少し調べてみます。
先日はありがとうございました。ロべルトです。無事にlameパッチを当てたffmpegはビルドできましたが、
今度はaacplusのパッチを当てたffmpegをビルドしようとするとエラーが出て先に進まなくなりました。
ビルドにはmingw-get-inst-20111118を使用して
"C:\MinGW\msys\1.0\msys.bat"を実行しています。
エラーは libaacplus >= 2.0.0 not found です。
libaacplus-2.0.2
ffmpeg-HEAD-58c2572
を使用して、libaacplusのパッチは当てていません。
libaacplusは
./autogen.sh --enable-shared --enable-static
make
make install
してlibaacplus-2.0.2\frontend\.libsにaacplusenc.exeが単体では起動できずに
libaacplus-2.dllが必要と言われて、これを同じ所に置くとaacplusencが使えました。
ffmpegは
# ./configure --enable-static --enable-shared --enable-gpl --enable-nonfree --enable-libaacplus
を実行してlibaacplus >= 2.0.0 not foundで止まります。
ログは以下のとおりです
libaacplus
http://privatepaste.com/fd88853a48
ffmpeg
http://privatepaste.com/3796d4a478
./autogen.sh \
--prefix="/mingw/i686-pc-mingw32" \
--build="i686-pc-mingw32" \
--host="i686-pc-mingw32" \
--disable-shared --enable-static --enable-fast-install
make clean && make && make install-strip
cd ffmpeg
PKG_CONFIG_PATH="/mingw/i686-pc-mingw32/lib/pkgconfig" \
./configure \
--target-os="mingw32" \
--arch="x86" \
--cpu="i686" \
--enable-gpl \
--enable-nonfree \
--enable-libaacplus \
〜etc〜
make clean && make -j4
↑こんな感じでmake通りますが...
「fstab」の確認はしましたか?
PortableGit-1.7.10-preview20120409.7z
http://code.google.com/p/msysgit/downloads/list
MSYS_MinGW_GCC_470_x86-x64_Full.7z
http://xhmikosr.1f0.de/tools/#!/view=details/lang=en/sort=na
msysフォルダ作成
PortableGitをmsysフォルダに解凍
MSYS_MinGW_GCC_470_x86-x64_Fullをmsysフォルダに解凍(全て上書き)
H:\msys\etc にあるfstab.sample
H:/mingw /mingw
を
H:/msys/mingw /mingw
に変更しfstabで保存。
msys.batを起動。
参考までに...
情報ありがとうございます。
たしかに、msysgitの方にも必要なコマンドが入っていて、オリジナルのMSYSとダブっているので、ムダだなとは思っていました。
X5-452さんのやり方だと、ムダが無くてよさそうですね。
でも、また環境を作り直すのも面倒なので、どうしようか考えます…。