之前有个项目需要将音频文件的频谱显示出来,想了很多办法,后面发现fmod这个好东西,还是跨平台的,就一个头文件+一个库文件就行,简单小巧功能强大,人家做的真牛逼。为了不卡住界面,采用了多线程处理。
可执行文件下载:https://pan.baidu.com/s/1JIjiCv800KPDZS9aSRPObQ

1:可获取整个声音文件采样值数据
2:可实时获取当前播放位置的采样值数据
3:可设置采样的步长和数量
4:可开始播放/暂停播放/停止播放
5:多线程处理,超流畅
6:可设置当前播放位置
7:可设置音量

#ifndef FMODTHREAD_H
#define FMODTHREAD_H/*** fmod音乐播放类 作者:feiyangqingyun(QQ:517216493) 2017-9-12* 1:可获取整个声音文件采样值数据* 2:可实时获取当前播放位置的采样值数据* 3:可设置采样的步长和数量* 4:可开始播放/暂停播放/停止播放* 5:多线程处理,超流畅* 6:可设置当前播放位置* 7:可设置音量* 参考文章:http://blog.csdn.net/fengyhack/article/details/43318575*/#include <QThread>class FMOD_SYSTEM;
class FMOD_SOUND;
class FMOD_CHANNEL;class FmodThread : public QThread
{Q_OBJECT
public:explicit FmodThread(QObject *parent = 0);~FmodThread();protected:void run();private:bool stopped;           //停止线程标志位bool isPlayWave;        //开始播放标志位bool isPauseWave;       //暂停播放标志位bool isStopWave;        //停止播放标志位bool isReadWave;        //读取当前位置采样值标志位int step;               //采样值步长int count;              //采样点总数int interval;           //采样间隔bool showWaveDataAll;   //是否显示总采样QString fileName;       //当前声音文件FMOD_SYSTEM *system;    //fmod结构体FMOD_SOUND *sound;      //播放声音对象FMOD_CHANNEL *channel;  //播放声音通道private slots://获取当前位置采样值数据void readWaveData();//获取所有采样值数据void readWaveDataAll();//开始播放void playWave();//暂停播放void pauseWave();//停止播放void stopWave();signals://开始播放信号void playStart();//停止播放信号void playStop();//暂停播放信号void playPause();//当前播放时长void filePositionReceive(uint position, bool isPlay);//总时长void fileLengthReceive(uint length);//音量大小void fileVolumeReceive(int volume, bool mute);//当前声音正在播放位置采样值数据void waveDataReceive(const QVector<float> &waveData);//当前声音所有采样值数据void waveDataAllReceive(const QVector<float> &waveData);public slots://设置采样值步长void setStep(int step);//设置采样点总数void setCount(int count);//设置采样间隔void setInterval(int interval);//设置是否显示总采样void setShowWaveDataAll(bool showWaveDataAll);//设置要播放的声音文件void setFileName(const QString &fileName);//播放void play();//暂停void pause();//停止void stop();//停止线程void stopAll();//设置播放进度位置void setPosition(int position);//设置音量void setVolume(int volume);//设置静音void setMute(bool mute);};#endif // FMODTHREAD_H

Qt编写带频谱的音乐播放器相关推荐

  1. qt 飞扬青云_Qt编写带频谱的音乐播放器

    之前有个项目需要将音频文件的频谱显示出来,想了很多办法,后面发现fmod这个好东西,还是跨平台的,就一个头文件+一个库文件就行,简单小巧功能强大,人家做的真牛逼.为了不卡住界面,采用了多线程处理. 开 ...

  2. 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  3. 用Qt写一个简单的音乐播放器(六):显示歌词(正则表达式)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  4. 用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐

    一.前言 QMediaplayer可以用于解析音频文件和视频文件,继承自QMediaObject,涉及到的对象为QMediaContent.QMediaObject可以提供关于媒体内容的接入,通过UR ...

  5. 基于Qt的仿酷狗音乐播放器设计(二)

    简述 在上一文"基于Qt的仿酷狗音乐播放器设计(一)"中,博主给出了仿酷狗界面的部分内容,在本文中将继续分析酷狗界面,并作出相应的分析. 下面我们来看一下酷狗界面中的左侧滑动页控制 ...

  6. 用Qt写一个简单的音乐播放器(五):歌曲播放时间显示

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  7. 用Qt写一个简单的音乐播放器(七):界面美化(QSS样式表)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  8. 用Qt写一个简单的音乐播放器(四):歌曲浏览、上一曲、下一曲

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  9. 基于Qt的仿酷狗音乐播放器设计(一)

    简述 其实在很早以前博主就有想用Qt写一个比较好的音乐播放器的想法,但由于平时上课的压力和以前对设计模式和代码规范做的不太好,一直没有进行.所以在这个寒假准备好好的设计一下.下面先简单的说明一下设计的 ...

最新文章

  1. WCF入门教程(vs2010)
  2. leetcode10 为什么p[j-1] == '*'的时候,不能用递推公式dp[i][j] = dp[i][j-1] || dp[i][j-2] || dp[i-1][j]
  3. JAVA中文字符串编码--GBK转UTF-8
  4. PMP知识点(七、资源管理)
  5. 用PHP写出显示客户端IP与服务器IP的代码
  6. 485光隔离中继器产品特点及应用领域介绍
  7. 中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台
  8. SQL Server 2005 高级程序设计 学习笔记(2)
  9. 信息学奥赛一本通 1113:不与最大数相同的数字之和 | OpenJudge NOI 1.9 07
  10. Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException
  11. WebLogic plugin for juno下载地址
  12. 二度整理交换机有感(续)
  13. 老罗Android开发视频教程
  14. FileNet入门学习
  15. BZOJ 3505: [Cqoi2014]数三角形|组合数学
  16. QQ空间说说如何批量删除
  17. 关于云计算--openstack
  18. Win 7的50个使用小诀窍
  19. switch两个账号合并_Switch如何绑定任天堂网络ID?
  20. 2021-2022学年广州市113中学七年级第一学期期中英语试题

热门文章

  1. 数据库备份:Xtrabackup实现完全备份及增量备份
  2. 直播写代码,今晚8点见!
  3. 【android opengles开发的一些基础类】
  4. 【文献学习】海上信道系统知识体系详解--附思维导图
  5. 瓷砖铺贴方法_正确的瓷砖铺贴步骤!(全图标示)
  6. 通俗理解STM32 SPI通信(主从双机SPI通信)
  7. C++之适配器(Adapter)模式
  8. 2022年618投影仪保值品牌榜,当贝投影闲鱼保值率排行TOP1
  9. C语言程序设计编辑与调试环境初级(已更完)
  10. javascript利用iframe打印pdf文档失败的问题