느려요

진짜로

IT/Etc.

[FFMpeg] Windows 10 에서 FFMpeg 컴파일하기

느이 2018. 1. 11. 10:25

회사에서 쓸일이 생겨서 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이 없어서 컴파일 에러가 떨어진다.

 

https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/_obsolete/coreutils-5.97-MSYS-1.0.11-2/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2/download

 

압축 해제하고,  /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

반응형