HMI-55-【多媒体】音乐播放器 4

简介: 今天我们接着搞音乐播放器,今天主要实现音乐播放器的播放音频功能

头图

HMI-55-【多媒体】音乐播放器 4

​ 今天我们接着搞音乐播放器,今天主要实现音乐播放器的播放音频功能

当前进度

​ 今天已经使用QMediaPlayer实现了音频文件的播放,但是效果不是很理想,比如我想读取音频信息的歌手,专辑信息不知道咋读。还是有点问题,也不知道歌曲名字如何添加列表,还没有搞出来,仅仅实现了播放功能。把核心播放音频代码分析分享。


[toc]

关键字: HMIMultifunctionQtQMediaPlayerMusic

头文件

/**
 * @brief The MusicAduioThread class
 * 音频播放类
 */
class MusicAduioThread : public QThread
{

    Q_OBJECT

public:

    explicit MusicAduioThread(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 = "";                  //音乐地址
};

源文件

MusicAduioThread::MusicAduioThread(QObject *parent)
{
    Q_UNUSED(parent)
    mediaPlayer = new QMediaPlayer(this,QMediaPlayer::LowLatency);
}

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


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

void MusicAduioThread::stop()
{
    mediaPlayer->stop();

}

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

void MusicAduioThread::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

相关文章
|
监控 安全 网络协议
|
前端开发
CSS基础-盒模型:边框、内边距、外边距
【6月更文挑战第8天】Web设计中的盒模型由内容区域、内边距、边框和外边距组成,是理解页面布局的关键。内容区域包含实际内容,内边距提供间隔,边框定义元素边界,外边距控制元素间距。常见易错点包括边框宽度计算、外边距折叠和盒模型理解不透彻。通过实践和媒体查询可解决响应式设计挑战,`border-radius`可能导致圆角问题。理解盒模型并灵活应用能创建多样化布局。
387 6
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
WPF在.NET9中的重大更新:Windows 11 主题
279 0
|
缓存 网络协议
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
570 0
|
机器学习/深度学习 传感器 运维
快速开发光伏电站数字孪生运维系统(一)
本文重点介绍如何从零开始构建出光伏电站数字孪生系统的详细步骤。
1006 0
快速开发光伏电站数字孪生运维系统(一)
|
Serverless API 数据处理
浅谈云函数的代理IP利用面
本篇文章介绍如何通过 **Serverless(云函数)** 实现各种扫描器探测功能,以达到绕过态势感知、WAF等安全设备,增大蓝队研判人员溯源难度,实现封无可封,查无可查的效果。
1486 0
|
安全 应用服务中间件 API
JWT和OAuth2.0
JWT是一种认证协议,提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。SSO私钥加密token。应用端公钥解密token。 OAuth2.0是一种授权框架,提供了一套详细的授权机制(指导)。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源。
514 0
JWT和OAuth2.0
|
网络协议 KVM 虚拟化
获取kvm的ip地址的三种方式
获取kvm的ip地址的三种方式
1325 0
|
Linux Shell 数据安全/隐私保护
Linux操作系统:指定运行级别(init5和init3)+找回linux最高权限的密码+帮助指令
Linux操作系统:指定运行级别(init5和init3)+找回linux最高权限的密码+帮助指令
798 0
Linux操作系统:指定运行级别(init5和init3)+找回linux最高权限的密码+帮助指令
|
安全 前端开发 JavaScript
整合阿里云视频播放器测试 | 学习笔记
快速学习 整合阿里云视频播放器测试
648 0
整合阿里云视频播放器测试 | 学习笔记