我在mplayer官網上下載的MPlayer-1.0rc3源碼,最新的源碼是MPlayer-1.1。我是過了,MPlayer-1.1安裝起來相當順利,./configure make&&make install 就直接裝上了。但是MPlayer-1.0rc3卻非常費勁。不管有沒有打這個PPS的補丁……
首先下載補丁,補丁文件是從PPS官網上下載的mplayer.patch,將其放到當前工作路徑/home,
然後,下載MPlayer-1.0rc3.tar.bz2的源碼,將其下載到/home,
之後解壓
@home: tar -xvf MPlayer-1.0rc3.tar.bz2
首先,下載MPlayer-1.0rc3.tar.bz2的源碼(http://www.mplayerhq.hu/MPlayer/releases/),
之後解壓
tar -xvf MPlayer-1.0rc3.tar.bz2
這樣,/home 之中就有pps的補丁和一個文件夾MPlayer-1.0rc3了,接下來,安裝pps官網的安裝方法(http://download.ppstream.com/linux/readme.txt),改一下MPlayer源碼的文件夾名稱@home: mv MPlayer-1.0rc3 MPlayer-PPS
就在當前路徑/home下運行
patch -p1 < mplayer.patch這樣,補丁就打好了。
另外,mplayer還要下載Codecs,也是從MPlayer官網上下載(http://www.mplayerhq.hu/MPlayer/releases/codecs/),我下載的是all-20110131.tar.bz2。然後將其復制到/usr/share/codes目錄,這個目錄沒有就新建一個。然後在這個目錄/usr/share/codecs內,解壓all-20110131.tar.bz2。
#codecs: tar -xvf all-20110131.tar.bz2
然後,進入到MPlayer-PPS路徑內,運行configure
@home: cd MPlayer-PPS
@MPlayer-PPS: ./configure --prefix=/usr --confdir=/etc/mplayer --enable-largefiles --enable-x11 --disable-gui --codecsdir=/usr/share/codecs/ --language=zh_CN --disable-png --disable-live
編譯:
@MPlayer-PPS: make
出錯,提示
libvo/vo_png.c:56:28: error: 'Z_NO_COMPRESSION' undeclared here (not in a function)
libvo/vo_png.c: In function 'create_png':
libvo/vo_png.c:160:9: error: dereferencing pointer to incomplete type
make: *** [libvo/vo_png.o] 錯誤 1
在網上四處查,發現一個網頁(http://web.archiveorange.com/archive/v/p5L0wrMay1Zd2MYPKlOH 和http://lists.mplayerhq.hu/pipermail/mplayer-users/2007-July/068163.html 這個貌似是正解,但是沒有搞懂怎麼弄),與另一個網頁(http://lists.mplayerhq.hu/pipermail/mplayer-users/2007-July/068162.html這個網頁提到了個辦法,可以通過加 --disable-png 讓編譯通過)
於是,再試
@MPlayer-PPS: make distclean
@MPlayer-PPS: ./configure --codecsdir=/usr/share/codecs/ --disable-png
@MPlayer-PPS: make
libmpdemux/demux_rtp.cpp:79:20: error: 'class RTSPClient' has no member named 'describeWithPassword'
libmpdemux/demux_rtp.cpp:81:20: error: 'class RTSPClient' has no member named 'describeURL'
libmpdemux/demux_rtp.cpp: In function 'demuxer_t* demux_open_rtp(demuxer_t*)':
libmpdemux/demux_rtp.cpp:123:61: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
/usr/include/liveMedia/RTSPClient.hh:36:22: error: initializing argument 2 of 'static RTSPClient* RTSPClient::createNew(UsageEnvironment&, const char*, int, const char*, portNumBits)' [-fpermissive]
libmpdemux/demux_rtp.cpp:123:61: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
/usr/include/liveMedia/RTSPClient.hh:36:22: error: initializing argument 3 of 'static RTSPClient* RTSPClient::createNew(UsageEnvironment&, const char*, int, const char*, portNumBits)' [-fpermissive]
libmpdemux/demux_rtp.cpp:213:21: error: 'class RTSPClient' has no member named 'setupMediaSubsession'
libmpdemux/demux_rtp.cpp:225:24: error: 'class RTSPClient' has no member named 'playMediaSession'
libmpdemux/demux_rtp.cpp: In function 'void teardownRTSPorSIPSession(RTPState*)':
libmpdemux/demux_rtp.cpp:586:27: error: 'class RTSPClient' has no member named 'teardownMediaSession'
libmpdemux/demux_rtp.cpp: In function 'char* openURL_rtsp(RTSPClient*, const char*)':
libmpdemux/demux_rtp.cpp:83:1: warning: control reaches end of non-void function [-Wreturn-type]
make: *** [libmpdemux/demux_rtp.o] 錯誤 1
暈,網上搜,找到https://bugs.archlinux.org/task/28759 裡面也有一個折衷方法,加--disable-live 參數,接著試
@MPlayer-PPS: make distclean
@MPlayer-PPS: ./configure --codecsdir=/usr/share/codecs/ --disable-png --disable-live
@MPlayer-PPS: make
就通過了,之後安裝
@MPlayer-PPS: sudo make install
P.S.
看到網上有人安裝mplayer,配置的參數是 ./configure --prefix=/usr --confdir=/etc/mplayer --enable-largefiles --enable-x11 --enable-gui --codecsdir=/usr/share/codecs/ --language=zh_CN
嘗試,發現也會有錯
MPlayer Error: The GUI requires GTK devel packages (which were not found).
這時候要吧GUI選項去掉或者改成 --diable-gui 才能行。