スポンサードリンク

2010年07月27日

x264のコンパイル&インストール (make fprofiled)

NASMYasmを、あらかじめインストールしておきます。

x264は、以下の場所にあります。
http://www.videolan.org/developers/x264.html

x264の最新情報は、ここでチェックしましょう。
http://x264.nl/

Gitがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ git clone git://git.videolan.org/x264.git

Gitがインストールされていない場合でも、とりあえず、daily tarballのソースファイルを拾ってくればコンパイルできます。

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20100725-2245.tar.bz2
を、適当なディレクトリに保存します。

毎日更新されていて、日付がファイル名になっていますので、その時点でのファイル名に読み替えてください。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf x264-snapshot-20100725-2245.tar.bz2
$ cd x264-snapshot-20100725-2245

以下のパッチを適用します。
$ patch -p1 < x264-pthreads-20100717.diff


次に、make fprofiledするための、適当なサンプル動画を用意します。
自分で用意するのがめんどうな場合は、

Xiph.org Test Media
http://media.xiph.org/
とか、
http://media.xiph.org/video/derf/
辺りから、拡張子がy4mのものをダウンロードして使用します。

私の場合、B'zの「MY LONELY TOWN(初回限定盤 CD+DVD)」に付いてきたDVDから、携帯動画変換君を使ってサンプル動画を作りました。

Title=x264 fprofiled sample
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -an -deinterlace -vcodec mpeg2video -sameq -ss 00:01:40 -vframes 100 "<%TemporaryFile%>.mpg""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%TemporaryFile%>.mpg" -an -f yuv4mpegpipe "<%OutputPath%>\sample.y4m""
Command2="rm "<%TemporaryFile%>.mpg""

デインターレースして、1分40秒の所から100フレーム切り出しています。
ソースがプログレッシブなら、yuv4mpegpipeに直接変換すれば良いです。

サンプル動画が準備できたら、

$ ./configure --prefix=/mingw
$ make fprofiled VIDS="sample.y4m"
$ make install

以上で終了です。


【補足】
ただmakeしたときのlibx264.aのサイズは約1,000KB、make fprofiledしたときのlibx264.aのサイズは830KB前後になりました。

私が使用したサンプル動画は720x480pですが、映像サイズを大きく(1920x1080pなど)すると、libx264.aのサイズが小さくなる傾向があるようです。

フレーム数は100としましたが、500などに増やすと、若干libx264.aのサイズが小さくなりました。
ですが、時間がかかるわりに大して違わなかったため、フレーム数は100にしました。

サンプル動画はどうするのが最適なのか、ご存じの方がいらっしゃったら、教えていただけるとありがたいです。
posted by あべちん at 04:49| Comment(3) | TrackBack(0) | FFmpegコンパイル

2010年06月29日

implicit declaration of function 'strcasecmp'

FFmpeg自前ビルドが趣味の皆様へ。

FFmpeg rev.23823から、こんなエラーが出てコンパイルできなくなりました。

libavfilter/parseutils.c: In function 'color_table_compare':
libavfilter/parseutils.c:217:5: error: implicit declaration of function 'strcasecmp'

rev.23823のアップデートで、CFLAGSに
-Werror=implicit-function-declaration
というフラグが付いて、今までwarningでコンパイルが通っていたのが、エラーで終了するようになってしまったんですね。

この件について、バグレポートが上がっていました。

str[n]casecmp not declared under __STRICT_ANSI__
http://sourceforge.net/tracker/?func=detail&aid=3022047&group_id=2435&atid=102435

tempnam not declared under __STRICT_ANSI__
http://sourceforge.net/tracker/?func=detail&aid=3022054&group_id=2435&atid=102435


そのうち修正されると思いますが、とりあえずこちらのパッチを適用してください。

/mingw/include/string.h のパッチ。
$ patch -p0 < strcasecmp.diff

/mingw/include/stdio.h のパッチ。
$ patch -p0 < tempnam.diff

ご参考まで。
posted by あべちん at 01:52| Comment(0) | TrackBack(0) | FFmpegコンパイル

2010年06月21日

Pthreadsのコンパイル&インストール

Pthreadsは、以下の場所にあります。
http://sourceware.org/pthreads-win32/

正式リリースは、pthreads-w32-2-8-0-release.tar.gzですが、cvsでダウンロードできる、pthreads-w32-2-9-0のソースを置いておきますので、こちらをご利用下さい。
pthreads-w32-2-9-0-release.tar.bz2

または、CVSからダウンロードする場合は以下の通りです。
$ cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 login
(Logging in to anoncvs@sourceware.org)
CVS password:

ここで、
anoncvs
と入力します。

その後、
$ cvs -d :pserver:anoncvs@sourceware.org:/cvs/pthreads-win32 checkout pthreads


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf pthreads-w32-2-9-0-release.tar.bz2
$ cd pthreads

ここで、discussion listに上がっていた、64 bit Windows関連のパッチpthreads-w64.diffを適用します。

$ patch -p1 < pthreads-w64.diff

パッチを適用したら、
$ make clean GC-static
$ cp libpthreadGC2.a /mingw/lib/libpthread.a
$ cp pthread.h sched.h semaphore.h /mingw/include/.

libpthreadGC2.aは、ファイル名をlibpthread.aに変更して、コピーするのがミソです。
ヘッダファイル3つも、忘れずにコピーして下さい。

以上で終了です。


【補足】
この記事のautostaticパッチはCVSにマージされましたので、パッチは不要になりました。
http://sourceware.org/ml/pthreads-win32/2010/msg00006.html
posted by あべちん at 19:34| Comment(0) | TrackBack(0) | FFmpegコンパイル

2010年06月16日

FFmpegのコンパイル (2010/6/15)

それでは、FFmpegのコンパイルです。

1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。

MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。

・make-3.81
http://sourceforge.net/downloads/mingw/MSYS/make/make-3.81-3/
make-3.81-3-msys-1.0.13-bin.tar.lzma

・bash-3.1.17
http://sourceforge.net/downloads/mingw/MSYS/bash/bash-3.1.17-3/
bash-3.1.17-3-msys-1.0.13-bin.tar.lzma

ダウンロードしたファイルを、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
現時点での最新版、gcc-4.5.0をインストールします。
以下のファイルを、すべて
C:\MinGW\
に、解凍します。

以下の旧バージョンのライブラリが
C:\MinGW\lib\
のディレクトリに残っている場合は削除してください。
libstdc++.a
libstdc++.la
libsupc++.a
libsupc++.la


・gcc-4.5.0
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GCC/Version4/gcc-4.5.0-1/
gcc-core-4.5.0-1-mingw32-bin.tar.lzma
gcc-c++-4.5.0-1-mingw32-bin.tar.lzma
libgomp-4.5.0-1-mingw32-dll-1.tar.lzma
libgcc-4.5.0-1-mingw32-dll-1.tar.lzma
libssp-4.5.0-1-mingw32-dll-0.tar.lzma
libstdc++-4.5.0-1-mingw32-dll-6.tar.lzma

・gmp
http://sourceforge.net/downloads/mingw/MinGW/gmp/gmp-5.0.1-1/
libgmpxx-5.0.1-1-mingw32-dll-4.tar.lzma
libgmp-5.0.1-1-mingw32-dll-10.tar.lzma

・mpfr
http://sourceforge.net/downloads/mingw/MinGW/mpfr/mpfr-2.4.1-1/
libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma

・mpc
http://sourceforge.net/downloads/mingw/MinGW/mpc/mpc-0.8.1-1/
libmpc-0.8.1-1-mingw32-dll-2.tar.lzma


上記のもの以外に、最新版のGCCは以下の所からもダウンロードできます。
どちらかお好みでインストールしてください。
TDM-GCC
http://tdm-gcc.tdragon.net/download


その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。

・GNU Binutils
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GNU-Binutils/binutils-2.20.51/
binutils-2.20.51-1-mingw32-bin.tar.lzma

・MinGW API for MS-Windows
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/Win32-API/w32api-3.14/
w32api-3.14-mingw32-dev.tar.gz

・MinGW Runtime
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/MinGW-RT/mingwrt-3.18/
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

2010/06/29 追記
FFmpeg rev.23823以降のコンパイルの時、strcasecmp関数とtempnam関数がエラーになってしまいます。
こちらの記事を参考にパッチを適用してください。
implicit declaration of function 'strcasecmp'


追加で、MSYS DTKをインストールします。

MSYS Supplementary Tools
http://sourceforge.net/downloads/mingw/MSYS/Supplementary%20Tools/msysDTK-1.0.1/
より、
msysDTK-1.0.1.exe
を、ダウンロードして実行します。
perl、automake、autoconfなどがインストールされます。


続きを読む
posted by あべちん at 02:18| Comment(0) | TrackBack(0) | FFmpegコンパイル

2010年05月28日

FFmpegのコンパイル (2010/5/28)

いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。

MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。

