您的位置:首页 > 编程语言 > Qt开发

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

2016-04-23 09:03 597 查看
这两种方法都需要在.pro文件中加入multimedia模块。

方法一、使用QAudioOutput

#include <QApplication>
#include <QFile>
#include <QAudioFormat>
#include <QAudioOutput>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile inputFile;
inputFile.setFileName("test.wav");
inputFile.open(QIODevice::ReadOnly);

//设置采样格式
QAudioFormat audioFormat;
//设置采样率
audioFormat.setSampleRate(44100);
//设置通道数
audioFormat.setChannelCount(2);
//设置采样大小,一般为8位或16位
audioFormat.setSampleSize(16);
//设置编码方式
audioFormat.setCodec("audio/pcm");
//设置字节序
audioFormat.setByteOrder(QAudioFormat::LittleEndian);
//设置样本数据类型
audioFormat.setSampleType(QAudioFormat::UnSignedInt);

QAudioOutput *audio = new QAudioOutput( audioFormat, 0);
audio->start(&inputFile);
return a.exec();
}


注意这里采样率、通道数和采样大小的设置,本例只能用来播放无损的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

#include <QApplication>
#include <QSoundEffect>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSoundEffect effect;
effect.setSource(QUrl::fromLocalFile("test.wav"));
//循环播放
effect.setLoopCount(QSoundEffect::Infinite);
//设置音量,0-1
effect.setVolume(0.8f);
effect.play();
return a.exec();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: