開發板:tq2440css
arm-linux-gcc交叉編譯器:gcc version 4.3.3(Sourcery G++ Lite 2008q3-72)linux
MPlayer版本:shell
MPlayer-1.0rc2.tar.bz2緩存
準備源碼包:ide
MPlayer-1.0rc2.tar.bz2 libmad-0.15.1b.tar.gz工具
|
MPlayer 1.0已經把大部分解碼庫都自帶了,如ffmpeg,可是自帶的音頻庫在S32440下效果很是很差.換成使用libmad效果不錯.所以MPlayer 在ARM-Linux的最簡單的移植只須要移植這兩個便可.移植後即進行字符界面的播放.ARM的版本由我學生程磊最先運行成功.oop
但完整版本須要以下庫.測試
若是須要字幕支持.須要移植freetype庫.支持JPG皮膚須要 libjpeg庫,打開DVD光盤格式,須要dvdread,dvdnav等,支持pnm庫須要libpnmui
MPlayer的皮膚主要採用X11支持.但移植X11須要大量工做.這一部分程序由個人學生童軍實現,已經在S3C2440開發板上看皮膚的效果.編碼
MPlayer也支持SDL,可是實測好象其實現並不支持皮膚顯示.通常將其關掉.
ARM版一樣能夠加入live555支持,支持遠程的RTSP的流媒體播放器,方法同X86版相似.
源碼拷貝到/opt/EmbesdSky/video 並分別解壓
MPlayer的簡單移植
1. 編譯 libmad
首先配置 configure 文件(事實證實,每次configure以前看一下./configure --help是個好習慣)
*************************************************************************************************************************************
#./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/opt/EmbestSky/video/MPlayer-1.0rc2
2.make
完成以後會出現錯誤,找到Makefile並刪除「--fforce-mem」就OK了, 緣由是gcc 4.4.3已經將其去除了,因此會出現上面的錯誤
3.make install
編譯安裝MPlayer
1.下載MPlayer-1.0rc
2.tar.gz解壓到/opt/Embesdsky中。
3.首先配置 configure 文件
關鍵就是後面的配置參數了。rc2版本的配置參數相比pre版本而言有些微的改變
**************************************************************************************************
#./configure --enable-cross-compile --host-cc=gcc --cc=arm-linux-gcc --as=arm-linux-as --ar=arm-linux-ar --ranlib=arm-linux-ranlib --target=arm-linux --enable-static--prefix=/home/lyh/mplayer-make/MPlayer --disable-dvdread --disable-win32dll--enable-fbdev --disable-mencoder --disable-live --disable-mp3lib--enable-mad --enable-libavcodec_a--language=zh_CN,en --disable-armv5te --disable-armv6--with-extraincdir=/home/lyh/mplayer-make/mplayer/include--with-extralibdir=/home/lyh/mplayer-make/mplayer/lib
./configure --prefix=/mywork/mplayer --disable-mencoder --enable-linux-devfs --disable-iconv --enable-network --disable-live --disable-dvdnav --disable-dvdread --disable-dvdread-internal --disable-libdvdcss-internal --enable-ftp --enable-libavcodec_a --enable-libavcodec_mpegaudio_hp --enable-mad --disable-mp3lib –disable-ivtv --enable-fbdev --enable-ossaudio --enable-cross-compile --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-static --with-extraincdir=/mywork/libmab/mad/include --with-extralibdir=/mywork/libmab/mad/lib 2>&1 |tee logfile
注意:若是不加–disable-ivtv會出現ivtv文件產生的錯誤。
MPlayer不支持常見的--host來修改編譯工具前綴.必須用--cc,--ar,--ranlib這樣參數來修改.
--disable-mp3lib是關閉默認的MP3解碼庫,--enable-mad 是使用libmad支持.
--disable-dvbhead --disable-dvdread --disable-dvdnav --disable-dvdread-internal 都是跟DVD相關庫
--enable-fbdev 打開framebuffer支持.ARM開發板必須的.
--enable-static 若是使用靜態編譯尺寸大約是8M,動態編譯是6M多,這樣多是不管哪一種編譯方式,mplayer都把自帶的解碼庫連接到自身,多出2M應該是系統標準庫的尺寸。
--enable-static 設置靜態鏈接
--disable-mencoder 禁止編碼功能
--disable-live 禁止live 555流媒體(我也不知道是什麼玩意兒。。。)
--enable-libavcodec_a 啓用靜態的libavcodec解碼
4. 在make以前修改兩個地方,不然會出現不支持pld [r1]指令的問題
在MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件
和MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S文件的開始處寫入
|
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
而後make
5. make install
會出現一個錯誤,能夠無論它,由於此時mplayer已經出來了,也就是說已經成功了。。。。
修改make install的bug
查資料看install帶-s 參數時會自動調用strip來strip應用程序。可是arm編譯時要調用arm-linux-strip纔有正確處理。解決辦法是取消-s參數,查看Makefile能夠發現-s是以下
$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF) $(BINDIR)
的INSTALLSTRIP設置的,它默認是-s,所以只要簡單在Makefile的前面(95行)加入
INSTALLSTRIP := # (將其置爲空便可)
6. 把mplayer經過tftp軟件傳到開發板中,在傳一個視頻文件eg:new.avi
7. 輸入./mplayer new.avi -framedrop -quiet -vf rotate=1,scale=240:320測試
爲何沒有聲音呢???上網查詢解決……….
解決方法:
mkdir -p /dev/sound
ln -s /dev/dsp /dev/sound/
緣由:目標系統上有 /dev/dsp 音頻設備文件,只是OSS音頻驅動須要的是 /dev/sound/dsp 設備文件,這問題的簡單解決方法是建一個符號連接,固然這兩條命令能夠寫在系統的啓動文件的適當位置,即修改系統的/etc/init.d/rcS文件。
4. 將編譯的mplayer放置開發板上運行:
./mplayer –fs –zoom –x 320 –y 240 -ac mad –nosound –cache 4096 output.avi –loop 0
參數解釋:
-zoom -x 320 -y 240 全屏
-ac mad 是必須,表示強制用libmad解碼.
-nosound 取消音頻
-cache 4096 緩存設置爲4M
-loop 循環播放,爲0則無限循環播放,!0則有限播放
5. 其它:
播放循環列表的方式
a). 製做一個播放列表
ls /mnt/*.avi > tom.lst
b). 循環播放
mplayer -playerlist tom.lst –shuffle
其中
-playerlist 指定播放列表
-shuffle 指定隨機播放
播放中文字幕的方法
Vi ~/.mplayer/config
輸入
Font=/usr/share/fonts/truetype/arphic/uming.ttf
Subcp=cp936
Subfont-autoscale=2
Subfont-text-scale=5
Vo=xv
MPlayer完整在LCD上顯示
能夠用video filter 參數 scale來設置
/mplayer -vf scale=240:320 也能夠用 -zoom -x 320 -y 240來代替
若是搞不清本身分辯率的,可在MPlayer用 -fullscreen參數 .或者執行busybox shell命令fbset查看自n己板的分辯率
6. 附錄:
./mplayer guizu.mpg –nosound –aspect 320:240 –bpp 24 -vf scale=320:240 –cache 5120
有人測試發如今有一些開發板下.Mplayer播放後,輸出會干擾後續shell的執行行.用下面比較長的參數通常沒事
./mplayer -ac mad 2.mpg -quiet \ -vf scale=320:240 2>&1 1>/dev/null &&
至此MPlayer移植成功… …此移植過程參考大量水友的操做步驟,在此深表感謝!!!
歡迎指錯!!!
2. cd /opt/Embesdsky/MPlayer-1.0rc2