MinGW公式ページからダウンロードリンクが見つからなくなっていますので、こちらに置いておきます。
bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
gcc4.4系の安定版の最新はgcc4.4.3ですが、MinGWのwebページには、gcc4.4系はgcc4.4.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Current Release_ gcc-4.4.0 より、
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-dll.tar.gz
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-c++-4.4.0-mingw32-dll.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz

自分でgccをビルドするのは面倒だけど、できるだけ最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/


MinGW GCC 4.5.0をインストールする場合は、以下の記事を参考にしてください。
MinGW GCC 4.5.0リリース


その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
binutils-2.20.1 より、
binutils-2.20.1-2-mingw32-bin.tar.gz

MinGW API for MS-Windows
w32api-3.14 より、
w32api-3.14-mingw32-dev.tar.gz

MinGW Runtime
mingwrt-3.18 より、
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。


追加で、MSYS DTKをインストールします。
以下のページより、
http://sourceforge.net/project/showfiles.php?group_id=2435

MSYS Supplementary Tools
msysDTK-1.0.1 より、
msysDTK-1.0.1.exe
を、ダウンロードして実行します。
perl、automake、autoconfなどがインストールされます。


続きを読む
posted by あべちん at 22:32| Comment(3) | TrackBack(0) | FFmpegコンパイル

libvpxのコンパイル&インストール

libvpxは、以下の場所にあります。
The WebM project
http://www.webmproject.org/

メニューのCodeより、
http://www.webmproject.org/code/

Get the Code
snapshots
と、たどっていくと、
http://code.google.com/p/webm/downloads/list

ここに、libvpxのソースコードや、FFmpegでWebM(VP8)動画のエンコードに対応するパッチ、WebM(VP8)動画再生用のDirectShowフィルタなどがあります。

ですが、このままだとFFmpegのビルドができませんでしたので、gitでダウンロードしたlibvpxのソースコードと、修正したパッチを置いておきます。
libvpx-0.9.0-31.tar.bz2

snapshotsにあるソースコード
libvpx-0.9.1.tar.bz2
でも問題ありませんが、当サイトの更新に合わせて、ソースコードも置いておきます。
libvpx-0.9.1-122.tar.bz2

最新のソースコードは、gitでもダウンロードできます。
$ git clone git://review.webmproject.org/libvpx.git


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libvpx-0.9.1-122.tar.bz2
$ cd libvpx

libvpxでpthreadを使用するためのパッチを適用します。
$ patch -p1 < libvpx-0.9.0-20100528.diff

