mplayer移植

转自:http://bbs.gkong.com/archive.aspx?ID=286721


   编译器:arm-linux-gcc(4.3.2) 
   Pc平台:ubuntu 

   在移植之前有必要先说明一下几个问题: 
   Mplayer是自带的mp3lib库来进行mp3解码的,但是arm系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用mp3lib,这个是浮点运算库,arm上肯定跑不了。所以使用libmad库应该就没问题了,所以需要提前移植libmad库。 

(1)准备工作 
①下载库文件libmad-0.15.1b.tar.gz并解压到 /usr/local/libmad  
 ②下载Mplayer的tar包,官方下载地址http://www.mplayerhq.hu,进去后在ftp里面很多版本可以选,我选的最新的MPlayer-1.0rc4.tar.gz,大小12.3M。 
③准备编译前请先确定已安装交叉编译器arm-linux-gcc(4.3.2),并已经在终端设置好环境变量,做好这些就可以开始移植工作了。 


(2)编译libmad 
①先下载压缩包到本地,并解压libmad-0.15.1b.tar.gz到/usr/local/libmad: 
lcc@ubuntu: /usr/local/libmad # tar zxvf mysql-5.1.51.tar.gz 
②进入解压得到的源码目录中: 
     lcc@ubuntu: /usr/local/libmad # cd libmad-0.15.1b 
③运行configure,生成makefile: 
     lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b #./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/libmab/mad  
④修改makefile: 
   lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b #./gedit Makefile  
   找到里面的“--fforce-mem”,然后删除保存退出即可 
⑤直接开始运行make编译源代码: 
lcc@ubuntu: /usr/local/libmad/libmad-0.15.1b # make 

(3)交叉编译Mplayer 
①先下载压缩包到本地,并解压MPlayer-1.0rc4.tar.gz到/usr/local/mplayer: 
lcc@ubuntu: /usr/local/mplayer # tar zxvf MPlayer-1.0rc4.tar.gz 

②进入解压得到的源码目录中: 
lcc@ubuntu: /usr/local/mplayer # cd MPlayer-1.0rc4 

③运行configure,生成makefile: 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4#  
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/usr/local/Mplayer/mplayer 2>&1 | tee logfile 

这个就是我的配置内容,这里详细说明一下: 
--host-cc=gcc --cc=arm-linux-gcc --target=arm-linux   //这个不需要解释 
--enable-fbdev                           //打开framebuffer支持.ARM开发板必须的 
--enable-static                           //静态编译,编译成功后只需要将exe文件拷走即可以使用 
--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解码 
--prefix=/usr/local/Mplayer/mplayer 2>&1 | tee logfile  //不解释 

特别说明: 
   注意!!configure里面没有下面2句: 
  --enable-static --with-extraincdir=/usr/local/libmab/mad/include  
     --with-extralibdir=/usr/local /libmab/mad/lib  

   本来是还要有这2句话来指定我们编译的新的libmad的库的,但是由于新下载的mplayer源代码在配置的时候--with-extraincdir   –with-extralibdir提示没有此配置选项,因此需手动添加libmad库的支持,我的解决方法是将/ usr/local /libmab/mad/include下文件直接拷贝到mplayer源代码中,而对于其下面的库libmad.a,则先执行上面的“运行configure”一步,会生成config.mak文件,然后修改config.mak中在-lmad -L/usr/local /libmab/mad/lib,然后执行下一步即可。 
④修改Makefile. 
修改MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4#  
gedit  /libmepg2/motion_comp_s.S 
在最前加入: 
#ifndef HAVE_PLD  
.macro pld reg  
.endm  
#endif 
⑤直接开始运行make编译源代码: 
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make 
⑥Make完成后,执行makeinstall命令,但是我遇到了如下问题:  
lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make install 

       install -m 755 -s mplayer /home/hxy/MPlayer/ 
       MPlayer-1.0rc4/../mplayer/bin 
       strip: Unable to recognise the format of the input file  
      `/user/local/Mplayer/MPlayer-1.0rc4/../mplayer/bin/mplayer' 


解决方法:  
查资料看install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,查看Makefile可以发现-s是如下 
$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF)     $(BINDIR) 
   的INSTALLSTRIP设置的,它默认是-s,因此只要简单在Makefile的install部分前面加入: 
INSTALLSTRIP :=  #将其置为空即可 

⑥再次执行makeinstall命令,生成mplayer: 
   lcc@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make install 

附带一个只有图像没有声音的错误解决办法: 
mkdir -p /dev/sound  
ln -s /dev/dsp /dev/sound/  
原因:目标系统上有 /dev/dsp 音频设备文件,只是OSS音频驱动需要的是 /dev/sound/dsp 设备文件,这问题的简单解决方法是建一个符号链接,当然这两条命令可以写在系统的启动文件的适当位置,即修改系统的/etc/init.d/rcS文件。 

 

https://blog.youkuaiyun.com/qq_28234213/article/details/77386968



 

<think>我们正在将MPlayer移植到嵌入式开发板(如全志V3S)。根据引用[1]和引用[2],移植MPlayer的关键步骤包括交叉编译和优化。以下是详细步骤: ### 1. **准备工作** - **获取源码**:下载MPlayer源码(如MPlayer-1.5.tar.xz)[^1]: ```bash wget https://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.5.tar.xz tar xvf MPlayer-1.5.tar.xz cd MPlayer-1.5 ``` - **安装交叉编译工具链**:确保已安装ARM交叉编译器(如`arm-linux-gnueabihf-gcc`): ```bash sudo apt-get install gcc-arm-linux-gnueabihf ``` ### 2. **配置交叉编译环境** - 创建目标目录(用于存放编译结果): ```bash mkdir -p /path/to/target ``` - 配置MPlayer(指定交叉编译器、目标平台和安装路径)[^1]: ```bash ./configure \ --cc=arm-linux-gnueabihf-gcc \ --host-cc=gcc \ --target=arm-linux-gnueabihf \ --prefix=/path/to/target \ --disable-ossaudio \ --disable-sdl \ --disable-gui \ --disable-mencoder \ --disable-vf scale ``` **关键参数说明**: - `--cc`:指定交叉编译器。 - `--host-cc`:指定主机编译器(用于编译在主机上运行的工具)。 - `--target`:目标平台。 - `--prefix`:安装路径。 - `--disable-*`:禁用非必要功能以减少体积(如GUI、mencoder等)。 ### 3. **解决strip问题(引用[2])** - 默认情况下,`make install`会使用`-s`参数调用`strip`,但嵌入式环境需使用交叉编译的strip工具(`arm-linux-strip`)。 - **解决方法**:修改Makefile,将`INSTALLSTRIP`设置为空: ```bash sed -i 's/$(INSTALL) -s/$(INSTALL)/g' Makefile ``` 或手动移除Makefile中的`-s`参数(搜索`$(INSTALL) -s`并删除`-s`)[^2]。 ### 4. **编译与安装** ```bash make -j4 make install ``` - 编译后的可执行文件位于`/path/to/target/bin/mplayer`。 ### 5. **部署到开发板** - 将`mplayer`可执行文件复制到开发板的`/usr/bin`目录。 - 测试播放: ```bash mplayer -vo fbdev2 -zoom -x 480 -y 272 test.mp4 ``` **参数说明**: - `-vo fbdev2`:使用帧缓冲(Framebuffer)作为视频输出(适用于无X11的嵌入式环境)。 - `-zoom -x 480 -y 272`:适配屏幕分辨率(如V3S常见480x272)。 ### 6. **优化与问题解决** - **编解码器支持**:若需额外编解码器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值