您的位置:首页 > 其它

mplayer移植

2012-01-11 22:26 387 查看
 
成功移植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之前要先安装相应的解码库,这个问题有待解决.
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息