嵌入式6818利用线程实现视频播放器

  • 基于粤嵌6818的视频播放器
    • 一、创建管道文件
    • 二、利用slave命令写入管道文件
    • 三、进行视频播放功能

基于粤嵌6818的视频播放器

一、创建管道文件

//创建管道文件
int create_fifo()
{//检测管道文件是否存在,不存在就创建int ret=access("/tmp/fifo",F_OK);{if(ret == 0){printf("fifo has exist\n");}else if(ret == -1){mkfifo("/tmp/fifo",0777); //创建管道文件}}int fifo_fd=open("/tmp/fifo",O_RDWR);  //打开管道文件if(fifo_fd == -1){perror("open fifo failed");return -1;}return fifo_fd;}

二、利用slave命令写入管道文件

//把slave命令写入管道文件
int slave_write_cmd(int fifo_fd,char *cmd)
{write(fifo_fd,cmd,strlen(cmd));return 0;}

三、进行视频播放功能

//视频播放功能
void show_video()
{BmpNode *list=D_R_List_Create();  //链表初始化Search_Dir_Avi(list,"./avi");     //检索目录下的AVI文件并将文件名存入链表中BmpNode *p=list->next;Show_Bmp(800, 480,0, 0, "./video.bmp");  //显示视频主界面fifo_fd=create_fifo();int video_stop_cont_flags=1;int play_flag = 0;pid_t pid;pid = fork();  //创建子线程if(pid==0){while(1){execl("./mplayer", "./mplayer", "-slave", "-quiet", "input file=/tmp/fifo", "zoom", "-x", "700", "-y", "420", "geometry", "0:0", "p->data", NULL);}}while(1){Get_Slide();//视频播放if(ts_x1>370 && ts_x1<425 && ts_y1>420 && ts_y1<480){if(play_flag == 0) //当前是播放状态{kill(pid, SIGSTOP);  //子进程暂停play_flag = 1;}else{kill(pid, SIGCONT);  //子进程继续play_flag = 0; }}//视频退出if(ts_x1>700 && ts_x1<800 && ts_y1>0 && ts_y1<60){//杀死当前子进程kill(pid , SIGKILL);Show_Bmp(800, 480, 0, 0, "func.bmp");close(fifo_fd);break;}//播放上一个视频if(ts_x1>250 && ts_x1<300 && ts_y1>420 && ts_y1<480){//杀死当前子进程kill(pid , SIGKILL);p=p->prev;if(p==list){p=p->prev;}//创建新的子进程去播放上一首pid = fork();if(pid == 0){execl("./mplayer", "./mplayer", "-slave", "-quiet", "input file=/tmp/fifo", "zoom", "-x", "700", "-y", "420", "geometry", "0:0", "p->data", NULL);  }}//播放下一个视频if(ts_x1>500&&ts_x1<550 && ts_y1>420&&ts_y1<480){//杀死当前子进程kill(pid , SIGKILL);p=p->next;;if(p==list){p=p->next;}//创建新的子进程去播放上一首pid = fork();if(pid == 0){execl("./mplayer", "./mplayer", "-slave", "-quiet", "input file=/tmp/fifo", "zoom", "-x", "700", "-y", "420", "geometry", "0:0", "p->data", NULL);    }}//视频快进if(ts_x1>440&&ts_x1<490 && ts_y1>420&&ts_y1<480){slave_write_cmd(fifo_fd,"seek +5\n");}//视频快退if(ts_x1>310&&ts_x1<360 && ts_y1>420&&ts_y1<480){slave_write_cmd(fifo_fd,"seek -5\n");}//音量增加if(ts_x1>70&&ts_x1<110 && ts_y1>420&&ts_y1<480){slave_write_cmd(fifo_fd,"volume +200\n");}//音量减少if(ts_x1>120&&ts_x1<160 && ts_y1>420&&ts_y1<480){slave_write_cmd(fifo_fd,"volume -200\n");}//暂停/继续if(ts_x1>560&&ts_x1<610 && ts_y1>420&&ts_y1<480){if(video_stop_cont_flags == 1){slave_write_cmd(fifo_fd,"pause\n");video_stop_cont_flags=2;}else if(video_stop_cont_flags == 2){slave_write_cmd(fifo_fd,"pause\n");video_stop_cont_flags=1;}}//视频静音if(ts_x1>690&&ts_x1<740 && ts_y1>420&&ts_y1<480){slave_write_cmd(fifo_fd,"mute\n");}}
}

嵌入式GEC6818利用多线程实现视频播放器相关推荐

  1. Android系列之利用SurfaceView实现视频播放器

    xml配置文件的权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /& ...

  2. 利用DirectShow开发C#版的视频播放器

    今天这里要给各位朋友介绍的是本人利用业余时间使用C#编写的一个视频播放器,开发环境为Microsoft Visual Studio 2008/C#.Microsoft DirectX 9.0 SDK. ...

  3. html 阅读swf,网页嵌入式 HTML5+Flash(swf) 视频播放器

    2016年06月1日: 今天发了篇博文要用到视频播放器,发现之前收集的都不怎么好用, 博客又没播放器插件,重新整理出这个方便调用的播放器顺便分享下=-= HTML嵌入代码://优先使用 HTML5 V ...

  4. 利用多线程实现的下载器,完爆迅雷!

    原文:利用多线程实现的下载器,完爆迅雷! 源代码下载地址:http://www.zuidaima.com/share/1550463611374592.htm 方便,快捷~~~程序猿必备利器 界面是用 ...

  5. 嵌入式Qt 开发一个视频播放器

    上篇文章:嵌入式 Qt开发一个音乐播放器,使用Qt制作了一个音乐播放器,并在OK3568开发板上进行了运行测试,实际测试效果还不错. 本篇继续来实现一个Qt视频播放器软件,可以实现视频列表的显示与选择 ...

  6. 利用arm和VMware实现视频播放器

    利用arm和VMware实现视频播放器,可以实现的功能有:下一个.上一个.暂停.播放.快进.快退.音量调大.音量调小. #include<stdio.h> #include <sys ...

  7. 粤嵌GEC6818,基于LVGL和mplayer的音视频播放器

    #include <myplay.h> pthread_mutex_t mutex_lv;//lvgl线程锁 static char local_music_path[]="/t ...

  8. python制作视频播放器_Python应用03 使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  9. python开发视频播放器_Python应用03 使用PyQT制作视频播放器实例

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

最新文章

  1. MySQL导入导出数据和结构
  2. 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
  3. elasticsearch5.0启动出现的错误(自己做过测试,有错误可以在这上面找)
  4. css_01_承接部分html+css快速入门
  5. HDU-2332 机器人的舞蹈 递推
  6. nacos分布式配置中心搭建与使用
  7. 【css】谈谈 css 的各种居中——读编写高质量代码有感
  8. winform实现委托
  9. Windows server2012r2安装密钥
  10. ABAP 去重 delete adjacent duplicates
  11. 破解微信包工具之vscode
  12. [架构设计] 结构型模型
  13. 万能计算机作文,万能机器人作文9篇
  14. 卷毛0基础学习Golang-并发编程-03 channel管道
  15. 建模杂谈系列100 数据工厂
  16. Windows服务被360清理问题
  17. Matlab做数据拟合中的(Results,SSE,R-square,Adjusted R-square,RMSE)
  18. 解决google翻译无法使用
  19. CAD中的矩形设置长宽、两个矩形对齐
  20. 一场围绕U盘发明权的纷争

热门文章

  1. c语言编程题企业奖金,【C语言】企业奖金发放问题
  2. 打印信息无法连接服务器,打印机无法连接服务器
  3. 无线接入控制服务器(ac),无线AP控制器是什么?无线AP与无线AC的区别
  4. dede服务器建站_织梦教程,网站搭建,网站成功部署教程
  5. 练习牛客网笔试题--前端js--60-双色球机选一注
  6. 【总结】alter table *** add constraint *** 用法 . 建立约束 ,主键、外键的SQL语句写法
  7. map什么意思java_map的意思是什么,java中Maplt;?,?gt;是什么意思
  8. hdmi网线延长器_HDMI单网线延长器50米高清传输解决方案
  9. [Python3]数独计算器
  10. 《趣学Python——教孩子学编程》——第1部分 学习编程 第1章 Python不是大蟒蛇 1.1 关于计算机语言...