FFMPEG 을 minGW에서 빌드, MSVC에서 lib 사용하기

최신 FFMPEG을 SVN으로 다운받습니다.

MSYS, minGW를 설치해야 합니다. 다음 링크에 가면 자세한 설명과 다운 받아야 할 파일이 있습니다.
http://arrozcru.no-ip.org/ffmpeg_wiki/tiki-index.php

MSYS 설치
1.MSYS-1.0.11-2004.04.30-1.exe
2.MSYS-1.0.11-20071204.tar.bz2
3.bash-3.1-MSYS-1.0.11-snapshot.tar.bz2
4.coreutils
5.make-3.81-MSYS-1.0.11-2.tar.bz2
6.Fixing "msys.bat"

MinGW 설치
binutils-2.18.50-20080109.tar.gz

gcc-core-4.2.1-sjlj-2.tar.gz
gcc-g++-4.2.1-sjlj-2.tar.gz

mingw-runtime-3.14.tar.gz and patch file
w32api-3.11.tar.gz

MinGW 파일 전부 설치후 패치를 꼭 해주셔야 합니다.
파일 몇개 없다고 빌드가 안되거나 MSVC에서 링크가 되는데 문제가 생길수도 있습니다.
특히 gcc의 3.XX 버전으로 빌드를 하시면 MSVC에서 힙메모리를 잡다가 죽더군요

파일들을 C:\msys\mingw 에 압축풀고
 C:\msys\etc\fstab.sample 파일을 사본 복사하여 fstab로 이름을 바꿉니다.
 c:/mingw        /mingw
의 내용을
c
:/msys/mingw        /mingw
와 같이 수정하여 저장합니다

C:\msys 폴더에 msys.bat 파일이 있습니다.
맨 윗부분에
call "C:\Program Files\Mic
rosoft Visual Studio\VC98\Bin\VCVARS32.BAT" 요렇게 수정을 합니다. 물론 경로 맞춰서

=====================================================================================
MSYS 와 MinGW를 설치 했으면 이제 ffmpeg-0.4.9를 다운받습니다.
검색엔진에 검색하면 쉽게 나옵니다.

msys 를 실행하고 프롬프트 창에서 빌드를 하면 됩니다.
linux 스타일 명령입니다.

ffmpeg가 설치되어 있는 폴더로 이동후
./configure --enable-memalign-hack
를 치면 config.h 파일이 생성 됩니다. dll로 만들어서 하는 부분에서 저도 lib 명령이 안먹혀서 실패했습니다.
아는분 알려주세요 ^^
그래서 저는 그냥 static lib로 만들어서 사용했습니다.

make
하면 빌드가 되죠. 에러가 발생하면 뭔가 빠진 것일 겁니다.
저도 하고나서 쓰는거라..^^;;

이제 빌드가 되면
make install
을 합니다.

그럼 중요한 파일들이 msys/local 밑으로 복사됩니다.
avcodec.a, avcodec.a, avformat.a, avformat.a 등 이 생성 됐을 겁니다. 이름이 다를수도 있습니다.

ffmpeg의 루트 폴더에보면 output_example.c라는 파일이 있습니다.
MSVC에서 빌드하도록 환경을 맞춰줘야 합니다.

win32 console 프로젝트를 만듭니다. precompiled header는 사용하지 않도록 합니다.
파일은 .c로 해야합니다. cpp로하면 ffmpeg이 제대로 빌드 되지 않습니다.

property page에서 C/C++ 페이지의 additional include directories에서
복사된 폴더에서 include를 지정해 줍니다.

linker의 general 페이지에서 additional library directories에서
libavcodec폴더와 libavformat폴더를 마찮가지로 추가합니다.
또 msys가 설치되어 있는 폴더 중에서
C:\msys\mingw\lib; C:\msys\mingw\lib\gcc\mingw32\3.4.5;
다음과 같이 두 경로를 추가합니다.(경로 자기 경로에 맞춰서 해주셔야 합니다.)

linker input 페이지에서
avformat.a avcodec.a avutil.a libgcc.a libmingwex.a
파일을 추가하여 링크시킵니다.

빌드를 누르시면 당연히 에러가 발생하겟죠... 처음에 한번에 되면 운 좋으신것입니다.
inline에 관련된 에러는 MSVC같은경우 inline을 __inline으로 해야 되는 경우가 있습니다.
다른곳에서는 그냥 inline도 되는데 왜 여기서만 __inline으로 해야 되는지 잘 모르겠습니다.
그냥 #define inline __inline 으로 만들으셔서 오류나는 파일 꼭대기에 한군대만 넣으셔도 됩니다.
common.h 같은 곳에

그밖에 수정할 사항은 링크에 보시면 있습니다.
자세한 사항은 나중에 업데이트 하도록 하겠습니다.

- revision history
    2008.07.30     최초 작성
    2008.07.31     빌드성공, 비디오 플레이어 제작 성공



by baldr | 2008/07/30 13:52 | FFMPEG | 트랙백 | 덧글(0)

트랙백 주소 : http://jayhouse.egloos.com/tb/1909473
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