회사에서 쓸일이 생겨서 FFMpeg를 컴파일하게 되었다.
하는 방법들이 올라온 곳은 많은데, 똑같이 해도 실패했다.
아마 날짜가 오래되서 그런듯.
어찌됐건 컴파일에 성공하였기에 글로 적어본다.
* 여기저기 나와있는대로 설치하였기 때문에 섞여있어서 확실한 정답은 아닐 수 있음.
** 현재 작성일인 2018.01.11 기준.
1. MinGW 설치
https://sourceforge.net/projects/mingw/files/Installer/
이곳에서 MinGW를 받아 설치한다.
Default값으로 그냥 설치 진행.
이런 창이 나오면 mingw_developer-toolkit과 msys-base를 체크하여
( 체크박스 클릭하고 Mark for installation 누르면 체크된다.)
왼쪽 위의 메뉴 installation-Apply changes 클릭하면 설치진행.
위 사진과 같이 초록색으로 칠해지면 설치완료된것.
설치 후 환경변수에서 PATH에 아래의 값을 등록한다.
C:\MinGW\bin
C:\MinGW\msys\1.0\bin
2. mingw-64w 설치
https://sourceforge.net/projects/mingw-w64/
파일을 실행하여 설치한다.
Default로 설치하고, 경로는 C:\MinGW 의 하위에 설치.
설치 후 환경변수에서 PATH에 아래의 값을 등록한다.
C:\MinGW\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin
(안해도 되는거같다.)
3. yasm, nasm 설치
3-1. nasm
http://www.nasm.us/pub/nasm/releasebuilds/
nasm 버전을 골라 설치.
다운로드 링크 : 32비트 / 64비트 (현재 기준 2.13.03rc1 최신버전)
압축해제하여 나온 nasm.exe와 ndisasm.exe를 C:\MinGW\msys\1.0\bin 으로 복사
3-2. yasm
http://yasm.tortall.net/Download.html
yasm을 운영체제에 맞는것을 선택하여 설치.
반드시! 이름을 yasm.exe로 변경하여 설치, 설치 경로는 C:\MinGW\msys\1.0\bin
4. pr.exe 설치
FFMpeg 컴파일할 때, pr이 없어서 컴파일 에러가 떨어진다.
압축 해제하고, /bin 폴더에 있는 pr.exe를 C:\MinGW\bin에 복사한다.
5. x264 설치
https://www.videolan.org/developers/x264.html
최신버전 설치.
h264를 사용하려면 x264가 필요하다. FFMpeg에는 내장되어있지 않다고 어디서 봤음.
(무책임)
C:\MinGW\msys\1.0 에 가면 msys.bat 파일이 있다.
이거 한번 실행하면 C:\MinGW\msys\1.0\home\[계정명] 디렉토리가 생성된다.
msys.bat의 맨 처음 위치가 바로 이곳.
설치 경로를 C:\MinGW\msys\1.0\home\[계정명] 이쪽으로 하여 설치, 압축 해제.
다시 msys.bat 실행화면에서 방금 설치한 x264 폴더를 찾아서 이동.
x264 폴더에서 아래와 같이 입력 후 앤터를 누른다.
$ configure --enable-shared
* $ configure --help 하면 뒤에 붙일 수 있는 옵션 목록이 있음. 참고하시길.
** 어셈블러가 없다는 경고가 뜰 경우, 뒤에 --disable-asm을 붙여서 다시 시도.
'make' 입력하라고 뜨면 그대로
$ make
완료되면 아래 입력
$ make install
x264 설치가 끝나면 C:\MinGW\msys\1.0\local 폴더가 생기고 그 안에 x264 설치된게 나타난다.
혹시 몰라서 환경설정 PATH에다가 등록했음.
C:\MinGW\msys\1.0\local\include
( 안해도 될듯 )
6. FFMpeg 설치
http://ffmpeg.org/download.html#releases
바로 보이는 다운로드 클릭...하면 좋은데
3.4.1에서 컴파일하면 자꾸 오류나서 3.3.6버전 설치.
(검색해보니 영어쓰는친구들이 3.3버전쓰니까 된다 카더라 해서 따라했음)
설치 경로는 x264와 같은 C:\MinGW\msys\1.0\home\[계정명] , 설치 후 압축 해제
다시 msys.bat에서 ffmpeg 폴더로 이동.
필자는 x264 h264만 사용할거라 아래와 같이 했는데,
$ configure --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --pkg-config=pkg-config --enable-w32threads --prefix=/local --enable-shared --disable-static --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-gpl --disable-avdevice --disable-decoders --disable-dxva2 --disable-encoders --enable-decoder=h264 --enable-decoder=vp8 --enable-libx264 --disable-devices --disable-muxers --disable-demuxers --disable-postproc --disable-avfilter --disable-filters --disable-protocols --disable-bsfs --disable-parsers
$configure --help 를 입력하면 쓸 수 있는 옵션이 무지막지하게 많으니 잘 살펴보고 사용하면 될듯.
다 설치하려면
./configure --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --pkg-config=pkg-config --enable-w32threads --prefix=/local --enable-shared --disable-static --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-gpl
이렇게만 해도 되더라.
시간이 좀 소요되고,
WARNING: pkg-config not found, library detection may fail.
이렇게 pkg-config가 없다고 경고뜨는데, 무시.
* configure 중 오류가 나타나면 ffmpeg 폴더안에 config.log 에 기록이 남아있음.
* 그거 보고 오류 찾아서 검색하면 나오더라.
* 세상엔 같은 오류뜨는 사람이 많더라
$ make
(오랜 시간이 걸림...)
다되면
$ make install
끝나면 C:\MinGW\msys\1.0\local\bin 폴더에
avcodec-57.dll, avdevice-57.dll 등 8개? 정도 되는 dll이 생길것이다.
우앙 컴파일 끝!
기타.
make 도중 i686-64w-mingw32-???? 뭐시기 뜨면서 종료되면
2번에서 받았던 mingw-w64 가 나설 차례.
필자 경로 기준 C:\MinGW\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin 경로에서 ????와 일치하는 exe 프로그램을 찾는다.
그거 복사해서 C:\MinGW\msys\1.0\bin에다 붙여넣고 이름을 i686-64w-mingw32-????.exe로 바꾸고 다시 make.
예)
AR libavformat/libavformat.a
/bin/sh: i686-w64-mingw32-ar: command not found
make: *** [libavformat/libavformat.a] Error 127
--> 컴파일러 : i686-w64-mingw32-ar.exe가 없는데요?
C:\MinGW\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin 에서
ar.exe를 찾아 C:\MinGW\msys\1.0\bin에다 복사하고 이름변경 후 다시 make