实现录音和播放 使用wave系列函数

1 头文件

class TVoiceRecord
{
  public:
	TVoiceRecord(AnsiString path);
	~TVoiceRecord();
	int RecordOpen();//打开录音设备
	int RecordStart();//开始录音
	void RecordStop();//停止录音
	bool RecordPlay();//播放声音
	bool RecordSave(DWORD dwParam2);//保存
	void STopPlay();
	BOOL  bEnding;
    HANDLE Handle;
private:
	HWAVEIN hWaveIn;
	HWAVEOUT hWaveOut;

	PBYTE pBuffer1,pBuffer2,pSaveBuffer,pNewBuffer;

	PWAVEHDR pWaveHdr1,pWaveHdr2; //音频数据块缓存结构体

	WAVEFORMATEX waveform;

	DWORD dwDataLength;
	AnsiString FilePath;//文件保存路径
};

cpp
//---------------------------------------------------------------------------


#pragma hdrstop
#include<stdlib.h>


#include <Classes.hpp>
#include "uVoiceRecord.h"


//---------------------------------------------------------------------------
short g_RecordvoiceVal;
#pragma package(smart_init)
#define INP_BUFFER_SIZE 2048
//MM_WIM_OPEN:打开设备时消息,在此期间我们可以进行一些初始化工作
//MM_WIM_DATA:当缓存已满或者停止录音时的消息,处理这个消息可以对缓存进行重新分配,实现不限长度录音
//MM_WIM_CLOSE:关闭录音设备时的消息
//MM_WIM_DONE  一个缓冲区播放完毕后调用
//(MM_WIM_OPEN,MM_WIM_DATA,MM_WIM_CLOSE,MM_WIM_DONE) 对应窗体事件,若选择CALLBACk_FUNCTION,则消息为wim_

bool CALLBACK VoiceWaveInProc(HWAVEIN hwi, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);

TVoiceRecord::TVoiceRecord(AnsiString path)
{
	dwDataLength=0;
	pWaveHdr1=reinterpret_cast<PWAVEHDR>(malloc(sizeof(WAVEHDR)));
	pWaveHdr2=rei
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值