MPLAYER/MENCODER를 Windows에서 컴파일 하기

소개

이 문서는 mplayercygwin을 이용해서 Win32 환경에서 컴파일 하는 방법을 설명하며, 유닉스 환경과 컴파일러 사용법, c 언어에 기본적인 지식이 있는것을 가정하여 작성되었다.

주의사항

- 이 문서에 기록된 프로그램/라이브러리들은 전부 문서 작성 시점에서 문제가 없는 파일들이다. 이 문서가 작성된 이후에 발표된 최신 프로그램, 라이브러리에서는 문제가 발생할 수도 있으며 컴파일 방법이 다를 수 도 있다. 만일 문제가 발생하면 문서에 적혀있는 버전의 파일을 설치하여서 작업을 하도록 하기바란다.

- 이 문서에서 cygwin 컴파일 방법은 2005.12.31 MPlayer CVS 버전을 기준으로 작성되었다.

- 이 문서의 위치는 http://www.kippler.com/doc/mplayer/ 이다. 다른 곳으로 이동(불펌)은 허락하지 않습니다.

문서 수정 기록

- 2004/12 dubble 이 바닥에 쓰인 mencoder.exe를 MinGW로 컴파일 할것을 제안

- 2005/01 dubble 이 MinGW를 통한 컴파일 방법 문서 작성

- 2005/01/23 현재 문서 최초 작성

- 2005/02/04 cygwin 컴파일 방법 추가

- 2005/04/23 MPlayer 1.0pre7 과 xvidcore-1.1.0-beta2 에 맞춰서 문서 다시 작성

- 2005/12/31 MingW 컴파일 방법 뺐음. MPlayer cvs20051231 버전에 맞추어 문서 다시 작성

- 2007/03/01 MPlayer 1.0rc1 에 맞추어 문서 다시 수정

Cygwin 설치하기

Cygwin으로 컴파일된 실행파일은 실행시 cygwin1.dll 파일이 필요하다.

- 다운로드 : http://www.cygwin.com/

- 설치 방법

. 홈페이지의 Install Cygwin Now 를 클릭해서 설치 프로그램을 실행시킨다.

. 미러 사이트를 설정에서는 ftp://linux.sarang.net 이나 ftp://ftp.kaist.ac.kr 을 고른다.

. 설치 패키지 선택 화면에서 기본 설치 이외에 다음 패키지를 설치한다.

 devel - nasm          
 devel - gcc / gcc-g++     
 devel - make
 devel - gcc mingw / gcc mingw core / gcc mingw g++
 devel - libfreetype2-devl
 devel - subversion
 libs - crypt
 libs - freetype2      
 libs - libiconv       
 libs - glib

(문제가 발생하는것도 싫고, 하드도 많고, 시간도 많고, 네트웍도 빠르면 옵션에서 전부를 선택해서 설치해도 좋다 )

. 참고 사이트 http://www.ezbox.net/cygwin/

- cygwin.bat 파일 편집

. 바탕화면의 cygwin 아이콘을 클릭하면 c:\cygwin\cygwin.bat 파일이 실행된다. 이 파일을 아래와 같이 수정해서 rxvt 를 사용하면 좀더 작업하기 편하다.

 @echo off
 
 C:
 chdir \cygwin\bin
 
 set TEXMFCNF=/usr/share/texmf-local/web2c
 set CYGWIN=tty
 
 rxvt -tn xterm -rv -fn fixedsys -e /bin/bash --login -i

. 이때 copy&paste 의 paste 는 마우스 가운데 버튼을 클릭하면 콘솔창으로 paste 된다.

필요한 파일 준비하기

DirectX 헤더 설치

- 다운로드 : http://www.mplayerhq.hu/MPlayer/releases/win32/contrib/

- 파일명 : dx7headers.tgz

- 설치 :

tar -xvzf dx7headers.tgz

mv *.h /usr/include

lame 설치

- 다운로드 : http://sourceforge.net/project/showfiles.php?group_id=290

- 버전 : lame-3.97.tar.gz

- 설치

tar xvzf lame-3.97.tar.gz

cd lame-3.97

./configure --prefix=/usr --disable-decoder --disable-shared

make

make install

ogg 설치

- 다운로드 : http://downloads.xiph.org/releases/ogg/

- 버전 : libogg-1.1.3.tar.gz

tar zxvf libogg-1.1.3.tar.gz

cd libogg-1.1.3

./configure --prefix=/usr --disable-shared

make

make install

vorbis 설치

- 다운로드 : http://downloads.xiph.org/releases/vorbis/

