mplayer解码库的移植

xiaoxiao2021-02-28  56

---------linux系统的多媒体处理--------- 音频解码库: madplay    视屏解码: mplayer   音频录制: alsa -----------------------------------开源免费------------------------------------- 1.解压源码 把所有的源码包复制到/home/gec中家目录  cp  *    /home/gec     PS:(防止在共享目录中解压源码包,因为共享目录不支持连接文件) 解压源码包: tar  -xjvf  MPlayer-1.0rc2.tar.bz2 tar  -xzvf  libmad-0.15.1b.tar.gz  解压完成后会看到两个解压文件夹 2.准备交叉开发工具链 配置方法:可查看交叉开发笔记  需要作的软链接: sudo ln -s arm-none-linux-gnueabi-gcc     arm-linux-gcc sudo ln -s arm-none-linux-gnueabi-ar      arm-linux-ar sudo ln -s arm-none-linux-gnueabi-ranlib  arm-linux-ranlib sudo ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy sudo ln -s arm-none-linux-gnueabi-g++     arm-linux-g++ sudo ln -s arm-none-linux-gnueabi-strip   arm-linux-strip sudo ln -s arm-none-linux-gnueabi-cpp     arm-linux-cpp sudo ln -s arm-none-linux-gnueabi-size    arm-linux-size sudo ln -s arm-none-linux-gnueabi-ld      arm-linux-ld 3.交叉编译libmad解码库介绍(这一步不需要进行操作) ./configure --enable-fpm=arm  //芯片平台               --host=arm-linux  //使用的工具链平台             --disable-shared  //生成库的属性  动态库           --disable-debugging //关闭错误信息            --prefix=/usr/local/arm/arm-2009q3/lib  //make install 后库的安装路径(必须要跟工具链的库一致)            CC=/usr/local/arm/arm-2009q3/bin/arm-linux-gcc  使用的工具链所在的路径  (必须要跟工具链所在的位置一致) 4.配置libmad解码库 进入libmad源码目录:  cd libmad-0.15.1b/  配置makefile: ./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/arm-2009q3/lib CC=/usr/local/arm/arm-2009q3/bin/arm-linux-gcc 获得 Makefile则表示配置成功 5.编译 make  假如出现如下错误 cc1: error: unrecognized command line option "-fforce-mem"  ( vim Makefile去掉-fforce-mem 129行)    修改完毕后重新make 6.最后安装配置 make install      提示没有权限的话  , 更改工具链目录的权限   sudo chmod 777 arm/  -R (arm/是你的arm-linux-gcc编译器的目录,我的话是在/usr/local下,可以通过which  arm-linux-gcc命令查看) 再返回 libmad-0.15.1b/ 目录进行安装 7.交叉编译mplayer源码得到arm版本的播放器 进入 MPlayer-1.0rc/目录           cd MPlayer-1.0rc2/ 配置makefile脚本: ./configure --cc=/usr/local/arm/arm-2009q3/bin/arm-linux-gcc --target=arm-linux --enable-static --prefix=/tmp/mplayer-rc2 --disable-win32dll --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a --language=zh_CN --disable-armv5te --disable-armv6 --disable-ivtv --with-extraincdir=/usr/local/arm/arm-2009q3/lib/include --with-extralibdir=/usr/local/arm/arm-2009q3/lib/lib --host-cc=gcc --enable-ossaudio 8.编译mplayer播放器 make  (这个过程需要几分钟时间,要耐心等待) 至此,mplayer播放器在linux的移植已完成,可在 MPlayer-1.0rc 目录中看到mplayer 如果需要移植到arm开发板上只需要下载mplayer到开发板对的/bin目录下即可 ---------------------------------------------------------------------------------------------------------------------------------------- 接下来是mplayer的使用的示例程序: 【mplayer.c】 #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <stdlib.h> void *player(void *arg) { system("mplayer -slave -quiet -input file=/pipe -zoom -x 800 -y 480 dream.avi"); } int main() { //创建一个进程去获取时间 pid_t fpid=fork(); //子进程 if(fpid == 0) { int pidfd=open("/pipe1",O_RDONLY); char buf[1024*4]={0}; while(1) { bzero(buf,1024*4); read(pidfd,buf,1024*4); printf("buf=%s\n",buf); sleep(1); } } //在父进程中 else if(fpid>0) { pthread_t pid; pthread_create(&pid,NULL,player,NULL); //打开mplayer管道文件 int fd=open("/pipe",O_RDWR); //打开另外一个管道文件用来捕抓进程信息 int msgfd=open("/pipe1",O_RDWR); //把捕抓标准输出中的内容 dup2(msgfd,1); while(1) { //write(fd,"get_time_pos\n",strlen("get_time_pos\n")); system("echo get_time_pos >> /pipe"); sleep(1); } } //等待进程结束 wait(); }
转载请注明原文地址: https://www.6miu.com/read-66261.html

最新回复(0)