2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > qt 飞扬青云_Qt编写带频谱的音乐播放器

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

时间:2019-09-12 06:30:13

相关推荐

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

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

开源主页:[/feiyangqingyun](/feiyangqingyun)

1:可获取整个声音文件采样值数据

2:可实时获取当前播放位置的采样值数据

3:可设置采样的步长和数量

4:可开始播放/暂停播放/停止播放

5:多线程处理,超流畅

6:可设置当前播放位置

7:可设置音量

#ifndef FMODTHREAD_H

#define FMODTHREAD_H

/**

* 1:可获取整个声音文件采样值数据

* 2:可实时获取当前播放位置的采样值数据

* 3:可设置采样的步长和数量

* 4:可开始播放/暂停播放/停止播放

* 5:多线程处理,超流畅

* 6:可设置当前播放位置

* 7:可设置音量

*/

#include

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 &waveData);

//当前声音所有采样值数据

void waveDataAllReceive(const QVector &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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。