우분투/데비안에서 cvs를 이용한 MPlayer 빌드

uriel의 이미지

우분투 Mplayer gui gtk2 patch에서 cvs를 이용한 mplayer 빌드 내용이 있긴 합니다만, 패키지 만들기나 옵션, 한글화 등의 내용을 정리햇습니다. 기본적인 내용은 MPlayer 사이트Debian packagingREADME, 우분투 포럼MPlayer compilation from CVS의 설치에 관한 것에 컴파일 옵션과 한글 관련된 부분을 추가한 것입니다.

참고로 CVS 버전은 gtk2가 적용되어 있고 마우스 오른쪽 클릭 버그가 고쳐져 있습니다. 빌드 환경은 우분투 브리지(5.10) AMD64입니다. i386에서도 별문제 없이 적용 될 것 같네요.

----

    1. 먼저 필요한 패키지들을 추가합니다.

    sudo apt-get install build-essential libx11-dev libxv-dev libpng12-0 libpng12-dev checkinstall libavcodec-dev aalib1 libaa1-dev libaa1 caca-utils libcaca-dev libavcodec-dev libavifile-0.7-dev libsdl1.2debian-all libsdl1.2debian libsdl1.2-dev libesd0-dev libfaac-dev libfaad2-dev libgtk2.0-dev liblame-dev libice-dev libjpeg62-dev libmatroska-dev libmad0-dev libmpcdec-dev libmp4v2-dev libmikmod2-dev libogg-dev libtheora-dev libvorbis-dev libxinerama-dev libxv-dev xlibs-dev x-dev cvs libquicktime1 libquicktime-dev libmjpegtools0 fakeroot libconfhelper-perl

    2. CVS에서 MPlayer 다운받기

cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer login
cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer co -P main

암호를 물어보면 그냥 엔터를 치세요. 나중에 다시 CVS와 sync한다면 아래의 명령을 해 주면 됩니다.
cvs -z3 update -dPA

3. Codec 설치
내부적으로 코덱을 같이 포함시킵니다.

cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login
cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg

암호를 물어보면 그냥 엔터를 치세요. 생성된 ffmpeg 디랙터리 아래에 livavcodec, libavformat, libavutil 디렉터리를 2번에서 생성한 main 디렉터리 아래로 복사해줍니다. 그리고 2번의 main/CVS/Entries 파일의 제일 뒤에 다음 내용을 추가 해 줍니다.
D/libavcodec////
D/libavformat////
D/libavutil////

4. MPlayer 컴파일
2번의 main 디렉터리에서 아래 명령을 실행시켜줍니다. 아래 명령을 내리기 전에 /usr/lib/win32 에 윈도우 코덱 dll을 설치하시기 바랍니다.

DEB_BUILD_OPTIONS="--enable-gui --enable-largefiles --enable-menu --enable-fribidi --prefix=/usr --confdir=/etc/mplayer --mandir=/usr/share/man --language=ko --disable-rtc --with-codecsdir=/usr/lib/win32" fakeroot debian/rules binary

보통 처음 세 옵션만 기본적으로 적용합니다만 --enable-fribidi도 추천합니다. 그리고 그 뒤에는 우분투/데비안의 디렉터리 구조에 맞게 설치위치를 적용하고, --language=ko 옵션은 기본 언어를 한글로 합니다. (이게 없어도 로케일로 동작해야 합니다만, 저게 없으면 제대로 한글이 안나오더군요)

그리고 --disable-rtc 옵션은 MPlayer를 실행시키면 max_freq를 설정하라는 게 보기 싫어서 꺼버렸습니다. MPlayer 문서를 읽어보니 rtc를 이용하지 않으면 +-10ms의 오차가 있는 이전 방법을 사용한다고 되어 있는데, rtc를 사용하려면 echo 1024 > /proc/sys/dev/rtc/max-user-freq 를 하라고 되어 있더군요. 문제는 installer가 이걸 해주지 않기 때문에 귀찮아서 아예 옵션에서 꺼버렸습니다. 마지막으로 --with-codecsdir=/usr/lib/win32은 우분투의 기본 코덱 경로입니다. 컴파일 할 때에 코덱이 저 위치에 있어야 합니다.

