我使用的linux内核为2.6.14.1 MPlayer版本为MPlayer-1.0pre7try2.bz2
目前虽然已经添加了mad的mp3库,但播放声音文件回导致mplayer错误,放视频还得禁掉声音,怪了,madplay放mp3就很好
下面介绍下整个移植过程,也是参考了网上很多文章综合而来的
=================================================================
1)编译器最好选择3.3.2 ,我使用3.4.1会出现snow.c编译错误,找不到解决办法
解压3.3.2到/usr/local/arm/下
并export PATH=http://www.eda-china.com/usr/local/arm/3.3.2/bin:$PATH
echo $PATH看看3.3.2是不是在第一个?
2)播放mp3需要禁掉mp3lib 而使用madlib ,据说如果使用mp3lib会占用2000%的CPU,可能嘛?
安装libmad
(1).交叉编译libmad
下载libmad包(libmad-0.15.1b.tar.gz);
打开一个终端,进入libmad的目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=http://www.eda-china.com/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相关的库。
(2).在 configure mplayer的时候,要加上以下几个选项:
--enable-mad
--with-extraincdir=http://www.eda-china.com/usr/local/arm/3.3.2/lib/include(这个指明 mad.h 这个文件所在的路径)
--with-extralibdir=http://www.eda-china.com/usr/local/arm/3.3.2/lib/lib(这个指明libmad相关链接库所在的路径)
通过以上两个步骤,就可以把libmad交叉编译到 mplayer中。
3)解压MPlayer-1.0pre7try2.bz2,改名为mplayer ,方便而已
在此目录下配置
./configure --cc=arm-linux-gcc --target=arm-armv4-linux --enable-staTIc --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec --with-extraincdir=http://www.eda-china.com/usr/local/arm/3.3.2/arm-linux/sys-include/:/usr/local/arm/3.3.2/lib/include --with-extralibdir=http://www.eda-china.com/usr/local/arm/3.3.2/arm-linux/lib:/usr/local/arm/3.3.2/lib/lib --prefix=http://www.eda-china.com/tmp/mplayer --host-cc=gcc
4)make
当然会有错误
排错
错误(1)
./codec-cfg ./etc/codecs.conf > codecs.conf.h
./codec-cfg: 1: Syntax error: word unexpected (expecTIng ")")
网上有两种解决方法
A 说在configure时添加 --host-cc=gcc就可以解决
可是会出现其他库找不到的错误
猜想是指定了库--with-extralibdir导致的,所以还得采用笨笨的B方案
B 引用原话
“ 先把mplayer编译成x86的代码,于是重新配置,简单的 ./configure, make,然后将生成的codec-cfg改名为codec-cfg.x86。
然后再按跨平台方式配置,编译,等编译器出现错误停止编译时,将codec-cfg.x86该名为codec-cfg,再make,OK,编译就可以继续进行了。”
的确可行
错误(2)vobsub.c错误
这个错误可能在B方案时就会出现,
解决方法:修改vobsub.c 230行将getline函数名称改为mygetline
5)make完毕后拷贝目录下的mplayer文件到arm9linux文件系统运行就好了,我是拷贝在u盘里面运行的
>/mnt # mplayer
>MPlayer 1.0pre7try2-3.3.2 (C) 2000-2005 MPlayer Team
>CPU: ARM
>Usage: mplayer [opTIons] [url|path/]filename
6)播放mp3的问题
A不带参数运行,如下
/mnt # mplayer 1.mp3
MPlayer 1.0pre7try2-3.3.2 (C) 2000-2005 MPlayer Team
CPU: ARM
Failed to open /dev/rtc: No such file or directory (it should be readable by the user.)
Playing 1.mp3.
Audio file detected.
Clip info:
TItle: 高达一年战争秘闻录
Artist: Taja
Album:
Year:
Comment:
Genre: Other