Windows에서 MPlayer/Mencoder를 컴파일하려면 MinGW 컴파일러가 필요하다. 이 글을 읽고 MinGW를 설치하도록 한다. 이 글은 정적 실행 파일(특별한 DLL에 의존하지 않는 단일 프로그램)을 생성하기 위해 쓰여졌다. 동적 실행 파일을 만들려면 이 글을 읽기 바란다.
시작 메뉴에서 MSYS (rxvt)를 오른쪽 클릭하여 관리자로 실행한다. Windows Vista와 Windows 7에서 문제 없이 컴파일하기 위함이다.
- LZO 라이브러리는 빠른 압축 기능으로 순수 비디오를 압축하는 데 쓰인다.
tar xzvf lzo-2.03.tar.gz
cd lzo-2.03
./configure --prefix=/mingw
make
make install - Zlib는 압축 헤더가 붙은 몇몇 mov 파일을 보기 위해 필요하다. zlib.net에서 소스를 받아 컴파일한다:
cd ~
tar xjvf zlib-1.2.4.tar.bz2
cd zlib-1.2.4
./configure --prefix=/mingw
make
make install PNG 이미지 라이브러리
영화 보는 데 PNG 라이브러리가 왜 필요한지 궁금할 것이다. 가끔 영화의 인상적인 부분을 한 장면 한 장면 사진으로 저장하고 싶을 때 쓸 수 있다. PNG 라이브러리 소스를 받아 컴파일하자:
cd ~
tar xzvf libpng-1.4.1.tar.gz
cd libpng-1.4.1/
./configure --prefix=/mingw --disable-shared
make
make installFreetype 및 Iconv 라이브러리
Freetype은 자막 표시에 필요하다. iconv 라이브러리에 의존하므로 먼저 iconv 소스를 받아 컴파일하자:
cd ~
tar xvzf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/mingw --disable-shared
make
make install그런 다음, Freetype2를 받아 컴파일한다:
cd ~
tar xzvf freetype-2.3.12.tar.gz
cd freetype-2.3.12
./configure --prefix=/mingw --disable-shared
make
make install- Fontconfig 라이브러리는 SSA 자막 표시에 필요하다. expat 라이브러리에 의존하므로 먼저 expat 라이브러리를 컴파일하자.
cd ~
tar xzvf expat-2.0.1.tar.gz
cd expat-2.0.1/
./configure --prefix=/mingw --disable-shared
make install
그리고 fontconfig 라이브러리를 컴파일한다.cd
tar xzvf fontconfig-2.8.0.tar.gz
cd fontconfig-2.8.0/
./configure --prefix=/mingw --disable-shared
make install - Libcdio 소스를 여기서 받아 컴파일하고 설치하자.
tar xzvf libcdio-0.81.tar.gz
cd libcdio-0.81
./configure --prefix=/mingw --disable-shared
make
make install Libogg, Libvorbis, speex, Theora 컴파일
libogg, libvorbis, speex 그리고 theora 라이브러리 모두 xiph.org에서 받아 다음과 같이 컴파일하자:
./configure --prefix=/mingw --disable-shared
make
make install- DirectX 헤더를 아래의 위치에서 받아서:
- http://www.videolan.org/vlc/dx7headers.tgz 또는,
- http://www.mplayerhq.hu/MPlayer/contrib/win32/dx7headers.tgz
MinGW의 include 폴더(예를 들어, C:\MinGW\include)에 압축을 푼다.
- http://www.videolan.org/vlc/dx7headers.tgz 또는,
MPlayer 정적 컴파일을 위한 configure 명령
pkg-config.exe와 yasm.exe를 받아서 /mingw/bin에 저장한다. MPlayer 소스를 받아서 풀자:
tar xjvf mplayer-export-snapshot.tar.bz2
cd mplayer-export-2009-08-02/다음과 같이 configure 명령어를 입력한다.
./configure --prefix=/mingw --enable-runtime-cpudetection --enable-static --enable-theora --disable-vidix --yasm=/mingw/bin/yasm
- configure가 끝나면 config.mak를 열어서 손보자. MPlayer.exe를 실행할 때 검은 로그 창이 나타나는 현상을 원하지 않는다면 EXTRALIBS_MPLAYER= 행에 -mwindows 추가하도록 한다:
EXTRALIBS_MPLAYER = -mwindows -lopengl32 -lgdi32 -lwinmm -ld3d9 -lfaac -lx264 -lmp3lame
MPlayer/Mencoder 컴파일
드디어 MPlayer 컴파일을 시작한다.
make
컴파일이 성공적으로 끝나면 mplayer.exe 그리고 mencoder.exe 두 개의 파일이 생긴다. strip 명령을 쓰면 실행 파일의 크기를 약간 줄일 수 있다.
strip m*.exe
UPX로 압축한다.
upx --best --strip-relocs=0 mplayer.exe
upx --best --strip-relocs=0 mencder.exe가령,
C:\Program Files
로 복사하도록 한다.cp -iv m*.exe /c/Program\ Files
mplayer.exe와 mencoder.exe 두 개의 실행 파일이 성공적으로 만들어졌으니, 이제 MPlayer를 테스트하고 설정하는 일이 남았다.
I got a bunch of errors saying "can't find a register in class general regs while reloading asm." during MPlayer compilation. Setting CFLAGS="-fomit-frame-pointer" solved this problem.
ReplyDelete