Qt编写带频谱的音乐播放器
之前有个项目需要将音频文件的频谱显示出来,想了很多办法,后面发现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编写带频谱的音乐播放器相关推荐
- qt 飞扬青云_Qt编写带频谱的音乐播放器
之前有个项目需要将音频文件的频谱显示出来,想了很多办法,后面发现fmod这个好东西,还是跨平台的,就一个头文件+一个库文件就行,简单小巧功能强大,人家做的真牛逼.为了不卡住界面,采用了多线程处理. 开 ...
- 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 用Qt写一个简单的音乐播放器(六):显示歌词(正则表达式)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐
一.前言 QMediaplayer可以用于解析音频文件和视频文件,继承自QMediaObject,涉及到的对象为QMediaContent.QMediaObject可以提供关于媒体内容的接入,通过UR ...
- 基于Qt的仿酷狗音乐播放器设计(二)
简述 在上一文"基于Qt的仿酷狗音乐播放器设计(一)"中,博主给出了仿酷狗界面的部分内容,在本文中将继续分析酷狗界面,并作出相应的分析. 下面我们来看一下酷狗界面中的左侧滑动页控制 ...
- 用Qt写一个简单的音乐播放器(五):歌曲播放时间显示
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 用Qt写一个简单的音乐播放器(七):界面美化(QSS样式表)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 用Qt写一个简单的音乐播放器(四):歌曲浏览、上一曲、下一曲
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
- 基于Qt的仿酷狗音乐播放器设计(一)
简述 其实在很早以前博主就有想用Qt写一个比较好的音乐播放器的想法,但由于平时上课的压力和以前对设计模式和代码规范做的不太好,一直没有进行.所以在这个寒假准备好好的设计一下.下面先简单的说明一下设计的 ...
最新文章
- WCF入门教程(vs2010)
- leetcode10 为什么p[j-1] == '*'的时候,不能用递推公式dp[i][j] = dp[i][j-1] || dp[i][j-2] || dp[i-1][j]
- JAVA中文字符串编码--GBK转UTF-8
- PMP知识点(七、资源管理)
- 用PHP写出显示客户端IP与服务器IP的代码
- 485光隔离中继器产品特点及应用领域介绍
- 中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台
- SQL Server 2005 高级程序设计 学习笔记(2)
- 信息学奥赛一本通 1113:不与最大数相同的数字之和 | OpenJudge NOI 1.9 07
- Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException
- WebLogic plugin for juno下载地址
- 二度整理交换机有感(续)
- 老罗Android开发视频教程
- FileNet入门学习
- BZOJ 3505: [Cqoi2014]数三角形|组合数学
- QQ空间说说如何批量删除
- 关于云计算--openstack
- Win 7的50个使用小诀窍
- switch两个账号合并_Switch如何绑定任天堂网络ID?
- 2021-2022学年广州市113中学七年级第一学期期中英语试题