在开始移植Mplayer播放器之前,需要准备好Mplayer的源代码包。可以到http://www.mplayerhq.hu /design7/dload.html 下载。需要注意的是如果使用CVS的MPlayer 那么必须从FFmpeg的CVS树中提取libavcodec,因为FFmpeg 0.4.5不能用于MPlayer。FFmpeg是一组开源的解码器包,能够以兼容方式解码以: H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1 编码格式编码的视频流。它不仅能对其中一些进行编码, 同时提供比Win32解码器或Mayo工程的DivX4/5库更高的速度。它包含很多不错的解码 器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7 (WMV1),所以需 要用: cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg 来把libavcodec目录从FFmpeg的源代码里移到MPlayer的CVS树的根 部。 如果使用MPlayer发行版,在源码包里就有libavcodec,可以正常编译。本系统 下载的是MPlayer-1.0rc1.tar.bz2,可以直接进行编译。 首先对源代码包解压,进入MPlayer的主目录,进行configure配置: ./configure --cc=arm-linux-gcc --host-cc=gcc --enable-cross-compile --target=arm-armv4l-linux --enable-linux-devfs --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --enable-libavcodec --enable-liba52 --disable-libmpeg2 --enable-liba52 --disable-mp3lib --enable-static --disable-live 2>&1 | tee logfile --with-extraincdir=/opt/crosstool/arm-linux/arm-linux/include\ --with-extralibdir=/opt/crosstool/arm-linux/arm-linux/lib \ 下面对上述的配置进行简单说明: --cc=arm-linux-gcc设置交叉编译器 --host-cc=gcc是用来编译一些需要在host上执行的中间文件的,如codec -cfg,这一项非常重要。如果没有这一项,则遇到提示codec-cfg不能被执行出错时的解决方法是先将codec-cfg编译成i386平台的在再 这里停下来时用i386的codec-cfg替代从而使编译继续。 --enable-cross-compile 允许交叉编译。这项去掉也可以。 --enable-linux-devfs 对设备文件系统进行默认设置,如果没有加上这个选项,在pxa270平台上不能正常运行程序,不能显示。 --target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一 部分的arm是指arch,这里设定为arm;第二部分的 armv4l是指具体的版本,这里必须要跟libavcodec目录下的平台目录名一致,否则 为这个平台的优化代码没办法编译进去;第三部分是系统平台。这个主要是用在libavcodec的编译中,libavcodec下面支持很多平台,比如 i386,armv4l,ppc,sh,……,进入libavcodec的目录下就可以看见这些子目录,里面分别存放跟这些平台相关的优化汇编代码,本系 统所用的平台是xscale pxa270,跟arm是兼容的,所以设置为armv4l,当然在编译的过程中还可以设置为iwmmxt,因为270平台支 持无线mmx指令。 --enable-static是设定静态连接。 最后的一个2>&1 | tee logfile意思是将执行的情况在输出到屏幕的同时记录到logfile文件中。 下一步进行编译,编译器是博创提供的交叉编译工具, arm-linux-gcc 3.4.3版本。 键入命令make 程序编译通过,得到在arm平台上运行的可执行文件mplayer。 (jacky) |