HMI-56-【多媒体】音乐播放器 5

简介: 上一篇中实现了音乐播放的后台线程,夜里睡觉也没有睡踏实,总是感觉不合适,所以今天还是决定重新搞一下。

头图

HMI-56-【多媒体】音乐播放器 5

​ 上一篇中实现了音乐播放的后台线程,夜里睡觉也没有睡踏实,总是感觉不合适,所以今天还是决定重新搞一下。

当前进度

​ 播放音乐将做成一个共有的类,放在Core文件里面,后面可能会还有一个,现在我想读取音乐的信息,不知道QMediaPlayer是否支持,如果不支持,是不是得搞FFmpeg了呀。顺带整理了一下Core文件夹下的代码


[toc]

关键字: HMIMultifunctionQtQMediaPlayerMusic

头文件

#ifndef MULTIMEDIAMUSICTHREAD_H
#define MULTIMEDIAMUSICTHREAD_H

#include <QThread>
#include <QObject>
#include <QMediaPlayer>
class MultimediaMusicThread : public QThread
{
    Q_OBJECT
public:
    explicit MultimediaMusicThread(QObject *parent = nullptr);
    /**
     * @brief play
     * @param temp
     * 播放对应音频
     */
    void play(QString temp = "qrc:/Multifunction/Resources/MultifunctionDisplay/Audio/DreamLife.wav");
    /**
     * @brief setVolume
     * @param value
     * 设置音量
     */
    void setVolume(int value = 80);
    /**
     * @brief stop
     * 停止播放
     */
    void stop();
    /**
     * @brief pause
     * 暂停
     */
    void pause();
private:
    /**
     * @brief run
     * 线程函数
     */
    void run();
private:
    QMediaPlayer* mediaPlayer;          //音频播放器
    QString mUrl = "";                  //音乐地址
};

#endif // MULTIMEDIAMUSICTHREAD_H

源文件

#include "multimediamusicthread.h"
#include <QDebug>
MultimediaMusicThread::MultimediaMusicThread(QObject *parent)
    : QThread{parent}
{
    Q_UNUSED(parent)
    mediaPlayer = new QMediaPlayer(this,QMediaPlayer::LowLatency);
}

void MultimediaMusicThread::play(QString temp)
{
    mUrl = temp;
    this->start();
}

void MultimediaMusicThread::setVolume(int value)
{
    mediaPlayer->setVolume(value);
}

void MultimediaMusicThread::stop()
{
    mediaPlayer->stop();
}

void MultimediaMusicThread::pause()
{
    mediaPlayer->pause();
}

void MultimediaMusicThread::run()
{
    mediaPlayer->stop();
    mediaPlayer->setMedia(QUrl(mUrl));
    mediaPlayer->play();
}

今天就到这里了。

第三阶段成果展示

​ 目前已完成液晶仪表三种模式的初步显示,小模块后期根据精力更新了,主要还得找美术来搞资源,自己能力不够。暂未跟新计划。展示如下:

[video(video-yznBr6e3-1648369267384)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=679609061)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/4d157e1cb316b007a2cb9790cb2dbfde.png)(title-基于Qt的汽车仪表模拟 3.0)]

B站链接:https://www.bilibili.com/video/BV1WS4y137y1/

第二阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式和运动模式的开发。展示如下:

[video(video-2AqJ88TY-1645273728489)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=594179292)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/e75563c3ce68bc980547dde8f6e265ba.png)(title-基于Qt的汽车仪表模拟 2.0)]

B站链接:https://www.bilibili.com/video/BV1aq4y1t7H7/

第一阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式开发。展示如下:

[video(video-ArCvRvBQ-1642664938100)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=77197267)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/ccddd04e0cef191fd33d7f58d41adb24.png)(title-基于Qt的汽车仪表模拟 1.0))]

B站链接:https://www.bilibili.com/video/BV1qJ411X7Gs/


说明:

本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

多媒体部分是来自吉利博瑞2017旗舰版界面所有权和解释权都归吉利汽车所有。

设计图的所有权和解释权都归吉利汽车所有。

本项目所有资源文件均由打不死的小海复刻制作。

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

本项目仅限学习交流、禁止商业使用。


博客签名2021

相关文章
Springboot文件下载跨域问题解决方案
Springboot文件下载跨域问题解决方案
|
7月前
|
机器学习/深度学习 敏捷开发 供应链
从多维度解构 Lead Time:定义、应用与优化策略
当我们谈论lead time时,往往会发现这个词在不同领域的定义存在细微差异。这种现象并非偶然,而是源于其本质的抽象性与适用场景的多样性。为了深入理解这一概念,我们需要从底层逻辑出发,通过跨领域的对比分析和实际案例验证,逐步揭示其核心内涵。
1800 16
|
前端开发 Java 应用服务中间件
计算机Java项目|基于SpringBoot的在线视频教育平台的设计与实现
计算机Java项目|基于SpringBoot的在线视频教育平台的设计与实现
322 0
|
人工智能 算法 定位技术
元宇宙房地产:虚拟土地的价值评估
【10月更文挑战第28天】随着科技发展,元宇宙成为融合虚拟现实、增强现实和区块链技术的数字世界。本文探讨元宇宙房地产中的虚拟土地价值评估,分析其影响因素、评估方法及未来发展趋势,包括地理位置、平台流量、土地用途、用户基础、技术创新等方面。未来,元宇宙房地产将呈现跨平台交易、定制化城市建设及金融产品创新等趋势。
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
消息中间件 分布式计算 大数据
大数据组件之storm简介
大数据组件之storm简介
430 2
|
资源调度 自然语言处理 JavaScript
源码分享-基于vue+Ant Design管理平台
源码分享-基于vue+Ant Design管理平台
711 0
源码分享-基于vue+Ant Design管理平台
|
Java
SpringBoot 自定义注解 + AOP实现参数效验,默认值赋值
SpringBoot 自定义注解 + AOP实现参数效验,默认值赋值
699 2
|
机器学习/深度学习 自然语言处理 算法
少样本学习综述:技术、算法和模型
少样本学习(FSL)是机器学习的一个子领域,它解决了只用少量标记示例学习新任务的问题
1043 0
|
运维 Java jenkins
文件上传时提示NET:ERR_CONNECTION_RESET
最近闲暇之余写了一个半自动化的项目部署的项目,因为发现之前使用的jenkins太消耗服务器资源了,由于现在又不想升级服务器,就自己写一个半自动化的。其实就是一些java执行我在服务器上面写好的.sh的脚本即可,或者执行一些linux命令
5614 0
文件上传时提示NET:ERR_CONNECTION_RESET