QT-LINUX简易版mp3播放器(设计阶段)

项目名称myplayer

项目前准备

  1. ubuntu系统
  2. Linux版QT(5.4.2以上版本)
  3. mplayer解码工具

myplayer使用方式(二选一):

  1. 键盘方式(mplayer xx.mp3)通过键盘按键控制播放器
  2. slave方式(mplayer -idle -slave -quiet xx.mp3)

本项目实现了第二种

通过命令控制 完成项目:

1、运行环境(ubuntu、window、ARM) 2、本次在ubuntu上搭建QT环境 3、根据设计内容完成项目 设计播放器界面并实现 创建父子进程(一个显示界面,一个播放歌曲) 父子进程间通信(无名管道、有名管道、消息队列、共享内存、mmap、本地socket、信号、信号量 选一即可)

项目分文件

一:多个*.c的语法规则

  1. 多个*.c的变量的使用(定义、声明)
  • 一个*.c文件对应一个*.h文件,C文件中写上变量的定义,H文件写上变量的声明,别的C文件要使用这个变量时,包含写有这个变量声明的头文件即可。 如:有三个文件test.c test.h main.c。 在test.c中有变量 test_flag的定义:int test_flag = 0; 在test.h中有变量 test_flag的声明:int test_flag ; 当在main.c中需要使用test_flag变量时,只要在main.c文件中写上#include “test.h”即可。
  1. 多个*.c的函数的使用(定义、声明)
  • 一个*.c文件对应一个*.h文件,C文件中写上函数的定义,H文件写上函数的声明,别的C文件要使用这个函数时,包含写有这个函数声明的头文件即可。

二:.c、.h的编程规则

  1. 头文件里应放的内容 1)防止头文件重复包含的代码 2)公共的全局变量的声明 3)公共函数的声明 4)公共类型的定义 5)公共的宏 6)必不可少的头文件(解决先后顺序问题)
  2. C文件里应放的内容 1)头文件 2)全局变量的定义 3)函数的定义 4)私有类型的定义

本项目使用的 Qt版本5.4.2 64位

安装qt时查阅文档请自行解决

目标样式(二选一) image

image

可结合终端版播放器开发 终端版播放器介绍 终端版音乐播放器源码

项目整体开发流程

主函数中

1. 创建共享内存用于存储子进程id 2. 使用有名管道用来给mplayer发送指令(fifo文件) 3. 使用无名管道将mplayer输出到终端的内容重定向到管道中 4. 创建三个进程 子进程1运行mplayer工具 { exec("mplayer"); } 子进程2运行qt界面 { QApplication a(argc, argv); MainWindow w(fd[0], fifo_name); // 需要获取mplayer返回的数据, 并存储有名管道文件名 w.show(); return a.exec(); } 主进程 { while(1) { // 等待所有子进程结束,进行资源回收 ret = waitpid(-1 ,NULL,WNOHANG); // 如果是qt退出则同时关闭mplayer进程 if(ret == qt_pid) kill -9 mplayer_pid } }

实现阶段

项目源码

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

VBox 启动虚拟机失败

在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0

QT-LINUX简易版mp3播放器(设计阶段) - HelloWorld