mplayer移植

 

成功移植mplayer到mini2440  

2011-05-07 22:09:15|  分类: 默认分类 |  标签: |字号大中小 订阅

主机Linux系统:fedora 9

主机GCC编译器:gcc 版本 4.3.0
开发板:mini2440
arm-linux-gcc交叉编译器:arm-linux-gcc-4.4.3

下载: MPlayer-1.0rc2.tar.bz2   http://download.csdn.net/source/780629

            arm-linux-gcc-4.4.3        http://ishare.iask.sina.com.cn/f/13836544.html

            libmad-0.15.1b.tar.gz     http://sourceforge.net/project/showfiles.php?group_id=12349

          
1.编译libmad库
前面提到了使用libmad库来替代mp3lib库来改善mplayer在ARM处理器上播放音频的性能,那么在编译mplayer之前得编译好libmad库。
下载 libmad 包(libmad-0.15.1b.tar.gz) http://sourceforge.net/project/showfiles.php?group_id=12349

将其解压后,进入 libmad 的目录,输入配置命令:

./configure --enable-fpm=arm   --host=arm-linux   --disable-shared      --disable-debugging    --prefix=/opt/toolchains/arm920t-eabi/lib CC=arm-linux-gcc 

对于 --cc=arm-linux-gcc 选项要保证 arm-linux-gcc 的路径已经有 export 过,否则给出完整路径。
ps:其实意思就是事先已经搭建好交叉编译环境。

 

然后再make

出现错误  error: unrecognized command line option “-fforce-mem”
 


解决方式是: 从libmad文件夹中的configure.ac中将“-fforce-mem”选项去掉,然后再运行  make 。 原因是gcc 3.4 或者更高版本,已经将其去除了,所以会出现上面的错误!


gedit configure.ac 替换“-fforce-mem”为“”空格。

make

make install

2、进入mplayer-1.0rc2.tar.bz2所在目录

例如:cd /tmp   (我把软件包放在此目录)

输入: tar jxvf MPlayer-1.0rc2.tar.bz2
输入:cd MPlayer-1.0rc2
输入:./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm  --enable-static --disable-win32dll --disable-ivtv --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --with-extraincdir=/opt/toolchains/arm920t-eabi/lib/include  --with-extralibdir=/opt/toolchains/arm920t-eabi/lib/lib  --enable-libavcodec_a --language=en  --disable-live 2>&1 | tee logfile

 

可能出现错误 

Checking   for   inttypes.h   (required)   ...   no
Checking   for   bitypes.h   (inttypes.h   predecessor)   ...
Error:   Cannot   find   header   either   inttypes.h   or   bitypes.h

解决方法 :  到/usr/include/   拷贝inttypes.h 到当前目录下

# cp /usr/include/inttypes.h  .(此有一点,表示复制到当前目录)

#./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm  --enable-static --disable-win32dll --disable-ivtv --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad  --with-extraincdir=/opt/toolchains/arm920t-eabi/lib/include  --with-extralibdir=/opt/toolchains/arm920t-eabi/lib/lib  --enable-libavcodec_a --language=en  --disable-live 2>&1 | tee logfile

 


3、编译
执行

make

命令编译。
下面参考http://hi.baidu.com/linuxcfan/blog/item/d448a758f2906e232934f04f.html
执行过程中会出现类似如下错误提示:

armv4l/dsputil_arm_s.S:79:error:selected processor does not support 'pld [r1]'  ......

原因分析:armv5以下的版本不支持pld指令(mini2440的arm9属于armv4)
解决方法一:替换MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件和MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S文件中的pld [r1]为空即可!
ps:为什么要修改两个文件呢?因为只修改错误提示中的那个文件后继续编译则会继续提示MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S文件中同样的错误^_^
修改方法:使用gedit分别打开dsputil_arm_s.S、motion_comp_arm_s.S这两个汇编源文件,将

pld[r1]替换成空格。

gedit libmpeg2/motion_comp_arm_s.S 查找 pld [r1] 替换成空格  

gedit libavcodec/armv4l/dsputil_arm_s.S 查找 pld [r1] 替换成空格

然后再make

再 make install

 

 

出现问题:strip: Unable to recognise the format of the input file

查资料看install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,查看Makefile可以发现-s是如下

$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF)     $(BINDIR)

的INSTALLSTRIP设置的,它默认是-s,因此只要简单去掉即可。

$(INSTALL) -m 755  mplayer$(EXESUF)     $(BINDIR)

 

执行命令:gedit Makefile,将$(INSTALLSTRIP) mplayer$(EXESUF)替换成mplayer$(EXESUF)

再make install

 


 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zyq1228/archive/2011/04/19/6334678.aspx
得到mplayer,下载到mini2440开发板/usr/bin目录
在开发板执行
mplayer test.avi -framedrop -quiet -vf rotate=1,scale=240:320
成功啦!这次终于有声音了!MP3也能播哦

但仍存在问题,播放AVI文件时有图像和声音,但播放RM或是RMVB文件时只有声音没有图像,可能是在安装mplayer之前要先安装相应的解码库,这个问题有待解决.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值