mplayer移植相关记录

Mplayer移植(目标板mini2440)

 

到官网下载最新版本源码MPlayer-1.1.1.tar.xz(http://www.mplayerhq.hu/MPlayer/releases/)skin代码库Abyss-1.7.tar.bz2(http://www.mplayerhq.hu/MPlayer/skins/)

解码库all-20110131.tar.bz2(http://www.mplayerhq.hu/MPlayer/releases/codecs/)

 

mkdir /usr/lib/codecs

tar jxvf all-20110131.tar.bz2

mv all-20110131/* /usr/lib/codecs

 

安装mplayer

tar jxvf MPlayer-1.1.1.tar.xz

cd MPlayer-1.1.1

解压xz文件时发现没有安装相应的包,下载xz-4.999.9beta.tar.bz2

(http://tukaani.org/xz/xz-4.999.9beta.tar.bz2)安装

xz –d MPlayer-1.1.1.tar.xz

再用普通的命令解压即可

tar xvf MPlayer-1.1.1.tar

配置Makefile相关命令(注:编译时的配置参数忘了以下是另外的作为记录,可以用命令./configure –help来查看相关参数)

./configure --prefix=/tmp/mplayer --cc=arm-linux-gcc --target=arm-linux --with-codecsdir=/usr/local/lib/codecs --enable-static--disable-win32dll --disable-dvdread --disable-dvdread-internal --disable-dvdnav--disable-libdvdcss-internal --disable-mencoder --disable-mp3lib --disable-armv5te--disable-armv6 --enable-fbdev --enable-mad --enable-libavcodec_mpegaudio_hp --disable-iconv--enable-linux-devfs --disable-ivtv --language=zh_CN --enable-cross-compile --enable-real--enable-ossaudio --host-cc=gcc --disable-live 2>&1|tee logfile

参数解释:

   --prefix        mplayer安装路径,make install 后就可以在本目录下找到可执行程序mplayer

   --cc              交叉编译工具,如果没添加到环境变量,就要指定完整路径

   --enable-static            设定静态连接

   --disable-win32dll       禁用win32动态链接库支持。在pre版本中该参数为

   --disable-dvdread       禁用libdvdread.

   --enable-fbdev             支持fbdev,这个一定要选上。

   --disable-mp3lib和 --enable-mad

               arm系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用mp3lib,这个是浮点运算库,在arm上肯定跑不了,使用ffmp3或者libmad(需要外部库libmad支持)应该就没问题了。所以这里需要禁止掉mencoder和使能libmad。

--disable-mencoder            禁止编码功能

   --disable-live                         禁止live 555流媒体。

   --enable-libavcodec_a      启用静态的libavcodec解码。在pre版本中该参数为--enable-libavcodec。

   --disable-armv5te--disable-armv6             禁用armv5te、armv6指令扩展。

   --with-extraincdir和-with-extralibdir        指定libmad和mad.h的路径

 

配置时出现错误:

Unknown parameter:--with-codecsdir=/usr/local/lib/codecs/

查看帮助         ./configure –help

--with-codecsdir这个命令改为了--codecsdir=/usr/local/lib/codecs/

再次尝试出现如下错误:

Error: yasm not found, use --yasm='' if youreally want to compile without

下载安装yasm 并加上配置参数--yasm=/usr/local/bin/yasm/bin

 

配置完后make编译遇到以下错误

implicit declaration of function'deflateBound'

原因是zlib低版本的原因下载新版的zlib-1.2.8.tar.gz安装

再次遇到问题,出现不支持pld [r1]指令的问题

在MPlayer-1.1.1/libmpeg2/motion_comp_arm_s.S文件的开始处写入

#ifndef HAVE_PLD

.macro pld reg

.endm

#endif

(这段代码意思是定义一个空的ARM汇编宏 pld,这样当代码出现pld指令,就变成一条空指令)

或把文件里面的指令pld [r1]全部替换成空格

然后

make

make install

在目录下可以找到生成的mplayer

 

 


 

Mplayer工作于slave模式的相关控制命令

在Mplayer源码中的slave.txt中有控制命令的详解,这里主要记录播放器所用到的几个简单命令

用linux C编写的进程可以通过命名管道来与Mplayer进行通讯

         #define     FIFO_NAME     “/tmp/my_fifo”

mkfifo(FIFO_NAME,0777);

pipe_fd =open(FIFO_NAME, O_RDWR);  //这里打开如果以写方式打开线程会阻塞在这里,同时打开读和写就不会阻塞

execlp("/mp3/mplayer","","-ac","mad","-slave","-quiet","-input","file=/tmp/my_fifo",my_song,NULL);//以slave模式打开mplayer

write(pipe_fd,"pause\n",strlen("pause\n"));//暂停或取消暂停命令kill(pid,SIGCONT); kill(pid,SIGSTOP);

write(pipe_fd,"quit\n",strlen("quit\n")) ;        //退出命令

在暂停和取消暂停中要用到两个相关信号,SIGCONT和SIGSTOP

SIGCONT控制进程继续运行

SIGSTOP   控制进程暂停运行

你可能感兴趣的:(linux,移植)