Qt播放WAV格式音频文件的两种方法
来源:互联网 发布:泗阳12345网络问政 编辑:程序博客网 时间:2024/05/18 18:20
这两种方法都需要在.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();
- }
from:http://blog.csdn.net/caoshangpa/article/details/51224587
阅读全文
0 0
- Qt播放WAV格式音频文件的两种方法
- Qt播放WAV格式音频文件的两种方法
- html/Javascript播放WAV音频文件的方法
- 用C#来播放.wav格式的音频文件
- 用C#来播放.wav格式的音频文件
- 在java程序中播放以.wav格式的音频文件
- 用 Qt 的 QAudioOutput 类播放 WAV 音频文件
- byte[]数组播放wav格式音频文件
- qt 用QSound播放WAV音频文件
- qt 用QSound播放WAV音频文件
- OpenAL播放WAV音频文件
- MFC播放wav音频文件
- WAV音频文件格式
- wav音频文件格式分析
- wav音频文件格式解析
- wav音频文件格式解析
- 简单的java 播放音频文件方法 (支持音频格式 wav mid aif)
- Windows下播放WAV音频文件
- 解决Android版本更新,安装失败
- react native 更新后packager启动失败:SyntaxError: Unexpected token ...
- Android Event bus 消息/事件通信框架介绍和应用,以及与handle message和broadcastreceiver之间的比较
- STM32 内部时钟输出PA.8(MCO)
- gcd崩溃系统堆栈等,iOS性能相关度量技术,很不错,备查。
- Qt播放WAV格式音频文件的两种方法
- 每日一题(28)—— 引用与指针的区别
- 5. Zookeeper精要-Zookeeper Watches
- SpringBoot 启动服务器失败 报错 spring-boot Failed to start component [StandardServer[-1]]
- Java replaceAll()方法报错Illegal group reference
- truncate/delete/drop的区别?
- Android系统移植
- Mouse without Borders – 用一套鼠标/键盘控制四台电脑
- react 动态操作className