当前位置: 首页 > news >正文

用来做网站的软件上海网站建设电

用来做网站的软件,上海网站建设电,家居装修设计平台,社交网站开发难度用android或是QT来开发视频播放程序相对来说比较简单#xff0c;如果是在linux用纯C语言来进行开发#xff0c;就显得比较麻烦#xff0c;好在现在有很多开源项目能够帮助我们做什么事情#xff0c;mplayer就是音视频播放开源项目中典型的例子。 首先需要去mplayer官方网站… 用android或是QT来开发视频播放程序相对来说比较简单如果是在linux用纯C语言来进行开发就显得比较麻烦好在现在有很多开源项目能够帮助我们做什么事情mplayer就是音视频播放开源项目中典型的例子。 首先需要去mplayer官方网站mplayer下载地址下载源代码然后使用你的交叉编译工具进行编译编译完成后会生成一个mplayer执行程序在命令行执行mplayer就可以进行播放了。 但是用c语言编程来实现mplayer的播放功能怎么实现呢本文就来讲讲一个简单的mplayer播放器的实现。 一 、 创建一个管道进行进程间通信 int fd_fifo; int g_sock_pair[2]; //全双工管道标识符 int sock_stop_mplay[2]; char video_list[VIDEO_MAX_NUM][30]; void mplayer_init(void) { int sockID; sockIDsocketpair(AF_UNIX, SOCK_STREAM, 0, g_sock_pair);//建立全双工管道 if(sockID) { printf(the pipe is not contructed ); exit(0); } else { IfPlay FALSE;//设置标识符初始状态 IfStop TRUE; IfPause FALSE; IfQuit TRUE; video_over FALSE; } if(pipe(sock_stop_mplay)0) { printf(stop mplay pipe create error ); return ; } } 二 、 获得视频播放目录的文件个数 int mplayer_get_video_name(void) { int i; int num; int total_num; struct dirent **namelist; char *filepath usr/video/; memset(video_list,0,sizeof(video_list)); num scandir(filepath,namelist,0,alphasort); printf(the video num is: %d ,num); if(num 0)return -1; if(num VIDEO_MAX_NUM) { num VIDEO_MAX_NUM; } for(i0;id_name); } total_num num-2; return total_num; printf(video name:%s ,video_list[0]); } 三 、 mplayer播放器的实现 void video_play(void) { pid_t pid; pid_t pid1; FILE * fp; char buf[1024]; int mark 0; //播放标志 printf(the pid is %d ,getpid()); mplayer_init(); unlink(/usr/my_fifo); //如果管道存在则先删除 mkfifo(/usr/my_fifo,O_CREAT|0666); perror(mkfifo); fd_fifoopen(/usr/my_fifo,O_RDWR); int pipe_fd[2]; //用于进程ID通信 int r_num; char pipe_buf[100]; memset(pipe_buf,0,100); if(pipe(pipe_fd)0) { printf(pipe create error ); return ; } pid fork(); if(pid 0) { char temp[100]; memset(temp,0,sizeof(temp)); printf(pid xxx %d ,getpid()); sprintf(temp,%d,getpid()); close(pipe_fd[0]); if(write(pipe_fd[1],temp,strlen(temp))!-1) printf(child write success! ); if((pid1fork())0) { //close(g_sock_pair[0]); //dup2(g_sock_pair[1],1); //将子进程的标准输出重定向到管道的写端 int video_num 0; char *videoname; int total_num; char stop_cmd[20]; total_num mplayer_get_video_name(); while(1) { if(mark) { video_num; printf(video_num %d ,video_num); if(video_num total_num) { video_num 0; printf(video_num more than total_num ); } } videoname video_list[video_num]; char videopath[50] /storage/unit_app/video/; char sPlay[100]mplayer -ao alsa -vo fbdev -vc on28190 -fs -slave -quiet -input file/storage/my_fifo ; strcat(videopath,videoname); strcat(sPlay,videopath); mplayer_background_pic(); memset(stop_cmd,0,20); printf(begin play the video! ); fp popen(sPlay, r); if(fp NULL) { perror(popen); exit(-1); } else { while(fgets(buf, sizeof(buf), fp)) { printf(%s, buf); } printf(one video end play ); pclose(fp); mark 1; } usleep(30000); fcntl(sock_stop_mplay[0], F_SETFL, O_NONBLOCK); read(sock_stop_mplay[0],stop_cmd,20); if(strcmp(stop_cmd,stop)0) { mark 0; printf(rev the stop cmd ); break; } printf(end the play pthread ); } exit(0); } if (waitpid(pid1, NULL, 0) ! pid1) { fprintf(stderr,Waitpid error! ); exit(-1); } exit(0); } else if(pid 0) { close(pipe_fd[1]); usleep(30000); if((r_numread(pipe_fd[0],pipe_buf,100))0) { printf(%d numbers read from be pipe is %s ,r_num,pipe_buf); childs_pid atoi(pipe_buf); } } } 四、 mplayer的结束程序 void video_stop(void) { pid_t pid; char cmd[100]; memset(cmd,0,100); sprintf(cmd,kill -9 %d,childs_pid); char stop_cmd[20]; memset(stop_cmd,0,20); sprintf(stop_cmd,stop); mplayer_send_cmd(quit ); if(write(sock_stop_mplay[1],stop_cmd,strlen(stop_cmd))!-1) printf(write stop cmd success! ); //clear_fb(); printf(kill childs_pid %d ,childs_pid); system(cmd); mplayer_del(); } void mplayer_send_cmd(char *cmd) { write(fd_fifo,cmd,strlen(cmd)); } void mplayer_del(void) { close(g_sock_pair[0]);//关闭管道 close(g_sock_pair[1]); close(sock_stop_mplay[0]); close(sock_stop_mplay[2]); wait(NULL);//收集子进程信息 } OK只要实现上述代码基本的mplayer播放器就可以实现了。
http://www.dnsts.com.cn/news/102776.html