その後、
$ CFLAGS="-march=i686 -DPTW32_STATIC_LIB" ./configure --target=x86-win32-gcc --disable-examples
$ make
$ cp libvpx.a /mingw/lib/
$ mkdir -p /mingw/include/vpx
$ cp vpx/*.h /mingw/include/vpx/

以上で終了です。


【補足】
CFLAGSについて、
-march=i686 は、これを付けないと、FFmpegがエラーを吐いてエンコードできませんでした。

-DPTW32_STATIC_LIB は、pthreadライブラリをスタティックリンクするための、おまじないです。


FFmpegでWebM(VP8)動画のエンコードに対応するためには、以下のパッチが必要です。
(libvpxではなく、FFmpeg本体のパッチです。)
ffmpeg-vp8-encdec-20100528.diff

このパッチを適用する前に、もう一つ先に適用するパッチがありますので、FFmpeg本体のコンパイル手順を参照してください。

2010/06/05 追記
FFmpeg rev.23474以降、FFmpeg本体へのパッチは不要になりました。


【更新履歴】
2010/06/15 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.0-93.tar.bz2

2010/06/22 追記
ソースコードをアップデートしました。
バージョンが0.9.1になりました。
パッチは変更ありません。
libvpx-0.9.1-13.tar.bz2

2010/07/16 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-39.tar.bz2

2010/07/18 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-40.tar.bz2

2010/07/28 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-69.tar.bz2

2010/08/04 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-81.tar.bz2

2010/08/22 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-106.tar.bz2

2010/09/01 追記
ソースコードをアップデートしました。
パッチは変更ありません。
libvpx-0.9.1-122.tar.bz2
posted by あべちん at 00:57| Comment(2) | TrackBack(0) | FFmpegコンパイル

2010年05月04日

librtmp(RTMP Dump)のコンパイル&インストール

librtmp(RTMP Dump)のインストールには、zlibとOpenSSLのライブラリが必要ですので、先にインストールしておいてください。
zlibのコンパイル&インストール
OpenSSL 1.0.0のコンパイル&インストール

librtmp(RTMP Dump)は、以下の場所にあります。
http://rtmpdump.mplayerhq.hu/

以下のディレクトリから、
http://rtmpdump.mplayerhq.hu/download/
rtmpdump-2.2d.tgz
rtmpdump-2.3.tgz
を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf rtmpdump-2.2d.tgz
$ cd rtmpdump-2.2d
$ make mingw CC=gcc AR=ar
$ tar xzf rtmpdump-2.3.tgz
$ cd rtmpdump-2.3
$ make SYS=mingw CC=gcc AR=ar
$ cd librtmp
$ make install prefix=/mingw SHARED=no

以上で終了です。


【更新履歴】
2010/05/31 追記
最新版は、rtmpdump-2.2e.tar.gz です。
2010/07/01 追記
最新版は、rtmpdump-2.3.tgz です。
posted by あべちん at 23:21| Comment(0) | TrackBack(0) | FFmpegコンパイル

OpenSSL 1.0.0のコンパイル&インストール

OpenSSLは、以下の場所にあります。
http://www.openssl.org/

左サイドバーのSourceから、
http://www.openssl.org/source/
openssl-1.0.0.tar.gz
openssl-1.0.0a.tar.gz
を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf openssl-1.0.0a.tar.gz
$ cd openssl-1.0.0a

以下のパッチを適用します。
$ patch -p1 < openssl-1.0.0-mingw.diff

このパッチは以下の情報を参考にしました。(蓄電さん情報)
http://fledna-tech.blogspot.com/2010/04/compile-openssl-100-with-mingw-gcc-44.html

その後、
$ ./Configure mingw --prefix=/mingw
$ make
$ make install_sw

以上で終了です。


【補足】
Configureの先頭は大文字なのでご注意ください。

$ make install
とすると、普段あまり使用しないmanページファイル(説明書)が大量にインストールされるため、
$ make install_sw
としています。

動作確認する場合は、
$ make test
の途中で、ファイルサイズ0バイトの空のファイルをコンパイルしようとして、
undefined reference to `_WinMain@16'
というエラーでストップしてしまうので、以下のファイルをコピーしてからmake testします。
$ cp test/dummytest.c test/jpaketest.c
$ cp test/dummytest.c test/md2test.c
$ cp test/dummytest.c test/rc5test.c


【更新履歴】
2010/06/01 追記
最新版は、openssl-1.0.0a.tar.gz です。
パッチの変更はありません。
posted by あべちん at 20:42| Comment(7) | TrackBack(0) | FFmpegコンパイル

2010年04月03日

FFmpegのコンパイル (2010/4/2)

いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。

MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。

MinGW公式ページからダウンロードリンクが見つからなくなっていますので、こちらに置いておきます。
bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
gcc4.4系の安定版の最新はgcc4.4.3ですが、MinGWのwebページには、gcc4.4系はgcc4.4.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Current Release_ gcc-4.4.0 より、
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-dll.tar.gz
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-c++-4.4.0-mingw32-dll.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz

自分でgccをビルドするのは面倒だけど、できるだけ最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/

2010/04/02
GCC本家ではgcc4.5系はまだ正式にリリースされていませんが、MinGW Proposedに早くもgcc4.5系が出ています。
正式にリリースされたら、当サイトでも採用する予定です。

2010/04/22
MinGW GCC 4.5.0正式版がリリースされました。
インストール手順は以下の記事を参考にしてください。
MinGW GCC 4.5.0リリース


その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
binutils-2.20.1 より、
binutils-2.20.1-2-mingw32-bin.tar.gz

MinGW API for MS-Windows
w32api-3.14 より、
w32api-3.14-mingw32-dev.tar.gz

MinGW Runtime
mingwrt-3.18 より、
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

続きを読む
posted by あべちん at 16:25| Comment(7) | TrackBack(1) | FFmpegコンパイル

librtmp(RTMP Dump)のコンパイル&インストール(旧版)

2010/05/04 追記
新しく記事を書き直しましたので、以下の記事を参照してください。
librtmp(RTMP Dump)のコンパイル&インストール


librtmp(RTMP Dump)のインストールには、zlibとOpenSSLのライブラリが必要ですので、先にインストールしておいてください。
zlibのコンパイル&インストール
OpenSSLのコンパイル&インストール

librtmp(RTMP Dump)は、以下の場所にあります。
http://rtmpdump.mplayerhq.hu/

以下のディレクトリから、
http://rtmpdump.mplayerhq.hu/download/
rtmpdump-2.2c.tar.gz
を、適当なディレクトリに保存します。


開発中のソースは、svnで入手できます。
svn co svn://svn.mplayerhq.hu/rtmpdump/trunk rtmpdump

こちらにもソースを置いておきます。
rtmpdump-2.2b-r416.tar.bz2
rtmpdump-2.2c-r437.tar.bz2

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf rtmpdump-2.2b-r416.tar.bz2
$ tar xjf rtmpdump-2.2c-r437.tar.bz2
または、svnが利用できる環境の場合
$ svn co svn://svn.mplayerhq.hu/rtmpdump/trunk rtmpdump
$ cd rtmpdump

正式版の場合は、
$ tar xzf rtmpdump-2.2c.tar.gz
$ cd rtmpdump-2.2c

svn版か正式版のどちらか1つを解凍後、
$ make mingw CC=gcc AR=ar
$ cd librtmp
$ make install prefix=/mingw

以上で終了です。


【補足】
downloadディレクトリ
http://rtmpdump.mplayerhq.hu/download/
からでもソースは入手できますが、
rtmpdump-2.2b.tar.gz
だと、RTMP_SetupURL関数が未定義のため、FFmpegのコンパイル時にエラーになります。
そのため、svnの最新版を使用しています。

2010/4/19 追記
rtmpdump-2.2c.tar.gz から、RTMP_SetupURL関数が実装されました。
posted by あべちん at 15:33| Comment(0) | TrackBack(0) | FFmpegコンパイル

OpenSSLのコンパイル&インストール

2010/05/04 追記
新しく記事を書き直しましたので、以下の記事を参照してください。
OpenSSL 1.0.0のコンパイル&インストール


OpenSSLは、以下の場所にあります。
http://www.openssl.org/

左サイドバーのSourceから、
http://www.openssl.org/source/

openssl-0.9.8n.tar.gz
を、適当なディレクトリに保存します。

最新版は1.0.0ですが、コンパイルできなかったため、0.9.8nにしました。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf openssl-0.9.8n.tar.gz
$ cd openssl-0.9.8n

以下のパッチを適用します。
$ patch -p1 < openssl-0.9.8n-mingw.diff

途中で、ファイルサイズ0バイトの空のファイルをコンパイルしようとして、
undefined reference to `_WinMain@16'
というエラーでストップしてしまうので、以下のファイルをコピーします。
$ cp test/dummytest.c test/jpaketest.c
$ cp test/dummytest.c test/mdc2test.c
$ cp test/dummytest.c test/rc5test.c

その後、
$ ./Configure mingw --prefix=/mingw
$ make
$ make install_sw

以上で終了です。


【補足】
Configureの先頭は大文字なのでご注意ください。

$ make install
とすると、普段あまり使用しないmanページファイル(説明書)が大量にインストールされるため、
$ make install_sw
としています。
posted by あべちん at 15:15| Comment(2) | TrackBack(0) | FFmpegコンパイル

2010年03月27日

libogg、libvorbis、libtheoraのコンパイル&インストール

libogg、libvorbis、libtheoraは、以下の場所にあります。
http://xiph.org/

左の方の、Downloadsから、
http://xiph.org/downloads/
libogg-1.2.0.tar.gz
libvorbis-1.3.1.tar.bz2
libtheora-1.1.1.tar.bz2
を、適当なディレクトリに保存します。

(1) libogg
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libogg-1.2.0.tar.gz
$ cd libogg-1.2.0
$ ./configure --prefix=/mingw
$ make
$ make install


(2) libvorbis
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libvorbis-1.3.1.tar.bz2
$ cd libvorbis-1.3.1
$ ./configure --prefix=/mingw
$ make
$ make install


(3) libtheora
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libtheora-1.1.1.tar.bz2
$ cd libtheora-1.1.1
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 15:22| Comment(0) | TrackBack(0) | FFmpegコンパイル

2010年03月04日

LAME v3.98.3以降 (libmp3lame) のコンパイル&インストール

NASMを、あらかじめインストールしておきます。

LAMEは、以下の場所にあります。
http://lame.sourceforge.net/index.php

Get LAMEから、
http://lame.sourceforge.net/download.php

Current Versions
The current release version of LAME is 3.98.3
Source code tarballs of these versions can be downloaded from SourceForge.
より、ダウンロードページに進み、
lame-3.98.3.tar.gz
lame-3.98.4.tar.gz
を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf lame-3.98.4.tar.gz
$ cd lame-3.98.4
$ ./configure --prefix=/mingw --enable-nasm
$ make
$ make install

以上で終了です。

FFmpegで使用する時は、-acodec libmp3lame です。


【更新履歴】
2010/3/26 追記
最新版は、3.98.4です。
posted by あべちん at 09:07| Comment(1) | TrackBack(0) | FFmpegコンパイル

2009年09月25日

opencore-amrのコンパイル&インストール

opencore-amrは、以下の場所にあります。
http://sourceforge.net/projects/opencore-amr/

【Dowonload Now!】ボタンをクリックして、opencore-amr-0.1.2.tar.gz をダウンロードし、ファイルを適当なディレクトリに保存します。

上記の圧縮ファイルは、なぜか pvamrwbdecoder_basic_op_cequivalent.h が抜けていて、そのままだとコンパイルできません。
不足分のファイルをgitでダウンロードしましたので、こちらに置いておきます。

pvamrwbdecoder_basic_op_cequivalent.h

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf opencore-amr-0.1.2.tar.gz

解凍すると、ディレクトリとは別に以下のファイルが出てきます。
pvamrwbdecoder_basic_op_cequivalent.h
pvamrwbdecoder_basic_op_gcc_armv5.h

この2つのファイルのうち、
pvamrwbdecoder_basic_op_cequivalent.h
を、
opencore-amr-0.1.2/opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/
に、コピーします。

$ cd opencore-amr-0.1.2
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 22:20| Comment(0) | TrackBack(1) | FFmpegコンパイル

2009年08月05日

FFmpegのコンパイル (2009/8/5)

いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
MSYSに標準で入っているmakeも古いので、ついでに更新します。

MinGW公式ページからダウンロードリンクが見つからなくなっていますので、こちらに置いておきます。
bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。

2010/3/24 追記
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっていますので、上記の更新は不要です。


2. MinGW環境のアップデート
安定版の最新はgcc4.4.14.4.2ですが、MinGWのwebページにはgcc4.4.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Current Release gcc-4.4.0 より、
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-dll.tar.gz
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-c++-4.4.0-mingw32-dll.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz


自分でgccをビルドするのは面倒だけど、最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/


その他、以下の3つのパッケージも最新のものにしておきましょう。
以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
GNU binutils-2.19.1 より、
binutils-2.19.1-mingw32-bin.tar.gz

GNU binutils-2.20 より、
binutils-2.20-1-mingw32-bin.tar.gz
GNU binutils-2.20.1 より、
binutils-2.20.1-2-mingw32-bin.tar.gz

MinGW API for MS-Windows
Current Release: w32api-3.13 より、
w32api-3.13-mingw32-dev.tar.gz

Current Release: w32api-3.14 より、
w32api-3.14-mingw32-dev.tar.gz

MinGW Runtime
Current Release: mingwrt-3.15.2 より、
mingwrt-3.15.2-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dll.tar.gz

mingwrt-3.16 より、
mingwrt-3.16-mingw32-dev.tar.gz
mingwrt-3.16-mingw32-dll.tar.gz

mingwrt-3.17 より、
mingwrt-3.17-mingw32-dev.tar.gz
mingwrt-3.17-mingw32-dll.tar.gz

mingwrt-3.18 より、
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

続きを読む
posted by あべちん at 13:30| Comment(1) | TrackBack(0) | FFmpegコンパイル

opencore-amr-0.1.1のコンパイル&インストール

2009/9/25
最新版はopencore-amr-0.1.2です。
この記事は情報が古いので、以下の記事を参照してください。
opencore-amrのコンパイル&インストール


opencore-amrは、以下の場所にあります。
http://sourceforge.net/projects/opencore-amr/

View all files → をクリックして以下のページを表示します。
http://sourceforge.net/projects/opencore-amr/files/

opencore-amr-0.1.1.tar.gz をクリックして、ファイルを適当なディレクトリに保存します。

2009/8/11 追記
上記のページからダウンロードできなくなっていますので、こちらからどうぞ。
opencore-amr-0.1.1.tar.gz

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf opencore-amr-0.1.1.tar.gz
$ cd opencore-amr

インストールの時にエラーになるので、Makefileにパッチopencore-amr-makefile.diffを適用します。

$ patch -p1 < opencore-amr-makefile.diff

パッチを適用した後、
$ make CC=gcc
$ make PREFIX=/mingw install

以上で終了です。
posted by あべちん at 12:21| Comment(4) | TrackBack(0) | FFmpegコンパイル

Pthreadsのコンパイル&インストール (autostatic版)

Pthreadsは、以下の場所にあります。
http://sourceware.org/pthreads-win32/

正式リリースは、pthreads-w32-2-8-0-release.tar.gzですが、cvsでダウンロードできる、pthreads-w32-2-9-0のソースを置いておきますので、こちらをご利用下さい。
pthreads-w32-2-9-0-release.tar.gz

pthreadもstaticライブラリにすることで、pthreadGC2.dllが不要になります。
何をしているか興味のある方は、以下の記事を参照してください。
http://sourceware.org/ml/pthreads-win32/2009/msg00004.html
http://sourceware.org/ml/pthreads-win32/2009/msg00024.html


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf pthreads-w32-2-9-0-release.tar.gz
$ cd pthreads

ここでautostaticのパッチpthreads-autostatic.diffを適用します。

$ patch -p1 < pthreads-autostatic.diff

2010/3/10 追記
mingwrt-3.18より、TLS Callbackが実装されました。
それに伴い、autostaticパッチも修正しましたので、以下のようにパッチを使い分けてください。

mingwrt-3.17以前
pthreads-autostatic-prev.diff

mingwrt-3.18以降
2010/06/15 追記
autostatic以外に、64bit OSでの不具合対応など追加しました。
pthreads-autostatic.diff


パッチを適用したら、
$ make clean GC-autostatic
$ cp libpthreadGC2.a /mingw/lib/libpthread.a
$ cp pthread.h sched.h semaphore.h /mingw/include/.

libpthreadGC2.aは、ファイル名をlibpthread.aに変更して、コピーするのがミソです。
ヘッダファイル3つも、忘れずにコピーして下さい。

以上で終了です。
posted by あべちん at 11:47| Comment(7) | TrackBack(0) | FFmpegコンパイル

x264のコンパイル&インストール

NASMYasmを、あらかじめインストールしておきます。

x264は、以下の場所にあります。
http://www.videolan.org/developers/x264.html

x264の最新情報は、ここでチェックしましょう。
http://x264.nl/

Gitがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ git clone git://git.videolan.org/x264.git

Gitがインストールされていない場合でも、とりあえず、daily tarballのソースファイルを拾ってくればコンパイルできます。

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20090804-2245.tar.bz2
を、適当なディレクトリに保存します。

毎日更新されていて、日付がファイル名になっていますので、その時点でのファイル名に読み替えてください。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf x264-snapshot-20090804-2245.tar.bz2
$ cd x264-snapshot-20090804-2245

libpthreadGC2.aをlibpthread.aにリネームしてインストールしているので、を以下のパッチを適用します。
$ patch -p1 < x264-pthreads-20090717.diff

2010/1/31 追記
rev.1416以降用にパッチをアップデートしました。
$ patch -p1 < x264-pthreads-20100131.diff


2010/7/17 追記
pthreadsライブラリは、winsockライブラリ(-lws2_32)が不要になりましたので、パッチをアップデートしました。
$ patch -p1 < x264-pthreads-20100717.diff

修正が終わったら、
$ CFLAGS=-fno-strict-aliasing ./configure --prefix=/mingw
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 11:25| Comment(3) | TrackBack(0) | FFmpegコンパイル

Xvidのコンパイル&インストール (1.2.2以降)

Xvidは、以下の場所にあります。
http://www.xvid.org/

Developers welcome
More at Xvid codec
から進むと、右の方にソースファイルへのリンクがあります。
Developer Downloads
↓Xvid 1.2.2 final source code

xvidcore-1.2.2.tar.gzを、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf xvidcore-1.2.2.tar.gz
$ cd xvidcore

ここで、pthread関連と、インストールされるライブラリ名をxvidcore.*からlibxvidcore.*に変更するパッチxvidcore-1.2.2-pthreads.diffを適用します。

2010/7/17 追記
pthreadsライブラリは、winsockライブラリ(-lws2_32)が不要になりましたので、パッチをアップデートしました。
xvidcore-1.2.2-pthreads-20100717.diff

$ patch -p1 < xvidcore-1.2.2-pthreads.diff
$ patch -p1 < xvidcore-1.2.2-pthreads-20100717.diff

2010/04/28 追記
yasm-1.0.0をインストールすると、configureの時に
yasm version is too old
となるので、、yasm-1.0.0を検出するためのパッチxvidcore-1.2.2-yasm.diffを追加しました。

$ patch -p1 < xvidcore-1.2.2-yasm.diff

その他、VAQ-patchというのも、とりあえず適用してみます。

VAQ: Making Xvid's Adaptive Quantization Not Suck
http://forum.doom9.org/showthread.php?t=135093
より、Patchのリンク先にある、以下のページから、
http://pastebin.com/f1718874b
f1718874b.txtをダウンロード。

$ patch -p1 < f1718874b.txt

あとは、以下の手順でコンパイル&インストールします。
$ cd build/generic/
$ ./bootstrap.sh
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 11:12| Comment(0) | TrackBack(0) | FFmpegコンパイル

2009年07月25日

LAME v3.98.2 (libmp3lame) のコンパイル&インストール

NASMを、あらかじめインストールしておきます。

LAMEは、以下の場所にあります。
http://lame.sourceforge.net/index.php

Get LAMEから、
http://lame.sourceforge.net/download.php

Current Versions
The current release version of LAME is 3.98.1
Source code tarballs of these versions can be downloaded from SourceForge.
より、ダウンロードページに進み、
lame-398-2.tar.gzを、適当なディレクトリに保存します。
※3.98.1となっていますが、最新版は3.98.2です。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf lame-398-2.tar.gz
$ cd lame-398-2
$ ./configure --prefix=/mingw --enable-nasm
$ make
$ make install

以上で終了です。

FFmpegで使用する時は、-acodec libmp3lame です。
posted by あべちん at 06:05| Comment(0) | TrackBack(0) | FFmpegコンパイル

2009年06月24日

FFmpegのconfigureメッセージ (rev.19205以降)

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
.align is power-of-two no
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
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available no
10 operands supported yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
new filter support no
filters using lavformat no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
libamr-nb support no
libamr-wb support no
libdc1394 support no
libdirac enabled no
libfaac enabled no
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libopencore-amrnb support yes
libopencore-amrwb support yes
libopenjpeg enabled no
libschroedinger enabled no
libspeex enabled no
libtheora enabled yes
libvorbis enabled yes
libx264 enabled yes
libxvid enabled yes
zlib enabled yes
bzlib enabled yes

続きを読む
posted by あべちん at 03:42| Comment(1) | TrackBack(0) | FFmpegコンパイル

2009年03月08日

FFmpegのコンパイル (2009/3/7)

いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
MSYSに標準で入っているmakeも古いので、ついでに更新します。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963&release_id=46827

bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
安定版の最新はgcc4.3.3ですが、MinGWのwebページにはgcc4.3.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Testing: gcc-4.3.0-20080502-mingw32-alpha より、
gcc-4.3.0-20080502-mingw32-alpha-bin.7z

自分でgccをビルドするのは面倒だけど、最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/


その他、以下の3つのパッケージも最新のものにしておきましょう。
以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
GNU binutils-2.19.1 より、
binutils-2.19.1-mingw32-bin.tar.gz

MinGW API for MS-Windows
Current Release: w32api-3.13 より、
w32api-3.13-mingw32-dev.tar.gz

MinGW Runtime
Current Release: mingwrt-3.15.2 より、
mingwrt-3.15.2-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

続きを読む
posted by あべちん at 12:14| Comment(5) | TrackBack(0) | FFmpegコンパイル

2009年02月11日

FFmpegのコンパイル (2009/2/11)

2009/3/8 追記
configureが変更されて、パッチffmpeg-20090211.diffを適用できなくなってしまいました。
また、configureオプションの--enable-swscaleが削除されています。
2009/3/7時点のパッチを作成しましたので、メニューの、
カテゴリー → FFmpegコンパイル
から、最新の記事を参照してください。

↓以下は、2009/2/11時点の記事です。


いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
MSYSに標準で入っているmakeも古いので、ついでに更新します。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963&release_id=46827

bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
安定版の最新はgcc4.3.3ですが、MinGWのwebページにはgcc4.3.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Testing: gcc-4.3.0-20080502-mingw32-alpha より、
gcc-4.3.0-20080502-mingw32-alpha-bin.7z

自分でgccをビルドするのは面倒だけど、最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/


その他、以下の3つのパッケージも最新のものにしておきましょう。
以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
GNU binutils-2.19.1 より、
binutils-2.19.1-mingw32-bin.tar.gz

MinGW API for MS-Windows
Current Release: w32api-3.13 より、
w32api-3.13-mingw32-dev.tar.gz

MinGW Runtime
Current Release: mingwrt-3.15.2 より、
mingwrt-3.15.2-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

続きを読む
posted by あべちん at 18:12| Comment(9) | TrackBack(4) | FFmpegコンパイル

x264のコンパイル&インストール (2009/2/11)

NASMYasmを、あらかじめインストールしておきます。

x264は、以下の場所にあります。
http://www.videolan.org/developers/x264.html

x264の最新情報は、ここでチェックしましょう。
http://x264.nl/

Gitがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ git clone git://git.videolan.org/x264.git

Gitがインストールされていない場合でも、とりあえず、daily tarballのソースファイルを拾ってくればコンパイルできます。

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20090210-2245.tar.bz2
を、適当なディレクトリに保存します。

毎日更新されていて、日付がファイル名になっていますので、その時点でのファイル名に読み替えてください。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf x264-snapshot-20090210-2245.tar.bz2
$ cd x264-snapshot-20090210-2245

libpthreadGC2.aをstaticライブラリにして、libpthread.aとリネームしているので、configureを修正します。
329、331行目の、-lpthreadGC2を、-lpthreadに変更します。

修正前)
elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthreadGC2 -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

修正後)
elif cc_check pthread.h "-lpthread -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthread -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

上記の修正と、encoder/encoder.cにpthread関連の修正をするパッチx264-pthreads-20090211.diffを適用します。

$ patch -p1 < x264-pthreads-20090211.diff

修正が終わったら、
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 16:21| Comment(0) | TrackBack(0) | FFmpegコンパイル

Xvidのコンパイル&インストール (1.2.1以降)

Xvidは、以下の場所にあります。
http://www.xvid.org/

2009/6/4 追記
最新版は1.2.2です。
以下、1.2.1を1.2.2と読み替えてください。
パッチは1.2.1用のをご利用ください。

Developers welcome
More at Xvid codec
から進むと、右の方にソースファイルへのリンクがあります。
Developer Downloads
↓Xvid 1.2.1 final source code

xvidcore-1.2.1.tar.gzを、適当なディレクトリに保存します。

gcc4でコンパイルした場合、libx264とlibxvidcoreを一緒にリンクすると、x264のエンコードでcrashするという問題があります。
後でパッチを適用しますが、どんなものか説明します。

src/utils/x86_asm/cpuid.asm
63行目の後に、ALIGN 16を追加。

vendorAMD:
db "AuthenticAMD"
ALIGN 16

以下、コンパイルの手順です。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf xvidcore-1.2.1.tar.gz
$ cd xvidcore

ここで、pthread関連と、上記ALIGN 16のパッチxvidcore-1.2.1-pthreads.diffを適用します。

$ patch -p1 < xvidcore-1.2.1-pthreads.diff

その他、VAQ-patchというのも、とりあえず適用してみます。

VAQ: Making Xvid's Adaptive Quantization Not Suck
http://forum.doom9.org/showthread.php?t=135093
より、Patchのリンク先にある、以下のページから、
http://pastebin.com/f1718874b
f1718874b.txtをダウンロード。

$ patch -p1 < f1718874b.txt

あとは、以下の手順でコンパイル&インストールします。
$ cd build/generic/
$ ./bootstrap.sh
$ ./configure --prefix=/mingw
$ make
$ make install

最後に、xvidcore.aのファイル名を、libxvidcore.aに変更します。
$ mv /mingw/lib/xvidcore.a /mingw/lib/libxvidcore.a

以上で終了です。
posted by あべちん at 16:04| Comment(0) | TrackBack(0) | FFmpegコンパイル

libfaadのコンパイル&インストール

libfaadは、以下の場所にあります。
http://www.audiocoding.com/

右サイドバーののDownloadsから、
http://www.audiocoding.com/downloads.html

FAAD2 Sourceの圧縮形式が3種類ある中で、ファイルサイズが小さいTAR.BZ2 Packageをダウンロードします。
faad2-2.7.tar.bz2を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf faad2-2.7.tar.bz2
$ cd faad2-2.7

gcc4でコンパイルする時は、以下の修正も必要です。
gcc3では不要かもしれません。
frontend/main.cの36行目をコメントアウト、または、削除します。
修正前) #define off_t __int64
修正前) /*#define off_t __int64*/

