OpenCV/Building of opencv_ffmpeg.dll on OpenCV 2.3.1 †
#multilang(ja){{
概要
OpenCV 2.3.1(Windows)では動画の読み書きでopencv_ffmpeg.dllを動的にロードして
処理が行われます.このopencv_ffmpeg.dllはコンパイル済のDLLが提供されています.
このページではユーザがffmpegを組み込んだopencv_ffmpeg.dllをビルドするための手順を示します.
※以降の手順は32bitを対象としています.
このページは下記のファイルの手順をベースに記載されています.
opencv\3rdparty\ffmpeg\readme.txt
MinGW, MSYSのインストール
- http://sourceforge.net/projects/mingw/からmingw-get-inst-20111118.exeをダウンロードします.
- C Compiler, C++ Compiler, MSYS Basic systemにチェックを入れてインストールを続行します.
- 下記のバッチファイルを実行します.
C:\MinGW\msys\1.0\msys.bat
- 実行後,下記のディレクトリ直下に/home/<username>/が生成されていることを確認します.
C:\MinGW\msys\1.0
- MinGWのコンソール上で下記のコマンドを実行します.
mingw-get install msys-coreutils
- Windowsの環境変数pathに以下のpathを追加します.
C:\MinGW\bin;
ffmpegのビルド
- ffmpeg公式サイトからffmpeg-0.10.tar.gzをダウンロードします.
- 展開して,MinGW, MSYSのインストールで生成された/home/<username>/に配置します.
- 下記のバッチファイルを実行します.
C:\MinGW\msys\1.0\msys.bat
- /home/<username>/をカレントディレクトリにして,下記のコマンドを実行します.
mkdir build
cd build
../ffmpeg-0.10/configure --disable-yasm --enable-w32threads
make
make install
cd /local/lib
strip -g *.a
opencv_ffmpeg.dllのビルド
- 下記のディレクトリに生成された*.aファイルをopencv\3rdparty\libにコピーします.※オリジナルのライブラリ群は退避しておいてください.
C:\MinGW\msys\1.0\local\lib
- 下記のディレクトリに生成されたディレクトリをopencv\3rdparty\include\ffmpeg_コピーします.※オリジナルのヘッダ群は退避しておいてください.
C:\MinGW\msys\1.0\local\include
- C:\opencv-svn\opencv\3rdparty\ffmpeg\make.batを以下のように書き換えます(今回32bit対象なので64bit用はコメントアウト).
set path=C:\MinGW\msys\1.0\bin;%path% & gcc -Wall -shared -o opencv_ffmpeg.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lwsock32
:: set path=c:\dev\msys64\bin;%path% & gcc -m64 -Wall -shared -o opencv_ffmpeg_64.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat64 -lavcodec64 -lavdevice64 -lswscale64 -lavutil64 -lavcore64 -lwsock32 -lws2_32
- 下記のバッチファイルを実行します.
C:\opencv-svn\opencv\3rdparty\ffmpeg\make.bat
- 下記ディレクトリにopencv_ffmpeg.dllが生成されることを確認します.
C:\opencv-svn\opencv\3rdparty\ffmpeg
}}