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

来源:互联网 发布:淘宝网怎么下载 编辑:程序博客网 时间:2024/05/18 20:46

        这两种方法都需要在.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();}


11 0
原创粉丝点击