上記の修正パッチはこちら。
faad2-2.7.diff
エディタで修正するか、以下のようにパッチを適用してください。

$ patch -p1 < faad2-2.7.diff

以上の修正が終わったら、
$ ./bootstrap
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 13:17| Comment(0) | TrackBack(0) | FFmpegコンパイル

libfaacのコンパイル&インストール

libfaacは、以下の場所にあります。
http://www.audiocoding.com/

右サイドバーののDownloadsから、
http://www.audiocoding.com/downloads.html

FAAC Sourceの圧縮形式が3種類ある中で、ファイルサイズが小さいTAR.BZ2 Packageをダウンロードします。
faac-1.28.tar.bz2を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf faac-1.28.tar.bz2
$ cd faac-1.28

パッチファイルfaac-1.28.diffをダウンロードして、以下のコマンドを実行。

$ patch -p1 < faac-1.28.diff

これで、./configureで --without-mp4v2 を付けなくてもコンパイルできるようになります。

以上の修正が終わったら、
$ ./bootstrap
$ ./configure --prefix=/mingw

※上記パッチを適用しない場合は
$ ./configure --prefix=/mingw --without-mp4v2
としてください。

$ make
$ make install

以上で終了です。
posted by あべちん at 13:03| Comment(13) | TrackBack(0) | FFmpegコンパイル

