QT实现WAVE波形录音绘制,qml实现显示左右声道波形图,完整教程

介绍:
一、环境说明
1.QT Creator 版本为4.11.1,QT版本为5.14.1
2.软件架构组成:软件逻辑有QT的C++编写,图形界面由描述性脚本qml编写,数据交互由轻型的数据库SQLite完成
3.实现功能:可以实现双通道音频数据分离为左右通道并绘制波形图显示,可以在此基础上轻松拓展实现录音保存,录音回放
4.软件架构:本项目采用前后端分离的逻辑架构,后端采用QT的C++多线程来处理数据逻辑,前端采用qml来处理图形化界面,数据有SQLite数据库处理
5.对此项目评价:本项目为本人为发帖21ic电子技术论坛而开发,历时5天业余时间完成哈哈,本项目最大亮点是使用qml开发图像化界面,很多QT开发项目是用Widgets来开发图形化界面,导致qml开发资源资料少之又少,很难找到自己需求的的demo,之前有做个一下音频项目,特此用qml做了一个音频处理显示的demo,希望大家多多使用qml开发图形化界面。QT官方初期推出qml图形化界面开发,在QT5版本之前,QT的qml开发有很多bug,导致大多数人偏向Widgets开发界面,随着QT5版本的推进及优化,qml的开发已经大大改善,越来越成熟,开发也得心应手,特别是对大型的QT软件多人协同开发图形化界面qml要比Widgets处理图形化界面更加占有优势,推荐大家多多使用qml开发图形界面。发帖经验不足,写的不好或不对的地方欢迎留言批评指导。帖子结尾会一如既往附程序源码,让你看到并直接用到,不做任何保留,希望大家多多指教。               
二、具体讲解
1.软件逻辑块分为5个文件,图形界面处理分为4个qml文件,**显示有一个.ico文件,具体划分如下图:

说明:上图逻辑处理和图形化界面显示可以单独分离逻辑和显示部分移植,不管借用逻辑处理还是显示界面皆可独立出来使用,方便上手,移植到其他项目直接使用

2.源码核心部分解读如下图: 

说明:1>数据库函数文件sqlitefun.cpp,包含了数据库的基本操作。例如查询、添加、删除、和修改数据等,可以直接是用本文件数据库函数进行移植操作,同时也可以自己独立出来自己在其他项目使用,以及封装完成并经过验证。

          2>DataSource.cpp文件为整个逻辑处理界面,里面包含了qml和QT C++的信号槽交互,以及数据库处理,音频格式定义处理,多线程创建以及操作使用等,特别说明多线程操作可以处理多个音频模块数据,音频模块如果过多不加入多线程实测会出现死机问题,如果单个音频可以不使用多线程处理,文件看似简单实则麻雀虽小五脏俱全

          3>qml文件显示部分使用GridView控件来完成的,用代理方式来实现多个模块显示,可以在此基础上,理论无限拓展显示模块(根据你音频设备个数定),具体文件为CreatDevReadDataModel.qml,主要负责模块显示。在此介绍一下GridView控件, GridView 控件是一个二维的网格布局控件,可以用来显示二维数据,例如图像、矩阵、表格等。GridView 控件可以根据设定的行数、列数、单元格大小和间距等属性自动排列子控件,使得子控件可以形成一个二维网格布局,多个点组成可显示波形曲线。

三、实测图如下:

说明:本实物图显示的是两个声道,因为我的音频设备是双声道的,如果是单声道音频设备,可以在qml调用QT C++初始化音频函数里面配置单声道即可,具体函数可参考DataSource.cpp文件里的initAudo函数,同时也可以直接编辑数据库文件AudioSystem_database.db来操作,打开数据文件软件推荐SQLite Expert Professional,方便修改和浏览数据库配置。
四、总结
1.借此机会建议大家多多使用qml开发图形化界面,总结一下qml优点
      简单易学:QML基于JavaScript语言,语法简单易懂,学习成本低。
      声明式语言:QML使用声明式语言描述UI和应用程序逻辑,使代码更易读,易于理解和维护。
      快速开发:QML提供了许多预制的UI组件,可以快速构建用户界面,同时还可以轻松地自定义这些组件。
      跨平台支持:QML运行多个平台(如Windows,Linux,Mac OS等),多开发语言(如C ++,Python等),有较高的灵活性。
      易于集成:QML可与C ++代码无缝集成,可以轻松访问C ++的功能和库。
      高性能:QML使用OpenGL ES进行渲染,有良好的性能和流畅度。QML优化技术,如局部更新和缓存,进一步提高性能。
2.发帖目的希望能够分享自己的知识和信息资料,共同探讨问题和话题,通过论坛上的其他用户发帖提出建议和见解来更加完善项目的不足,更深层次完善优化项目,发帖不易,请多多留言探讨,谢谢!
---------------------
作者:1pwdzsj1
链接:https://bbs.21ic.com/icview-3295558-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。  我将带领大家一起来学习:Qt麦克风数据探测、FFmpeg解码音频数据、音频波形图音频播放器。具体内容包括:1.Qt采集麦克风并探测数据,生成动态矩形图。2.FFMpeg解码音频数据,生成PCM数据,并绘制波形图。3.音频播放器实战。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值