qt 飞扬青云_Qt编写带频谱的音乐播放器
之前有個項目需要將音頻文件的頻譜顯示出來,想了很多辦法,后面發現fmod這個好東西,還是跨平臺的,就一個頭文件+一個庫文件就行,簡單小巧功能強大,人家做的真牛逼。為了不卡住界面,采用了多線程處理。
開源主頁:[https://gitee.com/feiyangqingyun](https://gitee.com/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
總結
以上是生活随笔為你收集整理的qt 飞扬青云_Qt编写带频谱的音乐播放器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql同表字段前4位复制_MySQL
- 下一篇: centos上如何装python_cen