FFmpegのconfigureメッセージ (rev.17132以降)

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
.align is power-of-two no
ARCH x86 (generic)
big-endian no
yasm yes
MMX enabled yes
MMX2 enabled yes
3DNow! enabled yes
SSE enabled yes
SSSE3 enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
new filter support no
filters using lavformat no
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
libamr-nb support no
libamr-wb support no
libdc1394 support no
libdirac enabled no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libopenjpeg enabled no
libschroedinger enabled no
libspeex enabled no
libtheora enabled yes
libvorbis enabled yes
libx264 enabled yes
libxvid enabled yes
vdpau enabled no
zlib enabled yes
bzlib enabled yes

続きを読む
posted by あべちん at 02:25| Comment(0) | TrackBack(0) | FFmpegコンパイル

2008年10月13日

FFmpegのconfigureメッセージ (rev.15571以降)

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
.align is power-of-two no
ARCH x86_32 (generic)
big-endian no
yasm yes
MMX enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
new filter support no
filters using lavformat no
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
libamr-nb support no
libamr-wb support no
libdc1394 support no
libdirac enabled no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libschroedinger enabled no
libtheora enabled yes
libvorbis enabled yes
libx264 enabled yes
libxvid enabled yes
zlib enabled yes
bzlib enabled no

続きを読む
posted by あべちん at 21:44| Comment(0) | TrackBack(0) | FFmpegコンパイル

2008年08月17日

libnutのコンパイル&インストール

libnutは、以下の場所にあったようなのですが、Downloadのページがありません。
http://www.nut-container.org/

svnがあれば、以下のように、ソースファイルを拾えます。
svn co svn://svn.mplayerhq.hu/nut/src/trunk nut
最新版は、リビジョン659です。
最新版は、リビジョン661です。
最新版は、リビジョン662です。
最新版は、リビジョン664です。

どこかにソースファイルを置いていないか探してみたのですが、見つからなかったので、こちらに置いておきます。
libnut-659.tar.bz2
libnut-661.tar.bz2
libnut-662.tar.bz2
libnut-664.tar.bz2

libnut-664.tar.bz2を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libnut-664.tar.bz2
$ cd libnut-664

libnut/demuxer.cの16行目、ftelloをftellに変更します。
修正前) return ftello(priv);
修正後) return ftell(priv);

以上の修正が終わったら、
$ make CC=gcc
$ make PREFIX=/mingw install

以上で終了です。
posted by あべちん at 00:37| Comment(2) | TrackBack(0) | FFmpegコンパイル

2008年08月16日

x264のコンパイル&インストール (旧rev.)

NASMYasmを、あらかじめインストールしておきます。

x264は、以下の場所にあります。
http://www.videolan.org/developers/x264.html

x264の最新情報は、ここでチェックしましょう。
http://x264.nl/

Gitがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ git clone git://git.videolan.org/x264.git

Gitがインストールされていない場合でも、とりあえず、daily tarballのソースファイルを拾ってくればコンパイルできます。

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20080815-2245.tar.bz2を、適当なディレクトリに保存します。
毎日更新されていて、日付がファイル名になっていますので、その時点でのファイル名に読み替えてください。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf x264-snapshot-20080815-2245.tar.bz2
$ cd x264-snapshot-20080815-2245

libpthread.aをstaticライブラリにしているので、configureを修正します。
350、352行目の、-lpthreadGC2を、-lpthreadに変更します。

修正前)
elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthreadGC2 -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

修正後)
elif cc_check pthread.h "-lpthread -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthread -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

次に、encoder/encoder.cを修正します。
パッチファイルx264-PTW32_STATIC_LIB.diffをダウンロードして、以下のコマンドを実行。
$ patch -p0 < x264-PTW32_STATIC_LIB.diff

gcc4でコンパイルする場合は、こちらの修正も必要です。

修正が終わったら、
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 17:44| Comment(0) | TrackBack(0) | FFmpegコンパイル

2008年03月01日

FFmpegのconfigureメッセージ (rev.12285以降)

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
make make
.align is power-of-two no
ARCH x86_32 (generic)
big-endian no
MMX enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
new filter support no
filters using lavformat lavf-no
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
liba52 support yes
liba52 dlopened no
libamr-nb support no
libamr-wb support no
libdc1394 support no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libtheora enabled yes
libvorbis enabled yes
x264 enabled yes
XviD enabled yes
zlib enabled yes