5. 패키지 설치
sudo dpkg -i mplayer*.deb
그놈에서 프로그램->음악과 비디오에 MPlayer가 추가됩니다.

6. 스킨 설치
http://www.mplayerhq.hu/homepage/design7/dload.html에서 스킨을 다운받아 설치합니다. 설치 경로는 /usr/share/mplayer/Skin이고, default가 반드시 있어야 합니다. 다음은 제 설정입니다.

uriel@nuri:/usr/share/mplayer/Skin$ ls -ls
total 4
4 drwxr-xr-x  2 root root 4096 Mar 13  2005 clearlooks-mplayer
0 lrwxrwxrwx  1 root root   19 Nov 28 22:36 default -> clearlooks-mplayer/

7. 폰트 설정
MPlayer에 폰트를 설정하는 방법은 여러가지가 있습니다. 제 경우는 truetype을 사용하게 했는데, 이게 fontconfig/freetype의 여부로 시스템마다 다를 수 있습니다. 우분투 브리지를 기준으로 하면 ~/.mplayer/subfont.ttf가 실제 폰트의 링크로 되어 있어야 합니다. MPlayer GUI에서 선택사항 -> 글꼴에서 글꼴을 지정하면 제대로 동작하지 않습니다. 다음은 제 설정입니다. 은글꼴을 사용했습니다.
ln -s /usr/share/fonts/truetype/unfonts/UnBatang.ttf ~/.mplayer/subfont.ttf

8. 한글 설정
MPlayer를 띄워서 선택사항->자막&OSD에서 인코딩은 한국어(CP949), "유니코드 자막" 옵션을 선택합니다. 선택사항->글꼴에서 인코딩은 유니코드를 선택합니다.
----
아래는 clearlook skin을 적용한 파일입니다.

[/]
File attachments: 
첨부파일 크기
Image icon mplayer.jpg29.85 KB
Plain text icon mp_error.txt21.3 KB
Forums: 
atie의 이미지

아주 정리가 잘 되었습니다. 다시 만들 때는 이 글을 참고해야 하겠습니다. :wink:

추가하고 싶은 한 가지 팁은, 이렇게 공들여 만든 내 패키지를 (mplayer 패키지가 위의 cvs코드를 포함할 때까지) apt-get이나 synaptic에서 일괄 upgrade 안하게 pinned 상태로 해 놓으려면 위의 하우투로 mplayer를 설치하고, synaptic에서 mplayer를 선택 -> Package -> Lock Version을 하면 됩니다. 해제도 동일한 방법으로 하고요.

----
I paint objects as I think them, not as I see them.
atie's minipage

익명 사용자의 이미지

4번 컴파일 부분에서
아래와 같은 에러메세지가 나옵니다. 어떻게 하나요?

make: dh_testdir: 명령을 찾지 못했음
make: *** [configure-stamp] 오류 127

atie의 이미지

debhelper를 설치하십시요.

그리고, 이 글타래에는 적어놓는 것을 잊었는데 우분투의 Dapper에는 위의 mplayer cvs 버전이 이미 포함이 되었습니다. Dapper를 설치하면 위의 컴파일 과정없이 clearplayer 스킨이 기본 설정된 mplayer를 즐길 수 있습니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

익명 사용자의 이미지

컴파일시 아래와 같은 에러가 떨어집니다.

우분투, 쿠분투 동일하게 나타나는군요..

fribidi-dev패키지는 설치 했습니다.

옵션도 위의 컴파일 옵션과 동일하게도 해보고 말씀하신대로 앞의 3개만 줘도 동일한 증상이 나타나는군요..

