(一)移植准备工作

    下载代码:A)下载 libmad 包( libmad-0.15.1b.tar.gz)

             B)MPlayer-1.0pre7try2.bz2

             C)交叉编译器使用 3.3.2 

    运行环境:QQ2440+RedHatLinux9.0+arm-linux-gcc-3.3.2

(二)配置交叉编译器:可以直接在网上下载编译好的交叉编译环境,比如友善提供的交叉编译器

(三)编译libmad库文件如下步骤:

下载 libmad 包( libmad-0.15.1b.tar.gz );

解压tar -xzvf libmad-0.15.1b.tar.gz
进入libmad 的目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/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相关的库。

(四)编译mplayer(MPlayer-1.0pre7try2.bz2)这里按照网上流行的<移植>一文操作

MPlayer-1.0pre7try2.tar.bz2拷贝到工作目录(比如/work/pmp/)

 

cp ./MPlayer-1.0pre7try2.tar.bz2 /work/pmp/

cd /work/pmp/

tar jxvf MPlayer-1.0pre7try2.tar.bz2

mv MPlayer-1.0pre7try2 MPlayer (这里只是改个名字,原来的实在太长了)

 

上面应该不会有什么问题的,接下来就要开始编译了,各位看官可要看好了哈,来点掌声鼓励嘛…..哈哈。

 

2、开始编译

首先是配置,这里有几个要注意的地方,命令如下:

 

./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4l-linux --disable-sdl --enable-static --enable-mad --enable-ossaudio --with-extraincdir=/usr/local/arm/3.3.2/lib/include --with-extralibdir=/usr/local/arm/3.3.2/lib/lib --prefix=/tmp/mplayer --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --disable-live 2>&1 | tee logfile

 

--host-cc=gcc是用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能少了或搞错了!《mplayers3c2410上的移植》(以下简称《移》文)一文介绍说遇到提示codec-cfg不能被执行出错时的解决方法是先将codec-cfg编译成i386平台的在再这里停下来时用i386codec-cfg替代从而使编译继续。通过实验设置了这个参数就不用那么麻烦了,而且整个过程也显得比较幽雅了。

 

--cc=arm-linux-gcc这个没什么好介绍的。如果上面没有将arm-linux-gcc的位置加入到$PATH中的话,在这个指定绝对路径好了。

 

--target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去(据我观察是这样的^_@ );第三部分是系统平台。

 

--enable-static是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置—prefix了,另外也不用执行make install

 

最后的一个2>&1 | tee logfile意思是将执行的情况在输出到屏幕的同时记录到logfile文件中,在控制台下编译比较有用。

 

剩余的几个参数没什么好介绍的了,记住--disable-mencoder要加上,mencoder在这里编译会有问题,还没有时间去研究呢。如果不清楚其它的参数的意思自己看configure文件吧,里面都有介绍。

 

配置完成了就该编译了。执行

 

make

 

这里在我的机器上大概花费了2-3分钟的时间。这样在当前目录下就得到可执行的mplayer文件。

(五)如何在arm上运行mplayer和音视频文件

   首先配置nfs服务如下:

   1)

配置过程:(默认NFS都已经进行安装,PC-Linux的IP为192.168.1.101)

1.#ntsysv运行后,选中nfs选项,取消[]iptables选项

2.运行安全级别和防火墙,进行安全级别设置。防火墙:Disable

3.运行服务器设置-NFS,添加NFS目录:/home/nfs;

开发板为:192.168.1.17;

2)

PC端:

1)#vi /etc/exports

  输入/home/nfs 192.168.1.230(rw, sync, no_root_squash)

  保存退出

2)#cd /etc/init.d

  exportfs -rav

  ./nfs restart

3)开发板:

  开机后进入根目录,

  mount -t nfs -o nolock 192.168.1.245:/home/nfs /mnt/nfs

  ls /mnt/nfs

  一般就可以挂载了,也可以在开发板的/etc/init.d/rcS文件中加入上面的命令脚本,开机就可以自动挂载了

注意要在挂载前用Ping 命令查看是否网络相通,网段要求一致,退出要用

  umount /mnt/nfs

4)使用mplayer如下

全屏
./mplayer -fs -zoom -x 240 -y 320 -cache 8192 -nosound *.avi-fs 居中
-zoom -x 1024 -y 768 全屏
-cache 8192 设置缓存大小
-nosound 取消音频

横屏

./mplayer -vf rotate=1,scale=240:320 -cache 8192 -nosound *.avi-fs

就能横屏适应屏幕播放了
  

 循环
./mplayer -loop 5 *.avi-loop 5 循环播放5次,如果为0的话就不停的播放
   播放列表
ls /home/play/music/*.mp3 > mp3.lst./mplayer -playerlist mp3.lst -shuffle -fs-playlist 指定播放列表
-shuffle 指定随机播放

 

 

安装包:MPlayer-1.0rc2.tar.bz2

交叉编译器:arm-linux-gcc-4.5.1

 

解压MPlayer-1.0rc2.tar.bz2

tar –xjvf MPlayer-1.0rc2.tar.bz2

进入解压文件 MPlayer-1.0rc2

进行configure 配置

./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux  --enable-static --disable-win32dll --disable-dvdread --disable-dvdread-internal --disable-dvdnav --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a --disable-live --disable-ivtv --prefix=/usr/local/mplayer

 

在这里需要添加--disable-ivtv 不然会出现如下错误:

vo_ivtv.c:79: error: storage size of ’sd’ isn’t known

vo_ivtv.c:80: error: storage size of sd1 isnt known

vo_ivtv.c:84: error: ‘IVTV_STOP_FL_HIDE_FRAME’ undeclared (first use in this function)

vo_ivtv.c:84: error: (Each undeclared identifier is reported only once

vo_ivtv.c:84: error: for each function it appears in.)

vo_ivtv.c:87: error: ‘IVTV_IOC_STOP_DECODE’ undeclared (first use in this function)

vo_ivtv.c:97: error: ‘IVTV_IOC_START_DECODE’ undeclared (first use in this function)

vo_ivtv.c:80: warning: unused variable sd1

vo_ivtv.c:79: warning: unused variable ’sd’

make[1]: *** [vo_ivtv.o] Error 1

 

:我把生成的mplayer安装到/usr/local/mplayer目录。

Configure配置完之后,在目录下会生成Makefile

再编译,输入如下命令
make
注:这里应该会出错,在libmpeg2/motion_comp_arm_s.S文件的最前面加上如下的内容:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif

make时,应该不会出错了

·            安装时,输入如下命令
make install
:这里会提示,不能更改权限的错误,不用理它

·            手动更改一下生成的mplayer权限设置,命令如下:
chmod 755 /usr/local/mplayer/bin/mplayer
注:这里要有root权限才行

·            此时把/usr/local/mplayer/bin/目录下的mplayer拷贝到开发板文件系统的/bin目录下

·            开发板文件系统的/etc/目录下新建一个mplayer.conf文件,其内容如下:
vo=fbdev2
ao=oss
framedrop = yes
joystick = no
vf=rotate=2,scale=480:272

·            其中480:272为显示屏的尺寸,具体尺寸根据板子的显示屏大小来定。

 

移植好之后重启开发板系统,在终端中运行:mplayer 视频名 即可看到视频文件

Logo

更多推荐