続きを読む
posted by あべちん at 23:43| Comment(0) | TrackBack(0) | FFmpegコンパイル

2008年01月30日

FFmpegのconfigureメッセージ (rev.11615以降)

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
make make
.align is power-of-two no
ARCH x86_32 (generic)
big-endian no
MMX enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
liba52 support yes
liba52 dlopened no
libamr-nb support no
libamr-wb support no
libdc1394 support no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libtheora enabled yes
libvorbis enabled yes
x264 enabled yes
XviD enabled yes
zlib enabled yes
続きを読む
posted by あべちん at 01:17| Comment(0) | TrackBack(0) | FFmpegコンパイル

2007年12月15日

FFmpegのコンパイル (軽量版)

使いもしないライブラリを全部インストールするのは面倒。
CPUもSingle Coreだから、Pthreadsもいらん。
という方は、以下のようにすれば、コンパイルの手順を省略できます。

gccは4.2.1か4.2.2、bashは3.1をインストールしておいてください。
NASMは必須、Yasmはなくても良いかも?
a52decは、DVDなどで使われるAC-3音声のデコードに必要です。
その他、よく使うライブラリだけインストールします。
nasm-2.00
yasm-0.6.2
zlib-1.2.3
a52dec-0.7.4
faac-1.26
faad2-2.6
lame-3.97
x264 rev.712
xvidcore-1.1.3

続きを読む
posted by あべちん at 22:37| Comment(0) | TrackBack(0) | FFmpegコンパイル

2007年12月11日

FFmpegのconfigureメッセージ

FFmpegのconfigureに成功すると、以下のようなメッセージが出ます。

install prefix /usr/local
source path /c/TEMP/ffmpeg
C compiler gcc
make make
.align is power-of-two no
ARCH x86_32 (generic)
big-endian no
MMX enabled yes
CMOV enabled no
CMOV is fast no
EBX available yes
EBP available yes
gprof enabled no
debug symbols yes
strip symbols yes
optimizations small
static yes
shared no
postprocessing support yes
software scaler enabled yes
video hooking no
network support yes
IPv6 support no
threading support pthreads
SDL support no
Sun medialib support no
AVISynth enabled yes
liba52 support yes
liba52 dlopened no
libamr-nb support yes
libamr-wb support yes
libdc1394 support no
libfaac enabled yes
libfaad enabled yes
libfaad dlopened no
libgsm enabled yes
libmp3lame enabled yes
libnut enabled yes
libtheora enabled yes
libvorbis enabled yes
x264 enabled yes
XviD enabled yes
zlib enabled yes
License: GPL
続きを読む
posted by あべちん at 01:22| Comment(0) | TrackBack(0) | FFmpegコンパイル

FFmpegのコンパイル (2007/12/11)

いよいよ、FFmpegのコンパイルです。

bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ますので、MinGWのwebページから
bash-3.1-MSYS-1.0.11-1.tar.bz2
をダウンロードして、MSYSのsh.exeを更新しておくと良いです。

最近は、gcc4.2.2でしかコンパイルしていなかったので気がつかなかったのですが、gcc3.4.xだと、コンパイルできたように見えても、ffmpeg.exeを実行するとクラッシュするようです。
2008/01/13追記
と思って、久々にrev.11518をgcc3.4.2でコンパイルしてみたら、正常に動作しました。
いつの間にか修正されていたようです。

安定版の最新はgcc4.2.2ですが、MinGWのwebページにはgcc4.2.1までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGWに環境があれば、以下のファイルをダウンロードして、C:\MinGWの下に解凍すればOKです。
gcc-core-4.2.1-sjlj-2.tar.gz
gcc-g++-4.2.1-sjlj-2.tar.gz

自分でgccをビルドするのは面倒だけど、gcc4.2.2を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/

以下のライブラリは、あらかじめインストールしておいてください。
この記事を書いた時点より、新しくなっているものもありますので、それぞれの記事で確認してください。
nasm-0.98.39
yasm-0.6.2
pthreads-w32-2-8-0-release
zlib-1.2.3
a52dec-0.7.4
amrnb-7.0.0.0 (3GPP 26104-700)
amrwb-7.0.0.2 (3GPP 26204-700)
faac-1.26
faad2-2.6
gsm-1.0.12
lame-3.97
libnut-512
libogg-1.1.3
libvorbis-1.2.0
libtheora-1.0beta2
x264 rev.702
xvidcore-1.1.3

続きを読む
posted by あべちん at 00:58| Comment(14) | TrackBack(0) | FFmpegコンパイル

2007年12月01日

make -j で並列処理

make -j4 とか、-jオプションを付けると並列処理してくれるのですね。
-jと数字の間は、スペース開けても開けなくても、どちらでも良いみたいです。
make -j4
make -j 4
など。
私は4にしていますが、色々試して、最適な値を見つけましょう。

#今まで知らなかったよ。
#なんでだれも教えてくれないんだよ。シクシク
#まぁ、今度から気をつけましょうかね。
posted by あべちん at 01:09| Comment(0) | TrackBack(0) | FFmpegコンパイル

2007年11月21日

libfaadのコンパイル&インストール (2.6)

libfaadは、以下の場所にあります。
http://sourceforge.net/projects/faac/

Download Freeware Advanced
Audio Coder ↓

というボタンをクリック。

2008/7/7追記
最新版はfaad2-2.6.1です。
faad2-2.6をfaad2-2.6.1に読み替えてください。

faad2-srcのDownloadページから、
faad2-2.6.tar.gzを、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf faad2-2.6.tar.gz
$ cd faad2

bootstrap、configure.inの、改行コード\rを修正します。
$ mv bootstrap bootstrap.bak
$ tr -d \\r < bootstrap.bak > bootstrap
$ mv configure.in configure.in.bak
$ tr -d \\r < configure.in.bak > configure.in

common/mp4ff/mp4ff_int_types.hの、4行目を以下のように修正します。
修正前) #if defined (_WIN32)
修正後) #if defined (_WIN32) && !defined (__MINGW32__)

2007/9/30追記
gcc4でコンパイルする時は、以下の修正も必要です。
gcc3では不要です。
frontend/main.cの36行目をコメントアウト、または、削除します。
修正前) #define off_t __int64
修正前) /*#define off_t __int64*/

以上の修正が終わったら、
$ ./bootstrap
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。

bootstrapの時にメッセージが出ますが、最後に、
Ready to run ./configure
と、なっていればbootstrapは問題ありません。
posted by あべちん at 04:48| Comment(2) | TrackBack(0) | FFmpegコンパイル

2007年09月30日

gcc4での問題点 (warning)

gcc4でコンパイルしたときに、こんなwarningが出ることがあります。
gcc3をお使いの方には関係ありません。

warning: dereferencing type-punned pointer will break strict-aliasing rules

これは、CFLAGSに、-fno-strict-aliasingを追加すれば解決できます。

FFmpeg関連では、以下のようにします。

1) nasm、libtheora-1.0alpha7の場合(libtheora-1.0beta1以降は不要)、
$ CFLAGS=-fno-strict-aliasing ./configure --prefix=/mingw
$ make
$ make install

2) pthreadsの場合
GNUmakefileの61行目を、以下のように修正します。
修正前) OPT = $(CLEANUP) -O3 -finline-functions
修正後) OPT = $(CLEANUP) -O3 -finline-functions -fno-strict-aliasing

あとは、以下の手順でコンパイルします。
pthreads-w32-2-8-0-release

3) faacの場合(--without-mp4v2 の時は不要)、
$ CXXFLAGS=-fno-strict-aliasing ./configure --prefix=/mingw
$ make
$ make install

4) FFmpeg本体の場合
./configureのオプションに、以下のオプションを追加します。
--extra-cflags=-fno-strict-aliasing

あとは、こちらの記事の手順でコンパイルします。

上記以外では、このwarningは出ていませんでした。
posted by あべちん at 09:30| Comment(0) | TrackBack(0) | FFmpegコンパイル

x264をgcc4でコンパイル

2008/4/14追記
以下の修正でも良いのですが、実はXvidの方に問題があるらしい事が判明しました。

Xvidの方を修正すれば、以下の修正は不要です。Xvidかx264のどちらかだけ修正してください。
Xvidについての説明はこちらです。
(追記ここまで)

x264をgcc4でコンパイルしたものは、FFmpegで、-vcodec libx264 を指定するとcrashします。
gcc3では問題ありません。

ググったら、解決方法が書いてあるのを見つけました。
元ネタは、ココです。

common/i386/pixel-sse2.asmの、32〜34行目の間に、
tempb: times 4 db 0
の1行を追加します。


SECTION_RODATA

tempb: times 4 db 0
pw_1: times 8 dw 1
ssim_c1: times 4 dd 416 ; .01*.01*255*255*64
ssim_c2: times 4 dd 235963 ; .03*.03*255*255*64*63

修正後、
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。

