移植mplayer視頻播放器到ARM板子


前言:

嵌入式linux幾種播放視頻的方法:

1、交叉編譯mplayer、smplayer等軟件,移植到嵌入式平台。這種方法在嵌入式平台不能控制窗口位置,不能很好的嵌入到自己程序的窗口中去。但是實現起來應該比較快。

2、使用qt4的phonon組件。這個需要移植相關的phonon、phononbackend、gstreamer等。

3、使用qt5的QMediaPlayer。也需要移植gstreamer。

一、環境和軟件介紹

1、主機環境:Ubuntu16.04

2、交叉編譯器: gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)

3、ARM板:kernel:2.6.35,SoC:S5PV210

4、軟件包:MPlayer-1.0rc4.tar.bz2,點擊下載,或者從非官方下載:http://www.mplayerhq.hu/MPlayer/releases/

二、交叉編譯獲取mplayer可執行文件

1、交叉編譯libmad-0.15.1b

因為mplayer的編譯依賴於這個libmad-0.151b的庫,所以需要先編譯這個,而這個的編譯在我的博客里madplay移植已經有教程,這里不再寫,參考鏈接

在我的ubuntu里,我編譯libmad-0.151b后的安裝路徑是:/root/madplay_installed,下面涉及到這個路徑的,你要靈活修改為你的。

2、交叉編譯MPlayer-1.0rc4

(1)解壓:

tar -xvjf MPlayer-1.0rc4.tar.bz2

(2)配置:

cd MPlayer-1.0rc4/
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/root/mplayer_installed>&1 | tee logfile

注意:

--cc=arm-linux-gcc這選項是指定編譯工具鏈。但是這前提是我已經為我的工具鏈創建了arm-linux-xxx這樣的符號鏈接,並且將路徑導出到了PATH

--prefix=/root/mplayer_installed這個指定的是我自定義的MPlayer-1.0rc4的安裝目錄

在./configure配置完了后,一定要看打印出來的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉編譯工具鏈

 (3)編譯:

make -j4

出錯1: 發現者mad.h是libmad-0.15.1b編譯后生成的,這里說沒有是因為這程序找不到

解決方法:就是指定libmad-0.15.1b編譯后安裝的路徑,讓該程序能找到mad.h,我這里采用了簡單粗暴的方法(這方法不得已,最好不要用)

當前在MPlayer-1.0rc4源碼頂層目錄

cp /root/madplay_installed/include/mad.h ./

 再次編譯:

make -j4

出錯2:這錯誤其實很容易想到,因為我們並沒有指定libmad-0.15.1b編譯后,它的庫的安裝路徑

 解決方法:

vim config.mak

找到-lmad,在其后面,添加libmad-0.15.1b編譯后,它的庫的安裝路徑:-L/root/madplay_installed/lib

再次編譯:

make -j4

安裝:

make install

出錯:

碰到這種問題,肯定是粘貼出錯信息百度啦,最后得知:這個是因為在make install時會調用strip來剔除一些無用的文件,但是此時strip是主機的,而不是目標機的,就出現錯誤。解決方法是修改config.mak文件,將文件中的“INSTALLSTRIP = -s”  改成“INSTALLSTRIP =”。

vim config.mak

再次安裝:

make install

完美編譯好了MPlayer-1.0rc4,上圖bin/mplayer就是我們要的視頻播放器可執行文件。將它部署到開發板使用即可。

提醒:注意工具鏈的選擇跟你開發板有很大關系,如果編譯鏈版本太高,編譯出來的可執行程序要求的內核版本就很高;而如果你的內核達不到這可執行程序的最低內核版本要求,那么在你開發板是運行不了這個可執行程序的,會顯示說你的內核版本太低。例如我編譯好的這個mplayer最起碼要在2.6.16的內核版本以上的開發板才能運行。

附上mplayer的使用方法:

1、如果是單獨測試:(xxx.avi是avi格式的視頻)

./mplayer xxx.avi

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM