Linux下mplayer的移植

实验准备:libmad-0.15.1b.tar.gz,MPlayer-1.0rc4.tar

下载地址如下:https://pan.baidu.com/s/1RSc-NcsgvYQymbCj5oNd_w

MP3的移植过程:

一.将开发板与宿主机连接

1.usb转串口驱动下载。将usb-串口线连接到pc机,利用驱动精灵等安装驱动。驱动安装完成后打开设备管理器,查看该端口的编号(一般为COM3)。如果驱动安装成功则会显示Prolific USB-to-Serial Comm Port(COM3)Prolific USB-to-Serial Comm Port(COM3),否则则会出现黄色感叹号。接下来右键点击该设备的属性,点击端口设置,设置位/秒:115200,数据位:8,奇偶校验:无,停止位:1,流控制:无。

2.利用X-shell连接开发板。在pc机的Windows环境下打开X-shell,点击新建,创建新的连接,使得X-shell进入开发板的控制界面。新建连接名设置为开发板,协议改为SERIAL,点击SERIAL,将串口连接设置和开发板一样。进入X-shell,重新启动开发板,则进入开发板的系统。

二.进行nfs挂载

1.进入X-shell,在开发板终端输入ifconfig查看开发板相关信息。并用ifconfig将开发板的ip地址设置为和宿主机处于同一网段,确保nfs能够成功挂载。假如宿主机的ip地址为10.215.45.26,那么利用ifconfig eth0 10.215.45.66 netmask 255.255.0.0(设置开发板的ip地址)将开发板的ip地址和宿主机保持同一网段(前三位数相同),进入开发板终端输入ping 10.215.45.26,进入宿主机输入ping 10.215.45.66检查网络是否联通。

2.网络联通后进行nfs服务的配置,即在宿主机终端输入vim /etc/exports,输入/nfsroot 192.168.0.1 (rw sync )退出保存。设置成功后输入/etc/init.d/iptables stop,关闭宿主机的防火墙;输入setenforce 0关闭SElinux服务,输入/etc/init.d/nfs restart重启nfs服务。在开发板终端下输入mountnfs 10.215.45.26:/nfsroot /mnt/nfs将开发板的/mnt/nfs/目录和宿主机的/nfsroot目录挂载。如果输入之后没有回显信息,则挂载成功。进入开发板的/mnt/nfs目录,查看是否和宿主机的/nfsroot目录下的文件是否相同并创建mp3文件夹用以此次实验。

三.移植limad库

libmad是一个开源mp3解码库 ,对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer、xmms等都是使用这个开源库进行解码的;如果要设计mp3播放器而又不想研究mp3解码算法的话, libmad是 个不错的选择。

MAD (libmad) 是一个 开源的高精度MPEG频解码库,支持MPEG-1 (Layer I, Layer II和Layerll (也就是MP3)。LIBMAD 提供24-bit的PCM输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用libmad提供的一系列API,就可以非常简单地实现MP3数据解码工作。在libmad的源代码文件目录下的mad.h文件中,可以看到绝大部分该库的数据结构和API等。

接下来,我们利用VMware下的共享文件夹将Windows下载的libmad-0.15.1b.tar.gz复制到宿主机,然后其存放路径。

输入cp libmad-0.15.1b.tar.gz /nfsroot/mp3,将压缩包复制到/nfsroot/mp3。

进入/nfsroot/mp3目录,输入tar xvzf libmad-0.15.1b.tar.gz将压缩包解压到当前文件夹。解压成功后产生libmad-0.15.1b文件夹,输入cd /libmad-0.15.1b进入该文件夹。

运行configure进行配置生成Makefile文件。

输入./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/nfsroot/mp3/yaffs

配置之后该文件夹下生成了Makefile文件。

输入vim Makefile对Makefile文件进行修改。

进入Makefile之后,进入末行模式,输入:g/-fforce-mem,找到这句话之后将其删除,否则将提示unrecognized command line option "-fforce-mem"。因为gcc版本不同,高版本的gcc不再支持该语句,因此将其删除。

之后进行编译安装。

make

make install

编译安装之后,将会在—perfix指定的目录下产生yaffs目录,目录下包含两个子目录,include和lib。其中,lib放置的是编译mplayer会用到的库函数,include下则是编译用到的头文件。

 

四.Mplayer的移植

同理将MPlayer-1.0rc4.tar复制到/nfsroot/mp3并解压。

输入tar xvzf MPlayer-1.0rc4.tar,成功之后将会产生Mplayer-1.0rc4目录。

进入MPlayer-1.0rc4目录,运行configure进行配置生成Makefile文件。

输入./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=/nfsroot/mp3/yaffs 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之后会产生一些文件及目录,我们需要对其进行配置。

刚才编译libmad库产生的文件是必须的,因此我们需要在此时将其添加到编译文件中,具体操作如下:

输入vim config.mak,进入末行模式,输入:g/-lmad,找到该语句之后在后面加上

-L/nfsroot/mp3/yaffs/lib,保存退出。

 

修改MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件

vim libmpeg2/motion_comp_arm_s.S

在最前面加上

#ifndef HAVE_PLD 

.macro pld reg 

.endm 

#endif

退出保存。

 

修改Makefile文件

vim Makefile

在末行模式输入:g/INSTALLSTRIP,找到该语句之后在922行,也就是

install:$(INSTALL_TARGETS-yes)的前面加上INSTALLSTRIP := #

 

因为install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,查看Makefile可以发现-s是如下

$(INSTALL) -m 755 $(INSTALLSTRIP) mplayer$(EXESUF)     $(BINDIR)

的INSTALLSTRIP设置的,它默认是-s,因此只要简单在Makefile的install部分前面加入:

INSTALLSTRIP :=  #将其置为空即可

 

接下来执行makemake install

执行成功之后,会在/nfsroot/mp3/yaffs下生成四个目录,其中bin目录下的mplayer就是生成的可执行文件。复制一个.mp3文件到该目录下(我将文件名改为了1.mp3)。

进入开发板终端,插上耳机,进入到该目录下,终端输入./mplayer 1.mp3,能够听到声音。友情提示,此时开发板的音乐为最大声音,请做好准备。



 

猜你喜欢

转载自blog.csdn.net/Wangguang_/article/details/85217674
今日推荐