CAudioPlayerProc.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef CAUDIOPLAYERPROC_H
  2. #define CAUDIOPLAYERPROC_H
  3. #include <QObject>
  4. #include <QMediaPlayer>
  5. #include <QMediaPlaylist>
  6. #include "portaudio.h"
  7. #include "MixerMicrophoneValue.h"
  8. //wav头的结构如下所示:
  9. typedef struct {
  10. char fccID[4];
  11. unsigned long dwSize;
  12. char fccType[4];
  13. }HEADER;
  14. typedef struct {
  15. char fccID[4];
  16. unsigned long dwSize;
  17. unsigned short wFormatTag;
  18. unsigned short wChannels;
  19. unsigned long dwSamplesPerSec;
  20. unsigned long dwAvgBytesPerSec;
  21. unsigned short wBlockAlign;
  22. unsigned short uiBitsPerSample;
  23. }FMT;
  24. typedef struct {
  25. char fccID[4];
  26. unsigned long dwSize;
  27. }DATA;
  28. class CAudioPlayerProc : public QObject
  29. {
  30. Q_OBJECT
  31. public:
  32. explicit CAudioPlayerProc(QObject *parent = nullptr);
  33. ~CAudioPlayerProc();
  34. int GetMediaDuration(QString sAudio);
  35. void setAudio(QString sAudio);
  36. int playAudio(QString sAudio, bool IsRepeat = false);
  37. void stopPlay();
  38. void pausePlay();
  39. void play();
  40. void setVol(int vol);
  41. void setMicVol(int nVol);
  42. void setHeadSetVol(int nVol);
  43. bool getDeviceinfo(std::string &sName);
  44. bool startRecord(std::string sFile);
  45. bool stopRecord();
  46. bool isRecording();
  47. QString getErrMsg();
  48. static int SAMPLE_RATE;//采样率
  49. static int NUM_CHANNELS; //通道
  50. static int FRAMES_PER_BUFFER;
  51. private slots:
  52. void onMetaDataAvailableChanged(bool available);
  53. signals:
  54. void durationChange(int nSecord);
  55. void audioLoud(int nLoud);
  56. private:
  57. void calcVol(short *p, int nsize);
  58. void setWavHead();
  59. const char* PaGetErrorText(int errorCode);
  60. static int recordCb(
  61. const void *input, void *output,
  62. unsigned long frameCount,
  63. const PaStreamCallbackTimeInfo* timeInfo,
  64. PaStreamCallbackFlags statusFlags,
  65. void *userData );
  66. QMediaPlayer *m_pAudioPlayer;
  67. QMediaPlaylist m_playlist;
  68. FILE *m_RawFile;
  69. PaStreamParameters m_inputParameters;
  70. PaStreamParameters m_outputParameters;
  71. PaStream *m_stream;
  72. QString m_sErrMsg;
  73. static CAudioPlayerProc *pThis;
  74. static int m_Vol;
  75. MixerMicrophoneValue m_mic;
  76. };
  77. extern std::shared_ptr<CAudioPlayerProc> g_audioPalyerPtr;
  78. #endif // CAUDIOPLAYERPROC_H