相关文章:

  • 网站无障碍建设标准网站推荐货源
  • 微网站怎么注册wordpress插件h5
  • 企业网站建设存在的不足与困难文章wordpress
  • 网站地图如何更新给女朋友做情侣网站的程序员
  • 使用cms快速搭建商业网站注册小公司
  • 可视化建站源码wordpress多个菜单menu
  • 哈尔滨专业网站建设哪个好蓝色系网站首页
  • ps做的网站怎么到网站上预览济南seo网站推广公司
  • dede更新网站阿里云 wordpress 500
  • 医学院英文网站建设方案局域网内的网站建设
  • 西双网站建设南海佛山网站建设
  • h5开发和前端开发区别东莞seo网站推广
  • 中国商标网商标查询网巩义网站优化培训
  • 皮具网站建设策划书施工企业管理杂志官网
  • 烟台城乡建设局网站网站建设颜色注意事项
  • 网站样式下载百度排名 网站标题
  • 网站建设怎么选公司我做微信淘宝客网站有哪些
  • 广州建设工程造价管理站深圳工作服制作
  • 小企业网站建设哪些好办郑州哪个公司专业做网站
  • 建筑学网站推荐wordpress系统付费
  • 网站制作公司怎样帮客户做优化免费网站建设行情
  • 手机 网站 翻页 外部网站建设视频教程推荐
  • 广州 天河网站设计百度关键词seo公司
  • 江门网站制作套餐能搜任何网站的浏览器
  • 学院网站建设的目的网站互动设计方式
  • 昆明网站建设报价网站中验证码如何做的
  • 网站弹出广告代码企业网站建设介绍
  • 昆明网站建设锐网ui培训设计
  • 商贸公司寮步网站建设价钱第一模板ppt免费下载
  • 企业网站推广计划书手机关键词seo排名优化