#さんざん悩んだのに、こんな簡単に解決できるなんて…。orz
posted by あべちん at 09:02| Comment(0) | TrackBack(0) | FFmpegコンパイル

2007年07月31日

libnutのコンパイル&インストール (旧rev.)

2008/8/16追記
最新版に合わせて記事を修正しましたので、こちらの記事をどうぞ。


libnutは、以下の場所にあったようなのですが、Downloadのページがありません。
http://www.nut-container.org/

svnがあれば、以下のように、ソースファイルを拾えます。
svn co svn://svn.mplayerhq.hu/nut/src/trunk nut
最新版は、リビジョン505514です。

svnが使えない人はどうしましょう?ということで、探したところ、Gentoo Linuxのパッケージにありました。
http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/libnut-503.tar.bz2
リビジョン503ですが、505と比べたところ、nututils/nutindex.cが違っていただけでしたので、libnutに違いはなさそうです。

#505から514は何が変わったんだろうか???
#使ってないので、気にしないことにしよう(逃

2008/2/9追記
ちょっとずつ変更が入っているようなので、libnut-591のソースを置いておきます。
libnut-591.tar.bz2
以下の説明は、libnut-503をlibnut-591に読み替えてください。


2008/2/14追記
libnut-637に更新しました。
libnut-637.tar.bz2
以下の説明は、libnut-503をlibnut-637に読み替えてください。


2008/4/20追記
libnut-657に更新しました。
libnut-657.tar.bz2
以下の説明は、libnut-503をlibnut-657に読み替えてください。


2008/7/19追記
libnut-658に更新しました。
libnut-658.tar.bz2
以下の説明は、libnut-503をlibnut-658に読み替えてください。

libnut-503.tar.bz2を、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf libnut-503.tar.bz2
$ cd libnut-503

config.makを、以下のように修正します。
1行目
修正前) PREFIX = /usr/local
修正後) PREFIX = /mingw

10行目
修正前) CC = cc
修正後) CC = gcc

次に、libnut/demuxer.cの16行目、ftelloをftellに変更します。
修正前) return ftello(priv);
修正後) return ftell(priv);

以上の修正が終わったら、
$ make
$ make install

以上で終了です。
posted by あべちん at 22:38| Comment(2) | TrackBack(0) | FFmpegコンパイル

libgsmのコンパイル&インストール

libgsmは、以下の場所にあります。
GSM 06.10 lossy speech compression
http://kbs.cs.tu-berlin.de/~jutta/toast.html

- free sourcecode から、
gsm-1.0.12.tar.gz
gsm-1.0.13.tar.gzを、適当なディレクトリに保存します。

2010/1/7 追記
配布元のサイトが無くなっています。
ソースコードをこちらに置いておきます。
gsm-1.0.13.tar.gz

2010/1/25 追記
サイトはこちらへ移転していました。
ソースコードもダウンロードできます。
http://www.quut.com/gsm/


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf gsm-1.0.13.tar.gz
$ cd gsm-1.0-pl13

Makefileを、以下のように修正します。
74行目
修正前) INSTALL_ROOT =
修正後) INSTALL_ROOT = /mingw

83行目
修正前) GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
修正後) GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include

上記の修正を手動でするか、以下のパッチを適用します。
$ patch -p1 < gsm-makefile.diff


以上の修正が終わったら、
$ make
$ make gsminstall

以上で終了です。

makeの時に以下のようなエラーが出ますが、libgsm.aまではmake出来ているので、とりあえず今は無視します。
というか、解決できませんでした。
./src/toast.o:toast.c:(.text+0xcfc): undefined reference to `fchmod'
./src/toast.o:toast.c:(.text+0xd40): undefined reference to `fchown'
collect2: ld returned 1 exit status
make: *** [bin/toast] Error 1

2010/4/12 追記
fchmodとfchown関連のエラー対処用のパッチを作成しました。(Pochiさん情報)

以下のようにパッチを適用してください。
$ patch -p1 < gsm-toast.diff

このパッチにより「toast.exe」などのツールが出来上がるようになります。
FFmpegにはlibgsm関連しか使用しませんので、ツールが必要な方はパッチを適用してください。
posted by あべちん at 21:53| Comment(8) | TrackBack(0) | FFmpegコンパイル

2007年07月21日

最適化オプションを付けて、FFmpegをコンパイル

configureの時に、CFLAGSで最適化オプションを追加できます。

Athlon64なら、
CFLAGS="-O4 -mtune=athlon64 -mfpmath=sse -msse"

Pentium4なら、
CFLAGS="-O4 -mtune=pentium4 -mfpmath=sse -msse"

私のマシンはAthlon64なので、
$ CFLAGS="-O4 -mtune=athlon64 -mfpmath=sse -msse" ./configure --enable-memalign-hack --enable-gpl --enable-liba52 --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libxvid --disable-ffserver --disable-ffplay --enable-avisynth --enable-small --enable-pthreads --extra-ldflags=-static

などとしてみたら、ffmpegの変換処理が速くなるかもしれませんが、未確認です。

または、
$ ./configure (上記と同じオプション) --extra-cflags="-O4 -mtune=athlon64 -mfpmath=sse -msse"
などとしても、良いと思います。
posted by あべちん at 23:39| Comment(0) | TrackBack(0) | FFmpegコンパイル

FFmpegのコンパイル (旧rev.)

いよいよ、FFmpegのコンパイルです。

2007/12/11追記
情報が古い部分もありますので、書き直しました。
こちらの記事をどうぞ。

以下のライブラリは、あらかじめインストールしておいてください。
この記事を書いた時点より、新しくなっているものもありますので、それぞれの記事で確認してください。
nasm-0.98.39
yasm-0.6.2
pthreads-w32-2-8-0-release
zlib-1.2.3
a52dec-0.7.4
amrnb-6.1.0.4 (3GPP 26104-610)
amrwb-7.0.0.1 (3GPP 26204-700)
faac-1.25
faad2-2.5
gsm-1.0.12
lame-3.97
libnut-503
libogg-1.1.3
libvorbis-1.1.2
libtheora-1.0alpha7
x264 rev.667
xvidcore-1.1.3

続きを読む
posted by あべちん at 22:45| Comment(9) | TrackBack(0) | FFmpegコンパイル

x264のコンパイル&インストール (旧rev.)

2008/8/16追記
最新版に合わせて記事を修正しましたので、こちらの記事をどうぞ。

2008/3/30現在、最新版はrev.805です。
svnの方のソースはrev.745で更新が止まっており、現在はgitでのソース管理になりました。
詳細は後日書く予定です。

daily tarballは更新されていますので、とりあえずx264の最新版をコンパイルしてみたいという方は、そちらをどうぞ。

NASMYasmを、あらかじめインストールしておきます。

x264は、以下の場所にあります。
http://www.videolan.org/developers/x264.html

2007/7/21現在、最新版はrev.667です。
2007/9/30現在、最新版はrev.680です。
2007/11/21現在、最新版はrev.698です。
2007/11/30現在、最新版はrev.702です。
2007/12/14現在、最新版はrev.712です。
2007/12/23現在、最新版はrev.714です。
2008/1/6現在、最新版はrev.717です。
2008/2/9現在、最新版はrev.736です。
2008/3/1現在、最新版はrev.741です。
2008/3/3現在、最新版はrev.745です。(svn最終版)

TortoiseSVN、または、svnがインストールされていれば、以下のようにして、ソースファイルを拾ってこれます。
$ svn co svn://svn.videolan.org/x264/trunk x264

svnがインストールされていない場合でも、とりあえず、daily tarballのソースファイルを拾ってくればコンパイルできます。

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20070720-2245.tar.bz2を、適当なディレクトリに保存します。
毎日更新されていて、日付がファイル名になっていますので、その時点でのファイル名に読み替えてください。

2007/8/18追記
libpthread.aをstaticライブラリにしたら、エラーが出てまともに動きませんでした。
libpthread.aを元に戻したので、configureの修正も不要です。

2007/10/1追記
libpthread.aをstaticライブラリにした時の解決方法がありました。
元ネタは、ココです。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xjf x264-snapshot-20070720-2245.tar.bz2
$ cd x264-snapshot-20070720-2245

2007/7/30追記
libpthread.aをstaticライブラリにしたので、configureを修正します。
333、335行目の、-lpthreadGC2を、-lpthreadに変更します。

修正前)
elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthreadGC2 -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

修正後)
elif cc_check pthread.h "-lpthread -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
pthread="yes"
libpthread="-lpthread -lwsock32"
CFLAGS="$CFLAGS -DPTW32_STATIC_LIB"

次に、encoder/encoder.cを修正します。
パッチファイルx264-PTW32_STATIC_LIB.diffをダウンロードして、以下のコマンドを実行。
$ patch -p0 < x264-PTW32_STATIC_LIB.diff

gcc4でコンパイルする場合は、こちらの修正も必要です。

修正が終わったら、
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。

