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 Phonon模块实现音乐播放器
这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...
- 基于Qt的开源音乐播放器(CZPlayer)
CZPlayer CZPlayer是基于Qt开发的一款功能强大的音乐播放器,该播放器的论坛地址请点击here,目前CZPlayer已经是第四个版本了,历史版本也分别在我的github上, github ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- Qt音乐播放器制作(一)Easy Player
前几天忽然间认为,事到现在Qt的功底也有些基础了,为什么不试着自己做个玩意来玩玩呢?刚好在开源中国逛代码区的时候看到一个QKugou的项目,就想着做一个在线音乐播放器好了. 于是開始着手准备,忙活了一 ...
- html网页音乐播放器自带播放列表
基于网页的音乐播放器demo http://pan.baidu.com/s/1dDgm7HR 自己diy了一个手机端在线音乐播放器演示地址http://shanxi2014.com/zhuandiz ...
- Python调用Windows API函数编写录音机和音乐播放器
功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: 运行界面:
- Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
前言 在ubuntu上实现MPlayer播放器播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...
- 单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器
http://www.amobbs.com/thread-4503884-1-1.html 这个小玩意,采用 ATMEL 的传统51MCU作主控制芯片,加上SD卡和显示屏,就可以作简单的音乐播放器了, ...
- 如何使用 pyqt 实现 Groove 音乐播放器
前言 Win10 自带了一款很好用的音乐播放器 -- Groove 音乐,但是只能支持本地音乐的播放.2020年3月底到4月底,自己一直在学习 PyQt5,然后从 2020年5月开始,着手使用 PyQ ...
随机推荐
- 初步了解学习将传统单机应用改造成Dubbo服务的过程
Dubbo作为RPC框架,实现的效果就是调用远程的方法就像在本地调用一样.如何做到呢?就是本地有对远程方法的描述,包括方法名.参数.返回值,在Dubbo中是远程和本地使用同样的接口:然后呢,要有对网络 ...
- C# POST数据base64到接口会出错的问题
这个base64在requestHeader里面变成了base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH%2BiRVKDkbOmUiKpxW0%2FS6rUgfLmSa527Y ...
- JSON数组,JSON对象,数组的区别与基本操作整理
JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是: ...
- 编译并使用带有OpenCL模块的OpenCV for android SDK
OpenCV Android SDK中提供的静态.动态库是不支持OpenCL加速的,如果在程序中调用OpenCL相关函数,编译时不会报错,但运行时logcat会输出如下信息,提示OpenCL函数不可用 ...
- 【WP8】图片压缩处理
最近在做图片上传功能,类似于微信朋友圈的功能,现在的手机像素都比较高,手机上的图片一般都比较大(几M),对于大图,在上传之前,我们需要对图片进行压缩(分辨率和质量),再上传到服务器,以减少网路流量传输 ...
- tomcat启动时设定环境变量
在tomcat的bin目录中修改startup.bat 设置CATALINA_HOME set "CATALINA_HOME=F:\solr\apache-tomcat\apache-tom ...
- 在ListView中使用GridView, Style这样写:
参考:http://msdn.microsoft.com/zh-cn/library/vstudio/ms788747.aspx 需求,自定义ListView中的滚动条 这岂不是很简单?刷刷刷写完了, ...
- 小企业是否能用得上"ITIL"?
在小型IT部门中,明显存在着迫切的IT管理需求.但目前主流ITSM解决方案的价格.实施周期.复杂程度.对人力资源的占用等使他们难以承受. 浦发机械公司的计算机部经理老张带着十几个员工,经过数年 ...
- go 类型转换
https://studygolang.com/articles/3400 https://studygolang.com/articles/6633
- linux添加PYTHONPATH环境变量
1.添加环境变量到pythonpath export PYTHONPATH=$PYTHONPATH:/home/myproject 查看pythonpathecho $PYTHONPATH 可以进入p ...