Qt由pcm数据生成wav文件

void AudioGrabber::saveWave(const QString &fileName, const QByteArray &raw, const QAudioFormat &format)
{
typedef struct{
char riff_fileid[4];//"RIFF"
DWORD riff_fileLen;
char waveid[4];//"WAVE"
char fmt_chkid[4];//"fmt"
DWORD fmt_chkLen;
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo, etc.) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample;
char data_chkid[4];//"DATA"
WORD data_chkLen;
}WaveHeader;
WaveHeader wh={0};
strcpy(wh.riff_fileid, "RIFF");
wh.riff_fileLen = raw.length() + 32;
strcpy(wh.waveid, "WAVE");
strcpy(wh.fmt_chkid, "fmt ");
wh.fmt_chkLen = 16;
wh.wFormatTag = WAVE_FORMAT_PCM;
wh.nChannels = format.channels();
wh.nSamplesPerSec = format.frequency();
wh.wBitsPerSample = format.sampleSize();
wh.nBlockAlign =wh.nChannels*wh.wBitsPerSample/8;
wh.nAvgBytesPerSec = wh.nBlockAlign*wh.nSamplesPerSec;
strcpy(wh.data_chkid, "data");
wh.data_chkLen = raw.length();
QFile f(fileName);
f.open(QFile::WriteOnly);
f.write((char *)&wh, sizeof(wh));
f.write(raw);
f.close();
}
Qt由pcm数据生成wav文件的更多相关文章
- pcm数据生成wav文件
Qt由pcm数据生成wav文件 void AudioGrabber::saveWave(const QString &fileName, const QByteArray &raw, ...
- C#中使用WavHelper保存录音数据为wav文件
C#将录音数据文件保存为wav格式文件,这里使用到的是WavHelper工具类. WavHelper工具类: using System; using System.Collections.Generi ...
- matlab结构体形式保存数据生成.mat文件< 转>
2015年 参加天池大数据竞赛 为了建立模型,打算基于matlab使用Random Forest Algorithm的工具包 该工具包我在此分享给大家,http://yunpan.cn/cVX ...
- WAV相关:从PCM16 Little Endian数据转WAV文件
数据格式 [0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 5.960464477539063e-08, 5.960464477539063e-08, 1.19209289550781 ...
- 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...
- java将数据生成csv文件
1,httpRequest接口触发进程[或者可以换成其他方式触发] /** * 出入库生成CSV文件 * @param req * @param params * @return */@Request ...
- Python数据生成pdf文件
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- 从一个PHP数据生成 CSV 文件
这的确是一个很简单的功能,从一个PHP数组生成一个.csv文件.此函数使用 fputcsv PHP 内置函数 <? function generateCsv($data, $delimiter ...
- java实现点击查询数据生成excel文件并下载
须先导入关键maven包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi& ...
随机推荐
- HDU2186
2019-05-30 19:31:10 水题 #include <bits/stdc++.h> using namespace std; int main() { int c; scanf ...
- CDH版Phoenix的安装(图文详解)
不多说,直接上干货! 写在前面的话 我这里,四个节点的bigdata集群.分别为cmbigdata1.cmbigdata2.cmbigdata3和cmbigdata4. https://i.cnblo ...
- HTML+CSS(10)
n 组合选择器 多元素选择器 n 描述:给多个元素加同一个样式,多个选择器之间用逗号隔开. n 举例:h1,p,div,body{color:red;} 后代元素选择器(最常用) n 描述:给 ...
- CentOS 安装dotNetCore
如果要在CentOS上运行.net Core程序,必须安装.net Core Sdk 具体安装 方法,可以参考微软官方站点说明,非常详细: 1)百度搜索 .Net Core 2)先择CentOS版本: ...
- winxp精简版没有IIS的解决办法
首先在“开始”菜单的“运行”中输入“c:\Windows\inf\sysoc.inf”,系统会自动使用记事本打开sysoc.inf这个文件.在sysoc.inf中找到“[Components]”这一段 ...
- Glitch-free clock switch
With multi-frequency clocks being used in today’s devices, it's necessary to switch the source of a ...
- dubbo之泛化实现
实现泛化调用 泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 Gene ...
- VS2012 +OpenCv2.4.4配置
使用OpenCV少了数据读取.填充.存储的麻烦. 转载于opencv官网:对于2010和2.43的配置可以直接挪用到新配置环境 http://www.opencv.org.cn/index.php/V ...
- CorelDRAW记事本写实图标的制作流程
本篇教程用CorelDRAW快速制作记事本写实图标,在制作的过程中主要使用了位图填充和金属材质的实现,加之一些常用工具的用法处理,最后将对象剪裁至图文框就好了,现在跟小编一起来看看详细的操作吧! 使用 ...
- 使用Java生成具有安全哈希的QR码
这是关于如何在Java中使用salt生成QR代码和安全散列字符串的分步教程. 首先,需要一个可以处理QR码的库,我决定使用Zebra Crossing("ZXing")库,因为它简 ...