Qt播放WAV格式音频文件的两种方法

来源:互联网 发布:泗阳12345网络问政 编辑:程序博客网 时间:2024/05/18 18:20
这两种方法都需要在.pro文件中加入multimedia模块。

方法一、使用QAudioOutput

[cpp] view plain copy
print?
  1. #include <QApplication>  
  2. #include <QFile>  
  3. #include <QAudioFormat>  
  4. #include <QAudioOutput>  
  5.   
  6. int main(int argc, char *argv[])  
  7. {  
  8.     QApplication a(argc, argv);  
  9.     QFile inputFile;  
  10.     inputFile.setFileName("test.wav");  
  11.     inputFile.open(QIODevice::ReadOnly);  
  12.   
  13.     //设置采样格式  
  14.     QAudioFormat audioFormat;  
  15.     //设置采样率  
  16.     audioFormat.setSampleRate(44100);  
  17.     //设置通道数  
  18.     audioFormat.setChannelCount(2);  
  19.     //设置采样大小,一般为8位或16位  
  20.     audioFormat.setSampleSize(16);  
  21.     //设置编码方式  
  22.     audioFormat.setCodec("audio/pcm");  
  23.     //设置字节序  
  24.     audioFormat.setByteOrder(QAudioFormat::LittleEndian);  
  25.     //设置样本数据类型  
  26.     audioFormat.setSampleType(QAudioFormat::UnSignedInt);  
  27.   
  28.     QAudioOutput *audio = new QAudioOutput( audioFormat, 0);  
  29.     audio->start(&inputFile);  
  30.     return a.exec();  
  31. }  

        注意这里采样率、通道数和采样大小的设置,本例只能用来播放无损的WAV。网上很多代码将采样率设置成8000、通道数设置为1、采样大小设置为8,这样虽然也能播放WAV,但是没有任何其他说明,也没提供播放所用的WAV文件,导致很多童鞋在网上找个WAV,播放时出现“嗡嗡”声,根本听不清。

        “什么是无损”参考:http://blog.csdn.NET/caoshangpa/article/details/51218597

        “如何下载和制作无损WAV”参考:http://blog.csdn.net/caoshangpa/article/details/51218994

方法二、使用QSoundEffect

[cpp] view plain copy
print?
  1. #include <QApplication>  
  2. #include <QSoundEffect>  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     QApplication a(argc, argv);  
  6.     QSoundEffect effect;  
  7.     effect.setSource(QUrl::fromLocalFile("test.wav"));  
  8.     //循环播放  
  9.     effect.setLoopCount(QSoundEffect::Infinite);  
  10.     //设置音量,0-1  
  11.     effect.setVolume(0.8f);  
  12.     effect.play();  
  13.     return a.exec();  
  14. }  


from:http://blog.csdn.net/caoshangpa/article/details/51224587

原创粉丝点击