qt录音--raw(pcm)文件转换wav文件
来源:互联网 发布:临沂知豆电动汽车 编辑:程序博客网 时间:2024/05/22 07:01
转载:http://blog.sina.com.cn/s/blog_671732440100xk46.html
Qt录音需要用到#include <QtMultimedia/QAudioInput>
void ***::***()
{
}
void ***::stopRecording()
{
}
然后播放的时候,可以把raw文件加个文件头,变成wav文件
typedef struct
{
}HEADER;
typedef struct
{
}FMT;
typedef struct
{
}DATA;
//转换文件为wav
HEADER pcmHEADER;
FMT pcmFMT;
DATA pcmDATA;
unsigned long m_pcmData;
FILE *fp, *fpCopy;
fp = fopen("a.raw", "rb");
fpCopy = fopen("a.wav", "wb+");
if(!fp)
{
}
if(!fpCopy)
{
}
qstrcpy(pcmHEADER.fccID, "RIFF");
qstrcpy(pcmHEADER.fccType, "WAVE");
fseek(fpCopy, sizeof(HEADER), 1);
pcmFMT.dwSamplesPerSec = 8000;
pcmFMT.dwAvgBytesPerSec = pcmFMT.dwSamplesPerSec*sizeof(m_pcmData);
pcmFMT.uiBitsPerSample = 16;
qstrcpy(pcmFMT.fccID, "fmt ");
pcmFMT.dwSize = 16;
pcmFMT.wBlockAlign = 4;
pcmFMT.wChannels = 2;
pcmFMT.wFormatTag = 1;
fwrite(&pcmFMT, sizeof(FMT), 1, fpCopy);
qstrcpy(pcmDATA.fccID, "data");
pcmDATA.dwSize = 0;
fseek(fpCopy, sizeof(DATA), 1);
fread(&m_pcmData, sizeof(unsigned long), 1, fp);
while(!feof(fp))
{
}
fclose(fp);
pcmHEADER.dwSize = 44+pcmDATA.dwSize-8; //根据pcmDATA.dwsize得出pcmHEADER.dwsize的值
rewind(fpCopy); //将fpCpy变为.wav的头,以便于写入HEADER和DATA;
fwrite(&pcmHEADER, sizeof(HEADER), 1, fpCopy); //写入HEADER
fseek(fpCopy, sizeof(FMT), 1); //跳过FMT,因为FMT已经写入
fwrite(&pcmDATA, sizeof(DATA), 1, fpCopy); //写入DATA;
fclose(fpCopy)
0 0
- qt录音--raw(pcm)文件转换wav文件
- Qt之实现录音播放及raw(pcm)转wav格式
- Qt之实现录音播放及raw(pcm)转wav格式
- 将PCM数据转换成WAV文件
- WAV和PCM文件转换的程序
- 【Android】AudioRecord--录音并将 PCM文件转为WAV
- pcm写入wav文件
- Raw PCM转换为wav格式
- PCM文件转WAV文件
- PCM文件转WAV文件
- PCM文件转WAV文件
- Ruby 操作二进制文件,wav与pcm文件转换
- PCM数据合成WAV文件
- PCM数据合成WAV文件
- PCM数据转WAV文件
- 控制台录音生成wav文件
- java wav文件转pcm文件
- wave文件(*.wav)格式、PCM数据格式
- 模拟和HTML5的ploceholder的效果
- mac下eclipse配置svn的方法
- onbeforeunload与onunload事件
- Hibernate 中的主健 ID 映射配置问题
- win7 mysql数据库安装于vc6.0下数据库调用
- qt录音--raw(pcm)文件转换wav文件
- 普通模式匹配
- .NET 数据库连接和查询
- linux常用操作指令
- 【笔记(2)】批量将数据导入新建phpcms模型中去
- 九度_题目1366:栈的压入、弹出序列
- 跳河的兔子是因为胆小吗
- Java中实现文件复制(servlet)
- Mat 里面的 cols 和 rows