FFmpeg APIで、さまざまな動画を操る - 前編:CodeZine を Windows(Mingw/MSYS) で試してみた
対象の環境に Windows が含まれていないので、Mingw/MSYS な環境でできるのか、試してみました。
必要な環境
ソースコードを取得する
$ svn co -r 13235 svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
ffmpeg ビルド & インストールをする
$ ./configure --cc=gcc-sjlj --enable-shared --enable-swscale --enable-gpl --enable-memalign-hack $ mingw32-make $ mingw32-make install
サンプルをビルドする
Makefile に ffmpeg をインストールしたパスを追加する。
デフォルトは "/usr/local" にインストールされるので、インクルードファイルとライブラリに対してパスを通す。
CC = gcc CFLAGS = -O4 -Wall -I/usr/local/include LDFLAGS = LDLIBS = -L/usr/local/bin -lavutil -lavformat -lavcodec -lswscale OBJS = make_thumb.o make_thumb: $(OBJS) $(CC) -o $@ $(LDFLAGS) $(OBJS) $(LDLIBS)
TIPS
今回エラーが発生した箇所とその対応を残しておく。
サンプルをビルドしたときに "libswscale/swscale.h" が見つからない
"./configure" 実行時のオプションに "--enable-swscale --enable-gpl" が不足していた。
gcc -O4 -Wall -I/usr/local/include -c -o make_thumb.o make_thumb.c make_thumb.c:4:32: libswscale/swscale.h: No such file or directory make_thumb.c: In function `load_frame': make_thumb.c:124: warning: implicit declaration of function `sws_getContext' make_thumb.c:128: warning: initialization makes pointer from integer without a cast make_thumb.c:131: warning: implicit declaration of function `sws_scale' make_thumb.c:136: warning: implicit declaration of function `sws_freeContext' make: *** [make_thumb.o] Error 1
サンプルを実行したときにライブラリのエラーメッセージが出力される
Mingw 用の gcc 4.2 があるのでサイトからダウンロードして、インストールし、ffmpeg を作りなおす。
$ ./make_thumb sample.mov sample.jpg Compiler did not align stack variables. Libavcodec has been miscompiled and may be very slow or crash. This is not a bug in libavcodec, but in the compiler. You may try recompiling using gcc >= 4.2. Do not report crashes to FFmpeg developers.