编者按:做个项目需要用到mplayer播放器,现做一个Mplayer移植的记录
参考资料:
Mplayer 移植(华清远见):http://emb.hqyj.com/Column/Column356.htm
嵌入式 Mplayer的移植、使用(Liang):https://blog.csdn.net/nanfeibuyi/article/details/82657631
MINI2440下Mplayer移植(百度文库):https://wenku.baidu.com/view/9106e4505022aaea988f0f47.html
1. 下载软件包
下载MPlayer:MPlayer-1.0rc2.tar.bz2:http://www.mplayerhq.hu/MPlayer/releases/
下载解码库libmad-0.15.0b.tar.gz:http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libmad.html
2. 配置安装libmad
(如果不先配置安装libmad,则在make mplayer时出现找不到mad.h 错误)
首先解压压缩包
tar -xzvf libmad-0.15.1b.tar.gz
(1)创建目录:/opt/myplayerarm/lib 用来存放生成的头文件和库文件
(2)检查、配置命令
./configure --enable-fpm=arm --host=arm-none-linux-gnueabi --disable-shared --disable-debugging --prefix=/opt/mplayerarm/lib/ CC=arm-none-linux-gnueabi-gcc
./configure --enable-fpm=arm --host=arm-none-linux-gnueabi --disable-shared --disable-debugging --prefix=/opt/mplayerarm/lib/ CC=arm-none-linux-gnueabi-gcc
参数解析:
–enable-fpm=arm
–host=arm-none-linux-gnueabi
–disable-shared
–disable-debugging
–prefix=/home/linux/libmad(make install 安装路径,选择自己想要的路径即可)
CC=arm-none-linux-gnueabi-gcc(4.3.2的交叉编译工具链)
//可以使用arm-linux-gcc -v
查看自己的交叉编译环境。如果没有请转到 MINI2440下Mplayer移植(百度文库)。target后面的就是要写的交叉编译工具链
(3) 编译
make
注意如果出现error:unrecognized command line option "-fforce-mem"错误,需要修改makefile,去掉–fforce-mem标志
vim Makefile
修改Makefile 去掉129行 -fforce-mem 标志,因为arm-eabi编译器都不支持这个选项 。
(4) 生成相应的头文件、库文件
make install
此时会在/home/linux目录下生成include目录和lib目录。
其中liclude目录下有文件 mad.h
lib 目录有文件 libmad.a libmad.la
3. 编译生成mplayer
首先是解压压缩包
tar -xjvf MPlayer-1.0rc2.tar.bz2
(1)检查、 配置、生成对应的Makefile
./configure --prefix=/opt/mplayerarm/lib --cc=arm-none-linux-gnueabi-gcc --disable-gui --target=arm-linux --host-cc=gcc --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-libdvdcss-internal --disable-x11 --enable-cross-compile --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static
--host-cc=gcc # C compiler for tools needed while building [gcc]
--cc=arm-none-linux-gnueabi-gcc #C compiler to build MPlayer [gcc]
--target=arm-linux #target platform (i386-linux, arm-linux, etc)
--enable-static #build a statically linked binary
--enable-ossaudio #enable OSS audio output [autodetect]
--prefix=/tmp/mplayer-rc2 #prefix directory for installation [/usr/local]
#指定链接库的路径,修改成刚刚libmad生成的库文件存放的路径即可
--disable-win32dll # disable Win32 DLL support [enabled]
--disable-dvdread #disable libdvdread [autodetect]
--enable-fbdev #enable FBDev video output [autodetect]
--disable-mencoder #disable MEncoder (A/V encoder) compilation [enable] 使能编码器编辑
--disable-live #disable LIVE555 Streaming Media [autodetect] 让Mpalyer不支持流媒体协议
--disable-mp3lib # disable builtin mp3lib [enabled]
--enable-mad #disable libmad (MPEG audio) support [autodetect]
--enable-libavcodec_a #disable static libavcodec [autodetect]
--disable-armv5te #disable DSP extensions (ARM) [autodetect]
--disable-armv6 #disable ARMv6 (ARM) [autodetect]
(2)编译
make -j4 # 其中: -j4 参数表示使用4条线程编译
这里编译会花的时间比较长
过程中出现错误
armv4l/dsputil_arm_s.S:79:error:selected processor does not support 'pld[r1]'
在MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S
和 MPlayer-1.0rc2/libavcodec/armv4l/dsputil_arm_s.S
的文件最开始中加入
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
具体原因请参考:【已解决】armv4l/dsputil_arm_s.S:79:error:selected
编译完成后得到mplayer可执行文件
3. 拷贝到开发板的/bin目录,设置可执行权限
使用ftp进行文件传输
在打开开发板,在主机中利用ftp登陆开发板。
ftp 10.0.0.10
用户名和密码都是plg
put mplayer
上传后的文件在plg用户的家目录,将文件复制到/bin文件夹下。
设置可执行权限:chmod 777 /bin/mplayer。
直接在命令行运行:mplayer xxx.avi (支持多种格式)