首頁 > 軟體

CentOS 7 安裝MPlayer過程詳解

2020-06-16 17:18:54

使用自帶的totem基本上都無法播放視訊,各種格式都不支援,令人無語。想到了MPlayer,為了看片,決定編譯安裝,過程真的是折騰。如圖是自帶的Totem播放提示,安裝了解碼還是無法播放,反正要找其他播放器了,也沒興趣去管他是什麼原因。

需要用到的東西在MPlayer官網上都有,就一個頁面可以把所有東西都下載好http://mplayerhq.hu/design7/dload.html

0x01 準備工作

使用svn方式獲取獲取原始碼命令

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

會在當前目錄生成mplayer目錄,再進入mplayer執行svn update更新svn,更新成功後顯示”At revision”,至此獲得了原始碼

另外需要下載解碼包(Binary Codec Packages),解壓到指定目錄,預設的就是/usr/local/lib/codecs,當然可以在編譯選項裡面更改。

tar -xaf essential-amd64-20071007.tar.bz2
mkdir /usr/local/lib/codecs
cp essential-amd64-20071007/* /usr/local/lib/codecs

mplayer原始碼安裝的時候需要yasm編譯器,我在pkgs.org找到的,也把它下載下來,安裝後就幾個檔案而已。

至此,準備工作完成,原始碼、解碼包、yasm編譯器都有了,另外原始碼安裝必須的編譯工具就不多說了,yum grouplist中把Development那兩個裝上就好了

yum groupinstall "Development tools"

yum groupinstall "Development Libraries"

0x02 編譯安裝

./configure --[options]

常用選項:
--prefix=/usr/local/mplayer 是安裝路徑
--enable-gui 安裝圖形化使用者介面
--enable-freetype 調節字型
--with-codecsdir=/usr/lib/codecs/
--with-win32libdir=/usr/lib/wincodecs 指定解碼位置
--language=zh_CN 中文

這裡我直接進入mplayer目錄,執行./configure --enable-gui --language=zh_CN

這裡需要等待一小段時間自動下載元件

0x03 問題來了

第一個問題出現:“The GUI requires X11”

檢查上面的各種checking希望能看到蛛絲馬跡,發現關於X11的兩個checking都是顯示”…no”

yum search X11 看看有什麼能用的,抱著試試看的心態安裝了libX11兩個包

yum install libX11-devel libX11

然後再來./configure一次,發現其中一個變為了yes了

再來百度發現GUI可能和gtk有關,但是他們普遍的錯誤都是“Error: X11 support required for GUI compilation”,而不是我的“The GUI requires X11”

也是摸石頭過河的心態,安裝了再說,又裝了gtk的兩個包,終於有兩個yes

[root@localhost mplayer]# yum install gtk+-devel gtk+


安裝好了gtk之後就引發了第二個問題,需要gtk2,如圖:

需要就安裝唄,可是安裝不成功,現存的軟體包版本太低,主要就是mesa-private-llvm和libdrm這兩個的問題,這裡也就折騰了。還有個值得注意的是看看同一軟體包不同的版本,一個是el7,一個是el6. ,也是好幾回下來才發現的

安裝libdrm的時候就有問題了,2.4.59.el6和舊版本2.4.50.el7的三個檔案衝突,yum源下載到本地用rpm安裝,rpm有個--force暴力選項。可以發現不用--force還是無法安裝,不管怎樣先把安裝包弄上再說。 

 

  解決了上面兩個包的問題之後再來yum install gtk2-devel

又發現裝gtk2時為解決依賴附帶安裝的mesa-dri-drivers-10.4.3安裝不上,因為和系統現存的mesa-libglapi包所擁有的libglapi.so.0.0.0衝突(下載包並檢視rpm –qlp mesa-dri-drivers-10.4.3發現果然有一個同名的檔案,蛋疼的是系統存在的mesa-dri-drivers-9.2.5版本卻沒有這個檔案,看來是軟體包版本升級新增的)。

那麼現在怎麼處理呢。再來手動安裝看看什麼情況,又依賴於mesa-dri-filesystem、mesa-dri1-drivers兩個包。試下yum看能否一次性解決。

可惜的是其中一個依賴包又報錯了,單獨安裝,說小於7.12的版本已被廢棄。

真心感覺沒完沒了,直接強制安裝。

rpm --nodeps -ih mesa-dri1-drivers-7.11-8.el6.x86_64.rpm

rpm --force -ih mesa-dri-drivers-10.4.3-1.el6.x86_64.rpm

然後驚奇地發現gtk2-devel可以安裝成功了

亂起八糟的依賴看到都頭暈了,畫了個圖來總結gtk2-devel的折騰過程

當然解決依賴問題的時候你的源要設定好,我的CentOS7裡面只設定了epel和光碟的本地源


0x04 編譯安裝成功

總算可以好好執行./configure --enable-gui --language=zh_CN

make install(解除安裝的話就make uninstall) 就看到各個目錄和可執行檔案的建立。

0x05 後續

好??容易安裝好,在圖形桌面左上角Application選單開啟提示,這是沒有下載皮膚導致只能從命令列啟動

官網上下載皮膚

wget http://www.mplayerhq.hu/MPlayer/skins/XXXXXXXXXXXX

解壓tar -xf XXXXXXXXX

解壓後的資料夾複製到預設皮膚目錄

因為播放器預設是找default的,那就在當前目錄建立個連線,命名為default。從圖形介面開啟後就可以自行切換皮膚。

cd /usr/local/share/mplayer/skins/
ln -s <皮膚目錄>/ default

--------------------------------------------------------------------------------------------------------------

使用過程中出現無法通過圖形介面開啟沒反應,gmplayer命令開啟檔案閃退問題,終端執行gmplayer出現如下錯誤
[root@localhost]# gmplayer <file>

Option equ_channel_1 needs a parameter at line 11
Option equ_channel_2 needs a parameter at line 12
Option equ_channel_3 needs a parameter at line 13
Option equ_channel_4 needs a parameter at line 14
Option equ_channel_5 needs a parameter at line 15
Option equ_channel_6 needs a parameter at line 16

解決方法:執行過mplayer後,會在~/.mplayer/下生成gui.conf,出錯的原因是該組態檔的11~16行

可直接將gui.conf刪除,再次執行mplayer就可以了,同時新的gui.conf會再次生成,而這次生成的檔案中就沒有這六行

--------------------------------------------------------------------------------------------------------------

因為我的centos7安裝在行動硬碟裡,編譯好的mplayer拿到其它機器上使用會出現如下問題

------------------------------------------------------------ --------------------------------------------------

當然還有個問題就是沒有聲音[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such device。

OSS全稱是Open Sound System,即是linux下的音效卡驅動架構,它提供了主要的一些api函數,音訊進行操作的。早期的linux下音效卡多是用這種架構的,但是它有一個缺點就是不支援混音,而且都不能同時操作音效卡。ALSA全稱是Advanced Linux Sound Architecture,在2.6系列核心中,ALSA已經成為預設的聲音子系統,用來替換2.4系列核心中的OSS(Open Sound System,開放聲音系統)

以下方法未經測試。

對於之前的Centos版本,一說是用# modprobe snd_pcm_oss(一次性臨時生效)或者mknod /dev/dsp c 14 3之後chmod 666 /dev/dsp就可以了(持久生效),還發現一個將/etc/sysconfig/sound裡面的no改成yes的方法

對於Centos7,安裝alsa相關的包,因為rhel6和centos6以上的版本使用音效卡設定都是alsa了,所以聲音可能與缺這個相關的包有關.yum install -y *alsa*

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/142005.htm


IT145.com E-mail:sddin#qq.com