日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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编写带频谱的音乐播放器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。