cc -c -I../libvo -I../../libvo -fno-PIC -O4 -march=athlon-xp -mtune=athlon-xp -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I. -I.. -I../libmpcodecs -Wall -I/usr/include/freetype2 -o menu_dvbin.o menu_dvbin.c
In file included from ../libmpdemux/dvbin.h:11,
from menu_dvbin.c:27:
../libmpdemux/dvb_defaults.h:73:3: warning: #warning No DVB-T country defined in dvb_defaults.h, defaulting to UK. Ignore this if using Satellite or Cable.
ar r libmenu.a menu.o vf_menu.o menu_cmdlist.o menu_pt.o menu_list.o menu_filesel.o menu_txt.o menu_console.o menu_param.o menu_dvbin.o
ar: creating libmenu.a
true libmenu.a
make[2]: Leaving directory `/home/dream/build/main/libmenu'
cc -I../libvo -I../../libvo -fno-PIC -O4 -march=athlon-xp -mtune=athlon-xp -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I. -I/usr/include/ -I/usr/include/freetype2 -I/usr/include/SDL -D_REENTRANT -I./libavutil -I./libavcodec -o mplayer mplayer.o mp_msg.o asxparser.o codec-cfg.o cpudetect.o edl.o find_sub.o m_config.o m_option.o m_struct.o parser-cfg.o playtree.o playtreeparser.o spudec.o sub_cc.o subreader.o vobsub.o unrarlib.o mixer.o parser-mpcmd.o subopt-helper.o libvo/libvo.a libao2/libao2.a libmenu/libmenu.a vidix/libvidix.a Gui/libgui.a libmpcodecs/libmpcodecs.a loader/libloader.a loader/dshow/libDS_Filter.a loader/dmo/libDMO_Filter.a libaf/libaf.a libmpdemux/libmpdemux.a input/libinput.a postproc/libswscale.a osdep/libosdep.a -Llibmpdvdkit2 -lmpdvdkit libavformat/libavformat.a libavcodec/libavcodec.a libavutil/libavutil.a -lmad -ldv -ltheora -logg -lmp3lame -ldts -lpng -lz -lz -ljpeg -lasound -ldl -lpthread -lfaac -lfreetype -lz -ltermcap -lnsl -lfontconfig libfaad2/libfaad2.a mp3lib/libMP3.a liba52/liba52.a libmpeg2/libmpeg2.a tremor/libvorbisidec.a -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXinerama -lXi -lXrandr -lXext -lXcursor -lXfixes -lpango-1.0 -lcairo -lXrender -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lglib-2.0 -laa -lGL -ldl -lXv -lXinerama -L/usr/X11R6/lib -lXext -lX11 -lnsl -lpthread -lnsl -L/usr/lib -lSDL -lpthread -L/usr/lib -lcaca -lslang -lX11 -L/usr/X11R6/lib -lncurses -lncurses -L/usr/lib -ldl -lartsc -lpthread -lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0 -L/usr/lib -lesd -laudiofile -lm -laudio -lXt -L/usr/X11R6/lib -lXext -lX11 -lnsl -lpthread -Wl,-z,noexecstack -lpthread -ldl -rdynamic -lm
subreader.o: In function `sub_fribidi':
subreader.c:(.text+0x146b): undefined reference to `fribidi_set_mirroring'
subreader.c:(.text+0x1477): undefined reference to `fribidi_set_reorder_nsm'
subreader.c:(.text+0x149d): undefined reference to `fribidi_parse_charset'
subreader.c:(.text+0x150e): undefined reference to `fribidi_charset_to_unicode'
subreader.c:(.text+0x1566): undefined reference to `fribidi_log2vis'
subreader.c:(.text+0x1596): undefined reference to `fribidi_remove_bidi_marks'
subreader.c:(.text+0x15d2): undefined reference to `fribidi_unicode_to_charset'
subreader.c:(.text+0x15ee): undefined reference to `fribidi_parse_charset'
collect2: ld returned 1 exit status
make[1]: *** [mplayer] 오류 1

