1. 前言
MPlayer是一款開源多媒體播放器,在主流的Linux、windows、Mac OS 都能運行,主要廣泛用在Linux系統上; Mplayer不僅支持圖形界面、也支持命令行播放。這篇文章就介紹如何將MplayerJ交叉編譯移植到嵌入式開發板上運行,在命令行上正常的播放視頻,LCD屏采用的幀緩沖驅動框架渲染圖像。
開發板采用友善之臂的Tiny4412開發板,MCU是三星的EXYNOS4412,板子上接的LCD分辨率為800*480,幀緩沖驅動框架接口,Linux內核版本是3.5,系統不帶圖形界面,文件系統是采用busybox制作的最小根文件系統,整個系統比較精簡。交叉編譯器采用arm-linux-gcc 4.5.1版本。
在命令行運行Mplayer時,支持主模式和從模式兩種運行模式,主模式就是正常模式,Mplayer會監聽鍵盤事件,根據鍵盤上的快捷鍵完成靜音、音量加減、字幕控制、快進、快退等操作。如果想要主進程通過代碼控制播放器完成指定一些播放操作,就可以使用從模式播放,在從模式下可以通過管道與mplayer進行通信,完成視頻播放加載、暫停、停止、快進、快退等功能。
2. 移植libmad庫
默認情況下Mplayer采用自帶的mp3lib庫來進行mp3解碼,但是ARM系列的cpu,一般都沒浮點運算單元,而mplayer的mp3解碼默認使用的mp3lib是浮點運算庫,arm上跑不了,移植mplayer之前需要先編譯libmad庫。
libmad是一個開源的高精度 MPEG 音頻解碼庫。LIBMAD提供24-bit的PCM 輸出,完全是定點計算,非常適合沒有浮點支持的平臺上使用。使用 libmad 提供的一系列 API,就可以非常簡單地實現 MP3數據解碼工作。在libmad 的源代碼文件目錄下的 mad.h文件中,可以看到絕大部分該庫的數據結構和 API 等。
下載地址: www.linuxfromscratch.org/blfs/view/s…
(1) 解壓
[root@xiaolong video]# tar xvf libmad-0.15.1b.tar.gz
[root@xiaolong video]# cd libmad-0.15.1b
(2) 配置生成Makefile
[root@xiaolong libmad-0.15.1b]# ./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=$(pwd)/_install
--prefix=$(pwd)/_
install 指定最終生成的庫文件的安裝路徑。
(3) 修改Makefile
刪除Makefile大約29行處的-fforce-mem。
或者直接使用命令修改:
sed -i 's/-fforce-mem/ /g' Makefile
查找文檔中的-fforce-mem,然后替換成空。
(4) 編譯安裝
[root@xiaolong libmad-0.15.1b]# make && make install
復制代碼
(5) 查看編譯成功的文件
[root@xiaolong libmad-0.15.1b]# cd _install/
[root@xiaolong _install]# ls
include lib
include和lib兩個文件夾,對應文件夾中生成mad.h和libmad.a文件,這兩個文件供mplayer編譯用。
3. 交叉編譯MPlayer-1.3.0
下載地址: www.mplayerhq.hu/design7/new…
(1) 解壓安裝
[root@xiaolong video]# tar xvf MPlayer-1.3.0.tar.gz
[root@xiaolong MPlayer-1.3.0]# cd MPlayer-1.3.0
(2) 配置生成config.mak文件
[root@xiaolong MPlayer-1.3.0]# ./configure --prefix=$PWD/mplayer_installdir --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-cross-compile --enable-mad --disable-gui --disable-menu --disable-x11 --yasm="" --extra-cflags=-I/work/video/libmad-0.15.1b/_install/include --extra-ldflags=-L/work/video/libmad-0.15.1b/_install/lib/ 2>&1 |tee logfile
上面-I和-L指定的路徑是libmad庫編譯安裝生成的路徑,根據自己的libmad庫路徑填寫。
(3) 修改config.mak文件
去掉config.mak 33行處的-s參數。
[root@xiaolong MPlayer-1.3.0]# gedit config.mak +33
(4) 編譯安裝
[root@xiaolong MPlayer-1.3.0]# make && make install
編譯安裝成功之后,會得到一個mplayer可執行文件,這個就是播放器的命令行程序,運行即可播放視頻。
4. 部署運行環境
(1). 拷貝依賴庫
拷貝依賴就是需要將mplayer命令運行時,需要的所有庫文件找齊,拷貝到開發板的/lib目錄下。
然后再將mplayer可執行文件命令拷貝到開發板的/bins目錄下。
[root@xiaolong MPlayer-1.3.0]# cp mplayer /work/rootfs/bin/ -fv
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libncurses*.so* /work/rootfs/lib/ -rf
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libpng*.so* /work/rootfs/lib/ -rf
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libasound*.so* /work/rootfs/lib/ -rf
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libz.so* /work/rootfs/lib/ -rf
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libjpeg.so* /work/rootfs/lib/ -rf
[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libfreetype.so* /work/rootfs/lib/ -rf
(2) 測試播放視頻
[root@XiaoLong /]# mplayer xiaomaolv.mp4 -zoom -x 800 -y 480
mplayer :是mplayer生成的視頻播放命令 xiaomaolv.mp4 : 播放的視頻的文件。 -zoom -x 800 -y 480 : 視頻縮放的尺寸
后臺播放:
[root@XiaoLong /]# mplayer -slave -quiet -fs /video_mp3/xiaomaolv.mp4 &
(3). 修改mplayer默認的播放位置
修改源碼:
[root@xiaolong MPlayer-1.3.0]# vim libmpcodecs/vf_vo.c +184
審核編輯:湯梓紅
-
播放器
+關注
關注
5文章
402瀏覽量
37540 -
Linux
+關注
關注
87文章
11351瀏覽量
210512 -
mplayer
+關注
關注
0文章
6瀏覽量
2507
發布評論請先 登錄
相關推薦
Linux驅動開發_mplayer播放器開發
![<b class='flag-5'>Linux</b>驅動<b class='flag-5'>開發</b>_<b class='flag-5'>mplayer</b><b class='flag-5'>播放器</b><b class='flag-5'>開發</b>](https://file.elecfans.com//web2/M00/6A/58/poYBAGMlOkCAIYeaAABno-3CUrE385.png)
ubuntu下mplyer播放器源碼移植
![ubuntu<b class='flag-5'>下</b>mplyer<b class='flag-5'>播放器</b>源碼移植](https://file.elecfans.com//web2/M00/6D/D0/pYYBAGM1PvSAXierAAXh-Iql36E664.png)
[轉帖]移植mplayer到迅為itop4412開發板
非常詳細的(Ubuntu16.04) QT移植mplyer播放器
【NanoPi NEO2試用體驗】移植mplayer
移植mplayer到mini2440播放rm只有聲音該怎么辦?
嵌入式媒體播放器
MPla<x>yer播放器最新版下載1.2(2008-2-20)
S3C2410下mplayer音視頻播放器移植
嵌入式Linux開發環境搭建-3-安裝交叉編譯工具鏈
![嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>環境搭建-3-安裝<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>工具鏈](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論