您的位置:首页 > 其它

Mplayer移植到Arm开发板

2012-01-03 16:14 369 查看
(一)移植准备工作

下载代码:A)下载 libmad 包( libmad-0.15.1b.tar.gz)

B)MPlayer-1.0pre7try2.bz2

C)交叉编译器使用 3.3.2

运行环境:QQ2440+RedHatLinux9.0+arm-linux-gcc-3.3.2

(二)配置交叉编译器:可以直接在网上下载编译好的交叉编译环境,比如友善提供的交叉编译器

(三)编译libmad库文件如下步骤:

下载 libmad 包( libmad-0.15.1b.tar.gz );

解压tar -xzvf libmad-0.15.1b.tar.gz

进入libmad 的目录,输入配置命令:

./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.3.2/lib CC=arm-linux-gcc

(要保证 arm-linux-gcc 的路径已经有 export 过,否则给出完整路径。)

make

make install

这样就可以看到 /usr/local/arm/3.3.2/lib 目录下多了 include 和 lib 目录,这些就是 libmad相关的库。

(四)编译mplayer(MPlayer-1.0pre7try2.bz2)这里按照网上流行的<移植>一文操作

将MPlayer-1.0pre7try2.tar.bz2拷贝到工作目录(比如/work/pmp/)

cp ./MPlayer-1.0pre7try2.tar.bz2 /work/pmp/

cd /work/pmp/

tar jxvf MPlayer-1.0pre7try2.tar.bz2

mv MPlayer-1.0pre7try2 MPlayer (这里只是改个名字,原来的实在太长了)

上面应该不会有什么问题的,接下来就要开始编译了,各位看官可要看好了哈,来点掌声鼓励嘛…..哈哈。

2、开始编译

首先是配置,这里有几个要注意的地方,命令如下:

./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4l-linux --disable-sdl --enable-static --enable-mad --enable-ossaudio --with-extraincdir=/usr/local/arm/3.3.2/lib/include --with-extralibdir=/usr/local/arm/3.3.2/lib/lib --prefix=/tmp/mplayer
--disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --disable-live 2>&1 | tee logfile

--host-cc=gcc是用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能少了或搞错了!《mplayer在s3c2410上的移植》(以下简称《移》文)一文介绍说遇到提示codec-cfg不能被执行出错时的解决方法是先将codec-cfg编译成i386平台的在再这里停下来时用i386的codec-cfg替代从而使编译继续。通过实验设置了这个参数就不用那么麻烦了,而且整个过程也显得比较幽雅了。

--cc=arm-linux-gcc这个没什么好介绍的。如果上面没有将arm-linux-gcc的位置加入到$PATH中的话,在这个指定绝对路径好了。

--target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去(据我观察是这样的^_@ );第三部分是系统平台。

--enable-static是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置—prefix了,另外也不用执行make install。

最后的一个2>&1 | tee logfile意思是将执行的情况在输出到屏幕的同时记录到logfile文件中,在控制台下编译比较有用。

剩余的几个参数没什么好介绍的了,记住--disable-mencoder要加上,mencoder在这里编译会有问题,还没有时间去研究呢。如果不清楚其它的参数的意思自己看configure文件吧,里面都有介绍。

配置完成了就该编译了。执行

make

这里在我的机器上大概花费了2-3分钟的时间。这样在当前目录下就得到可执行的mplayer文件。

(五)如何在arm上运行mplayer和音视频文件

首先配置nfs服务如下:

1)

配置过程:(默认NFS都已经进行安装,PC-Linux的IP为192.168.1.101)

1.#ntsysv运行后,选中nfs选项,取消[]iptables选项

2.运行安全级别和防火墙,进行安全级别设置。防火墙:Disable

3.运行服务器设置-NFS,添加NFS目录:/home/nfs;

开发板为:192.168.1.17;

2)

PC端:

1)#vi /etc/exports

输入/home/nfs 192.168.1.230(rw, sync, no_root_squash)

保存退出

2)#cd /etc/init.d

exportfs -rav

./nfs restart

3)开发板:

开机后进入根目录,

mount -t nfs -o nolock 192.168.1.245:/home/nfs /mnt/nfs

ls /mnt/nfs

一般就可以挂载了,也可以在开发板的/etc/init.d/rcS文件中加入上面的命令脚本,开机就可以自动挂载了

注意要在挂载前用Ping 命令查看是否网络相通,网段要求一致,退出要用

umount /mnt/nfs

4)使用mplayer如下

全屏

./mplayer -fs -zoom -x 240 -y 320 -cache 8192 -nosound *.avi-fs 居中

-zoom -x 1024 -y 768 全屏

-cache 8192 设置缓存大小

-nosound 取消音频

横屏

./mplayer -vf rotate=1,scale=240:320 -cache 8192 -nosound *.avi-fs

就能横屏适应屏幕播放了

循环

./mplayer -loop 5 *.avi-loop 5 循环播放5次,如果为0的话就不停的播放

播放列表

ls /home/play/music/*.mp3 > mp3.lst./mplayer -playerlist mp3.lst -shuffle -fs-playlist 指定播放列表

-shuffle 指定随机播放

安装包:MPlayer-1.0rc2.tar.bz2

交叉编译器:arm-linux-gcc-4.5.1

解压MPlayer-1.0rc2.tar.bz2 :

tar –xjvf MPlayer-1.0rc2.tar.bz2

进入解压文件 MPlayer-1.0rc2

进行configure 配置

./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-static --disable-win32dll --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib
--enable-mad --enable-libavcodec_a --disable-live --disable-ivtv --prefix=/usr/local/mplayer

在这里需要添加--disable-ivtv 不然会出现如下错误:

vo_ivtv.c:79: error: storage size of ’sd’ isn’t known

vo_ivtv.c:80: error: storage size of ’sd1′ isn’t known

vo_ivtv.c:84: error: ‘IVTV_STOP_FL_HIDE_FRAME’ undeclared (first use in this function)

vo_ivtv.c:84: error: (Each undeclared identifier is reported only once

vo_ivtv.c:84: error: for each function it appears in.)

vo_ivtv.c:87: error: ‘IVTV_IOC_STOP_DECODE’ undeclared (first use in this function)

vo_ivtv.c:97: error: ‘IVTV_IOC_START_DECODE’ undeclared (first use in this function)

vo_ivtv.c:80: warning: unused variable ’sd1′

vo_ivtv.c:79: warning: unused variable ’sd’

make[1]: *** [vo_ivtv.o] Error 1

注 :我把生成的mplayer安装到/usr/local/mplayer目录。

Configure配置完之后,在目录下会生成Makefile

再编译,输入如下命令

make

注:这里应该会出错,在libmpeg2/motion_comp_arm_s.S文件的最前面加上如下的内容:

#ifndef HAVE_PLD

.macro pld reg

.endm

#endif

再make时,应该不会出错了

· 安装时,输入如下命令

make install

注 :这里会提示,不能更改权限的错误,不用理它
· 手动更改一下生成的mplayer权限设置,命令如下:

chmod 755 /usr/local/mplayer/bin/mplayer

注:这里要有root权限才行
· 此时把/usr/local/mplayer/bin/目录下的mplayer拷贝到开发板文件系统的/bin目录下
· 开发板文件系统的/etc/目录下新建一个mplayer.conf文件,其内容如下:

vo=fbdev2

ao=oss

framedrop = yes

joystick = no

vf=rotate=2,scale=480:272
· 其中480:272为显示屏的尺寸,具体尺寸根据板子的显示屏大小来定。

移植好之后重启开发板系统,在终端中运行:mplayer 视频名 即可看到视频文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: