主机:ubuntu14.04
交叉编译工具链:arm-4.2.2-eabi(其他的也可以,只是在下面配置的时候替换成你的交叉编译工具即可)
在Linux平台的嵌入式设备上,可以使用mplayer播放音视频文件Mplayer,因为mplayer对音频解码默认使用自身的mp3lib,此库支持浮点运算,而armcpu没有支持浮点运算,所以需移植libmad。
第一步:网上下载libmad-0.15.1b.tar.gz和MPlayer-1.0rc2.rar两个文件,并解压;
http://download.chinaunix.net/download.php?id=11891&ResourceID=5910 ---(libmad-0.15.1b.tar.gz)
http://www.mplayerhq.hu/MPlayer/releases/ ---(MPlayer-1.0rc2.tar.bz2)
第二步:进入libmad-0.15.1b:
(1)配置,生成Makefile:(--prefix=/home/mplayer/libmad 为指定最终生成的库文件的安装路径,CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc为指定交叉编译工具路径)
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/home/mplayer/libmad CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc
(2)编译:
make
(3)安装:
make install
这一步的目的是在/home/mplayer下生成libmad目录,在libmad目录下生成include和lib两个文件夹,对应文件夹中生成mad.h和libmad.a和libmad.la文件,这三个文件供mplayer编译用。
------------------------------------------------------------------------------------------------------------------------------------第三步:进入MPlayer-1.0rc2:
(1)配置,生成Makefile:(extraincdir=/home/mplayer/libmad/include和--with-extralibdir=/home/mplayer/libmad/lib指定了上一步安装库文件在路径)
./configure --cc=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc --target=arm-linux --enable-static --prefix=/home/mplayer/player --disable-win32dll --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a --language=zh_CN --disable-armv5te --disable-armv6 --with-extraincdir=/home/mplayer/libmad/include --with-extralibdir=/home/mplayer/libmad/lib --host-cc=gcc --enable-ossaudio
-------配置选项解释,详细可以目录下使用 ./configure --help查看
-----host-cc=gcc --cc=arm-linux-gcc --target=arm-linux //这个不需要解释
--enable-fbdev //打开framebuffer支持.ARM开发板必须的
--enable-static //静态编译,编译成功后只需要将.bin文件拷走即可以使用
--disable-dvdread --disable-dvdnav --disable-dvdread-internal //全部与DVD相关,无视即可
--disable-libdvdcss-internal //这个不加低版本mplayer也会出错
--disable-live //禁止流媒体,我们用不到
--disable-mp3lib --enable-mad //关闭默认的MP3解码库,使用我们刚才编译的libmad
--disable-win32dll //禁用win32动态链接库支持
--disable-mencoder //交叉编译mencoder会有问题,而且arm上不需要这个功能
--disable-ivtv //如果不加会出现ivtv文件产生的错误
--enable-libavcodec_a //启用静态的libavcodec解码
--enable-ossaudio //调用开发板上的oss格式的音频文件
--language //中文支持
(2)编译:
make
(1)errro:armv4l/dsputil_arm_s.S:79: Error: selected processor does not support `pld [r1]'
解决方法:进入 vi libavcodec/armv4l/dsputil_arm_s.S ,在最前面加上
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
保存,退出
(2)errro:motion_comp_arm_s.S:28: Error: selected processor does not support `pld [r1]'
解决方法:进入vi libmpeg2/motion_comp_arm_s.S,在最前面加上
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
保存,退出
make最后当前目录下会生成mplayer.
第四步:将生成的mplayer拷到SD卡中,同时拷备视频文件如*.avi,音频文件如*.mp3,启动机器,挂载SD卡,使用如下命令播放音视频:
./mplayer *.avi
./mplayer *.mp3
如果卡可以使用下面命令:./mplayer –fs –ac mad *.avi
这里-fs表示全屏播放,即电影显示在正中央,周围填充黑色。-acmad表示先尝试使用libmad,其他解码器作为后备。
---------------------------------------------------其他版本可以借鉴参考---------------------------------------------------------
华清远见的技术博客:http://www.embedu.org/Column/Column356.htm
csdn: http://blog.csdn.net/edai9508/article/details/6589126
rc4:-lmad 在config.mak 指定库文件路径即可,
安装:修改Makefile , INSTALLSRIP :=#
在 make install 即可。