Cygwinでx264をコンパイルするとき、pthreadを有効にするには、configureの125、126行目の、-mno-cygwinを削除してください。
修正前)
CFLAGS="$CFLAGS -mno-cygwin"
LDFLAGS="$LDFLAGS -mno-cygwin"
修正後)
CFLAGS="$CFLAGS"
LDFLAGS="$LDFLAGS"
posted by あべちん at 20:52| Comment(0) | TrackBack(0) | FFmpegコンパイル

Xvidのコンパイル&インストール (1.1.3)

Xvidは、以下の場所にあります。
http://www.xvid.org/

Developers welcome
More at Xvid codec
から進むと、右の方にソースファイルへのリンクがあります。
Developer Downloads
↓Xvid 1.1.3 final source code

xvidcore-1.1.3.tar.gzを、適当なディレクトリに保存します。

2008/4/14追記
gcc4でコンパイルする場合は、以下のように修正すると、x264のエンコードでcrashする問題が回避できます。
以下の手順の、bootstrap.shを実行する前に修正します。

xvidcore-1.1.3/src/utils/x86_asm/cpuid.asm
80行目の後に、ALIGN 16を追加。

vendorAMD:
db "AuthenticAMD"
ALIGN 16

後は、以下の手順通りでOKです。


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf xvidcore-1.1.3.tar.gz
$ cd xvidcore-1.1.3
$ cd build/generic/
$ ./bootstrap.sh
$ ./configure --prefix=/mingw
$ make
$ make install

xvidcore.aのファイル名を、libxvidcore.aに変更します。
$ mv /mingw/lib/xvidcore.a /mingw/lib/libxvidcore.a

以上で終了です。
posted by あべちん at 20:16| Comment(2) | TrackBack(0) | FFmpegコンパイル

LAME (libmp3lame) のコンパイル&インストール

NASMを、あらかじめインストールしておきます。

LAMEは、以下の場所にあります。
http://lame.sourceforge.net/index.php

Get LAMEから、
http://lame.sourceforge.net/download.php

Current Versions
The current release version of LAME is 3.97
Source code tarballs of these versions can be downloaded from SourceForge.
より、ダウンロードページに進み、
lame-3.97.tar.gzを、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf lame-3.97.tar.gz
$ cd lame-3.97
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。

2008/5/25追記
最新のβ版は3.98 beta8です。
lame-3.97をlame-3.98b8に読み替えて、上記と同じ手順でコンパイル出来ます。

2008/7/7追記
最新のβ版は3.98です。
lame-3.97をlame-398に読み替えて、上記と同じ手順でコンパイル出来ます。

2008/10/11追記
最新版は3.98.2です。
※相変わらず、公式ページでは3.98.1のまま修正されていません。
lame-3.97をlame-398-2に読み替えて、上記と同じ手順でコンパイル出来ます。

FFmpegで使用する時は、-acodec libmp3lame です。
posted by あべちん at 20:00| Comment(0) | TrackBack(0) | FFmpegコンパイル

libfaadのコンパイル&インストール (2.5)

2007/10/26現在、faad2-2.6が最新です。こちらの記事をどうぞ。

libfaadは、以下の場所にあります。
http://sourceforge.net/projects/faac/

Download Freeware Advanced
Audio Coder ↓

というボタンをクリック。

faad2-srcのDownloadページから、
faad2-2.5.tar.gzを、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf faad2-2.5.tar.gz
$ cd faad2

bootstrap、configure.inの、改行コード\rを修正します。
$ mv bootstrap bootstrap.bak
$ tr -d \\r < bootstrap.bak > bootstrap
$ mv configure.in configure.in.bak
$ tr -d \\r < configure.in.bak > configure.in

configure.inの120行目の後に、以下のようにelseから2行追加します。
if test x$WITHBMP = xyes; then
AC_DEFINE([HAVE_BMP], 1, [User wants beep media player plugin built])
AM_CONDITIONAL([HAVE_XMMS], true)
AM_CONDITIONAL([HAVE_BMP], true)
else
AM_CONDITIONAL([HAVE_BMP], false)

fi

common/mp4ff/mp4ff_int_types.hの、4行目を以下のように修正します。
修正前) #if defined (_WIN32)
修正後) #if defined (_WIN32) && !defined (__MINGW32__)

pluginsディレクトリの下に、bmpディレクトリを作成します。
$ mkdir plugins/bmp

2007/9/15追記
plugins/Makefile.amの、12行目のbmpを削除します。
修正前) SUBDIRS = bmp
修正後) SUBDIRS =

2007/9/30追記
gcc4でコンパイルする時は、以下の修正も必要です。
gcc3では不要です。
frontend/main.cの36行目をコメントアウト、または、削除します。
修正前) #define off_t __int64
修正前) /*#define off_t __int64*/

以上の修正が終わったら、
$ ./bootstrap
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。

bootstrapの時にメッセージが出ますが、最後に、
Ready to run ./configure
と、なっていればbootstrapは問題ありません。
posted by あべちん at 19:21| Comment(0) | TrackBack(0) | FFmpegコンパイル

libfaacのコンパイル&インストール (1.25〜1.26)

2007/10/26現在、faac-1.26が最新です。
以下の記事は、faac-1.26と読み替えてください。

libfaacは、以下の場所にあります。
http://sourceforge.net/projects/faac/

Download Freeware Advanced
Audio Coder ↓

というボタンをクリック。

faac-srcのDownloadページから、
faac-1.25.tar.gzを、適当なディレクトリに保存します。

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf faac-1.25.tar.gz
$ cd faac

bootstrap、configure.inの、改行コード\rを修正します。
$ mv bootstrap bootstrap.bak
$ tr -d \\r < bootstrap.bak > bootstrap
$ mv configure.in configure.in.bak
$ tr -d \\r < configure.in.bak > configure.in

2007/10/3追記
mp4v2もコンパイルできるように、パッチファイルを作りました。> dさん ありがとうございます。
パッチファイルfaac-mp4v2.diffをダウンロードして、以下のコマンドを実行。
$ patch -p0 < faac-mp4v2.diff

これで、./configureで --without-mp4v2 を付けなくてもコンパイルできます。
パッチを適用しない場合は、--without-mp4v2 を付けてください。

以上の修正が終わったら、
$ ./bootstrap
$ ./configure --prefix=/mingw --without-mp4v2
$ make
$ make install

以上で終了です。

mp4v2関連は、makeがエラーで止まってしまいます。
色々いじってみたのですが、結局原因がつかめず、--without-mp4v2にしてしまいました。
posted by あべちん at 18:39| Comment(6) | TrackBack(0) | FFmpegコンパイル

libogg、libvorbis、libtheoraのコンパイル&インストール

libogg、libvorbis、libtheoraは、以下の場所にあります。
http://xiph.org/

2007/8/6
libvorbisのバージョンが、1.1.2から1.2.0になっていました。

2007/9/30
libtheoraのバージョンが、1.0alpha7から1.0beta1になっていました。

2007/10/26
libtheoraの最新版は、1.0beta2です。

2008/7/7
libtheoraの最新版は、1.0beta3です。

2008/11/9
libtheoraの最新版は、1.0です。
2009/7/9
liboggの最新版は、1.1.4です。
libvorbisの最新版は、1.2.2です。
2009/7/11
libvorbisの最新版は、1.2.3です。
2009/11/25
libtheoraの最新版は、1.1.1です。

左の方の、Downloadsから、
http://xiph.org/downloads/
libogg-1.1.4.tar.gz
libvorbis-1.2.3.tar.gz
libtheora-1.0beta3.tar.gz
libtheora-1.1.1.tar.bz2
を、適当なディレクトリに保存します。

(1) libogg
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libogg-1.1.4.tar.gz
$ cd libogg-1.1.4
$ ./configure --prefix=/mingw
$ make
$ make install


(2) libvorbis
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libvorbis-1.2.3.tar.gz
$ cd libvorbis-1.2.3

lib/Makefile.inを修正します。
267行目に、-loggを追加
libvorbisfile_la_LIBADD = libvorbis.la -logg


以上の修正が終わったら、
$ ./configure --prefix=/mingw
$ make
$ make install

libvorbisencとlibvorbisfileのインストールの時にエラーでストップしてしまう場合は、もう1回「make install」すればインストーできます。


(3) libtheora
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libtheora-1.0beta2.tar.gz
$ cd libtheora-1.0beta2


lib/dsp.hを修正します。
22行目をコメントアウト
/*typedef unsigned long int ogg_uint64_t;*/

以上の修正が終わったら、

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libtheora-1.0beta3.tar.gz
$ cd libtheora-1.0beta3


include/theora/codec.hを修正します。

70行目に以下の1行を追加。
#include <stddef.h>


以上の修正が終わったら、

MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf libtheora-1.0beta3.tar.gz
$ cd libtheora-1.0beta3

$ tar xjf libtheora-1.1.1.tar.bz2
$ cd libtheora-1.1.1

そのまま、
$ ./configure --prefix=/mingw
$ make
$ make install

以上で終了です。
posted by あべちん at 18:07| Comment(21) | TrackBack(0) | FFmpegコンパイル