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时查阅文档请自行解决

目标样式(二选一)

在这里插入图片描述
在这里插入图片描述
可结合终端版播放器开发
终端版播放器介绍
终端版音乐播放器源码

项目整体开发流程

主函数中

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
    }
}

实现阶段

项目源码

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值