Mplayer移植到Arm开发板
<br />(一)移植准备工作<br /> 下载代码:A)下载 libmad 包( libmad-0.15.1b.tar.gz)<br /> B)MPlayer-1.0pre7try2.bz2 <br /> C)交叉编译器使用 3.3.2 <br /> 运行环境:QQ2440+RedHatLinux9.0+arm-linux-gcc-3.
(一)移植准备工作
下载代码: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 视频名 即可看到视频文件
更多推荐
所有评论(0)