- 버전 : libvorbis-1.1.2.tar.gz

tar zxvf libvorbis-1.1.2.tar.gz

cd libvorbis-1.1.2

./configure --prefix=/usr --disable-shared

make

make install

libdts 설치

- 다운로드 : http://debian.unnet.nl/pub/videolan/libdts/0.0.2/

- 버전 : libdts-0.0.2.tar.gz

tar zxvf libdts-0.0.2.tar.gz

cd libdts-0.0.2

./configure --prefix=/usr --disable-shared

make

make install

x264 설치

- 참고페이지 : http://www.videolan.org/x264.html

- 버전 : svn으로 최신 버전 설치 (혹은 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ )

svn co svn://svn.videolan.org/x264/trunk x264

cd x264

./configure --prefix=/usr

make

make install

- 패치

. x264 를 그냥 사용하면 링킹에 문제가 생긴다.

configure 하기 전에, configure 파일에서 cygwin 관련된 아래 두줄을 막는다.

CFLAGS="$CFLAGS -mno-cygwin"

LDFLAGS="$LDFLAGS -mno-cygwin"

xvid 설치

- 다운로드 : http://downloads.xvid.org/downloads/xvidcore-1.1.2.tar.gz

- 버전 : xvidcore-1.1.2.tar.gz (final)

- 설치

tar xvzf xvidcore-1.1.2.tar.gz

cd xvidcore-1.1.2/build/generic

./configure --prefix=/usr --disable-shared

make

make install

mv /lib/xvidcore.a /lib/libxvidcore.a

- 패치

build/generic/configure 파일에서 -mno-cygwin 라는 부분을 찾아서 삭제한다.

MPlayer 컴파일

- 다운로드 : http://www.mplayerhq.hu/homepage/design7/dload.html

- 버전 : MPlayer-1.0rc1.tar.bz2

- 컴파일 :

bzip2 -dc MPlayer-1.0rc1.tar.bz2 | tar xv

cd MPlayer-1.0rc1

./configure

make

- 추가 사항

※ MPlayer 설정시 아래와 같이 명시적으로 필요한 일부 옵션을 적어줄 수 도 있다. 자세한 사항은 config 파일을 참조하고 입맞대로 설정해서 사용한다.

./configure --enable-runtime-cpudetection --with-codecsdir=codecs --enable-static --enable-win32 --disable-winsock2 --disable-tv --disable-network --disable-smb --disable-ftp --disable-gif --disable-jpeg --disable-png --enable-real --disable-mad --enable-x264 --disable-gl

- 링크에러

x264에서 링크 에러가 발생하면 config.mak 파일의

X264_LIB =

부분을

X264_LIB = -lx264

로 수정한다.

mpegaudiodec.c 에서 llrint 링크에러가 발생하면 llrint 를 lrint 로 수정한다.

패치하기

위의 설명대로 컴파일 할 경우 버그로 인해서 일부 정상 작동을 하지 않는다. 이경우 아래와 같이 패치를 적용해야 한다.

한+영 통합자막파일 처리 문제

- 설명 : 한+영 통합 자막파일일 경우 기존의 mencoder 에서는 정상 처리를 못하는 문제가 있다. 한+영 통합자막일 경우 동시에 나오도록 파일을 수정하였다. 내부적(config.h)으로 USE_SORTSUB 가 define 되어 있어야만 정상 작동한다.

- 수정된 자막 처리 파일 다운로드 : subreader.c(65KB)

오디오 코덱 문제

mplayer는 기본적으로 ffmpeg 의 wma 처리 모듈로 wma 오디오를 처리하도록 되어 있는데, WMA v2 파일들이 이 모듈로 정상 처리가 안되어서 일부 wmv 파일의 소리가 정상적으로 나오지 않는 문제가 발생한다.

이 문제를 해결하기 위해서는 ./etc/codecs.conf 파일에서 ffwmav2 부분을 아래와 같이 주석 처리를 해야 한다.

이렇게 막아 놓으면 wma v2 를 시스템에 설치된 기본 코덱(wmadmo)으로 재생하게 된다.

 ; audiocodec ffwmav2             
 ;  info "DivX audio v2 (ffmpeg)" 
 ;  status untested               
 ;  format 0x161                  
 ;  driver ffmpeg                 
 ;  dll "wmav2"                   

후원하기

혹시 이 문서가 당신의 삽질을 줄여줘서 고마우신가요? 그렇다면 [후원하기]를 통해서 문서를 작성한 이의 고생에 보답하실 수 있습니다.