永发信息网

想做一个录音程序

答案:1  悬赏:80  手机版
解决时间 2021-07-29 14:51

想做一个录音程序

没想到刚开始就卡住了。估计是内存分配错误。有高手帮忙解答一下啊

源代码:// mic2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers

#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <stdlib.h>
//加载winmm.lib库和 mmsystem.h头文件
#include <mmsystem.h>
#pragma comment(lib,"winmm")


#define INP_BUFFER_SIZE 16384 //缓存块大小
PBYTE pBuffer1,pBuffer2,pSaveBuffer,pNewBuffer;//缓存块声明
PWAVEHDR pWaveHdr1,pWaveHdr2;//准备块头
WAVEFORMATEX waveform;//音频格式


HWAVEIN hWaveIn;//Handle to the waveform-audio input device.


int main(int argc, char* argv[])
{

///////////////////////////////////////////////
////////////开始录音//////////////////////////
//////////////////////////////////////////////
///////////////准备好缓存块(两个缓存块相互替换)///////////////////
//allocate buffer memory
pBuffer1=(PBYTE)malloc(INP_BUFFER_SIZE);
pBuffer2=(PBYTE)malloc(INP_BUFFER_SIZE);
if (!pBuffer1 || !pBuffer2) {
if (pBuffer1) free(pBuffer1);
if (pBuffer2) free(pBuffer2);
cout<<"分配内存成功"<<endl;
}

//open waveform audo for input

waveform.wFormatTag=WAVE_FORMAT_PCM;
waveform.nChannels=1;
waveform.nSamplesPerSec=11025;
waveform.nAvgBytesPerSec=11025;
waveform.nBlockAlign=1;
waveform.wBitsPerSample=8;
waveform.cbSize=0;


if (waveInOpen(&hWaveIn,WAVE_MAPPER,&waveform,0,NULL,CALLBACK_WINDOW))
{
free(pBuffer1);
free(pBuffer2);
cout<<"打开设备失败"<<endl;
}
pWaveHdr1->lpData=(LPTSTR)pBuffer1;
pWaveHdr1->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr1->dwBytesRecorded=0;
pWaveHdr1->dwUser=0;
pWaveHdr1->dwFlags=0;
pWaveHdr1->dwLoops=1;
pWaveHdr1->lpNext=NULL;
pWaveHdr1->reserved=0;

waveInPrepareHeader(hWaveIn,pWaveHdr1,sizeof(WAVEHDR));

pWaveHdr2->lpData=(LPTSTR)pBuffer2;
pWaveHdr2->dwBufferLength=INP_BUFFER_SIZE;
pWaveHdr2->dwBytesRecorded=0;
pWaveHdr2->dwUser=0;
pWaveHdr2->dwFlags=0;
pWaveHdr2->dwLoops=1;
pWaveHdr2->lpNext=NULL;
pWaveHdr2->reserved=0;

waveInPrepareHeader(hWaveIn,pWaveHdr2,sizeof(WAVEHDR));

//////////////////////////////////////////////////////////////////////////
pSaveBuffer = (PBYTE)realloc (pSaveBuffer, 1) ;//再分配内存
// Add the buffers

waveInAddBuffer (hWaveIn, pWaveHdr1, sizeof (WAVEHDR)) ;
waveInAddBuffer (hWaveIn, pWaveHdr2, sizeof (WAVEHDR)) ;

// Begin sampling

waveInStart (hWaveIn) ;

return 0;

编译通过,不过运行的时候窗口就关闭了。。求解~~~

最佳答案
你好。
很幸运看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
祝你好运~!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么我们上班那么辛苦但老板还是不领情啊
南充离成都多远
摩尔庄园的餐饮礼仪证书可以干什么
龙亭区开封双宇皮鞋商场(中山路店)这个地址在
谁会说韩文 过来帮我翻译下
英雄岛最高等级是多少啊!
手机问题,请高手进来请教
仙剑4女的怎么穿上衣服
关于成教没过的问题
这个电脑配置怎么样,需不需要改进?
鄂城区鄂州法国普丽缇莎专业女子美容美体养生
最好的发泄方法
穿越火线爆头音乐怎么弄出来?悬赏5分 求答案
虎皮鹦鹉太可爱了
帮我起一个和Mvp丶搁浅丨灬差不多意思的名字
推荐资讯
一个手机号码可以绑定二个QQ会员么
学习相关人士的金验
极品邪龙全文在哪可以看到啊 要全集哦!
人类在宇宙能找到第二个地球吗?
蜀门游戏中 宠物是做什么任务来的?
谁知道最近湖南仔猪的价格
振华手机的语音功能软件不小心被删,怎么恢复
我想把那些不认识的人全删掉那种方法快
用partitionmagic 6.0分区时出现错误#4
谚语 婴儿喝汤的后面句是什么
一箱糖果,每10粒装一包或12粒装一包都正好装
超恐怖的鬼片有哪些?要好看的哦
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?