kihongss의 이미지

Quote:
make clean

./configure --enable-gui --enable-largefiles --enable-menu --enable-fribidi --prefix=/usr --confdir=/etc/mplayer --mandir=/usr/share/man --language=ko --disable-rtc --with-codecsdir=/usr/lib/win32

DEB_BUILD_OPTIONS="--enable-gui --enable-largefiles --enable-menu --enable-fribidi --prefix=/usr --confdir=/etc/mplayer --mandir=/usr/share/man --language=ko --disable-rtc --with-codecsdir=/usr/lib/win32" fakeroot debian/rules binary

저는 ./configure를 똑같은 옵션으로 해줘야 제대로 *.deb 가 생성되더군요. :D

익명 사용자의 이미지

컴파일 할 때 계속 에러가 납니다.

In file included from Gui/interface.h:6,
                 from mplayer.c:82:
Gui/mplayer/play.h:5:23: error: ../config.h: No such file or directory
In file included from Gui/interface.h:6,
                 from mplayer.c:82:
Gui/mplayer/play.h:5:23: error: ../config.h: No such file or directory

흠..뭐가 문제인지...그냥 config.h파일을 Gui디렉토리에 복사하면 될까요? :shock:

kyong의 이미지

한글 자막 보기 설정에 무지 도움이 됐습니다.
제 경우는 amd64 인데 MPlayer-1.0pre7try2로 설치했느데 64bit 에서 설치하려다 보니 라이브러리 문제 때문에 configure를 조금 수정해야 했습니다.
/usr/X11/lib 를 먼저 찾으니 link 가 안 되니까 자꾸 x11이 없다고 나오더군요.

--- configure.org       2006-01-04 13:13:16.000000000 +0900
+++ configure   2006-01-04 13:12:54.000000000 +0900
@@ -3418,7 +3418,7 @@

 echocheck "X11 libs presence"
 if test -z "$_ld_x11" ; then
-  for I in /usr/X11R6/lib /usr/lib/X11R6 /usr/X11/lib /usr/lib32 /usr/openwin/lib /usr/X11R6/lib64 /usr/lib ; do
+  for I in /usr/X11R6/lib64 /usr/lib/X11R6 /usr/X11/lib /usr/lib32 /usr/openwin/lib /usr/X11R6/lib /usr/lib ; do
     if test -d "$I" && ( test -f "$I/libX11.so" || test -f "$I/libX11.a" || test -f "$I/libX11.dll.a" ) ; then
       if netbsd; then
         _ld_x11="-L$I -Wl,-R$I"


근데 자막에 폰트는 한결체를 쓰는데 2줄 이상 나올 때 아래 위가 조금 겹쳐지는데 설정을 어떻게 해야 안 겹쳐지지요?
익명 사용자의 이미지

wine 부분에서 나는거보니 윈도용 코덱 지원관련인 것 같습니다. 좀 mplayer 메일링리스트를 비롯해 몇몇곳을 능력껏 뒤적여보니 역시 그런 것 같고요. 방법이라는게 --disable-win32 를 추가하라는, 그러니까 지원을 빼라는 정도밖에 안보이군요. 위에도 64머신을 쓰는 분들이 있어보이는데 윈도코덱 지원을 안빼고도 별 문제가 없으셨던거 같습니다. 방법을 좀 가르쳐주시면 고맙겠습니다(__)

참고로 빌드할 때 오류났던 부분 기록을 첨부파일에 txt포맷으로 넣었습니다(본문에 붙일까하다 너무 길어 어지럽혀질듯해서;). 환경은 말씀드렸다시피 amd64에 데비안 sarge amd64 포트입니다.

댓글 첨부 파일: 
첨부파일 크기
Plain text icon 0바이트

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.