WEB开发网
开发学院软件开发VC 基于API的录音机程序 阅读

基于API的录音机程序

 2010-07-15 20:45:10 来源:WEB开发网   
核心提示:Wave_audio数据格式typedef struct {WORDwFormatTag; //数据格式,一般为WAVE_FORMAT_PCM即脉冲编码WORDnChannels; //声道DWORD nSamplesPerSec; //采样频率DWORD nAvgBytesPerSec; //每秒数据量WORDnBl

Wave_audio数据格式

typedef struct {
  WORD wFormatTag; //数据格式,一般为WAVE_FORMAT_PCM即脉冲编码
  WORD nChannels; //声道
  DWORD nSamplesPerSec; //采样频率
  DWORD nAvgBytesPerSec; //每秒数据量
  WORD nBlockAlign;
  WORD wBitsPerSample;//样本大小
  WORD cbSize;
} WAVEFORMATEX;

waveform-audio 缓存格式 

typedef struct {
  LPSTR lpData; //内存指针
  DWORD dwBufferLength;//长度
  DWORD dwBytesRecorded; //已录音的字节长度
  DWORD dwUser;
  DWORD dwFlags;
  DWORD dwLoops; //循环次数
  struct wavehdr_tag * lpNext;
  DWORD reserved;
} WAVEHDR;

相关消息

MM_WIM_OPEN:打开设备时消息,在此期间我们可以进行一些初始化工作
MM_WIM_DATA:当缓存已满或者停止录音时的消息,处理这个消息可以对缓存进行重新分配,实现不限长度录音
MM_WIM_CLOSE:关闭录音设备时的消息。

相对于录音来说,回放就简单的多了,用到的函数主要有以下几个:

打开回放设备

MMRESULT waveOutOpen(
 LPHWAVEOUT phwo,
 UINT uDeviceID,
 LPWAVEFORMATEX pwfx,
 DWORD dwCallback,
 DWORD dwCallbackInstance,
 DWORD fdwOpen
);

为回放设备准备内存块

MMRESULT waveOutPrepareHeader(
 HWAVEOUT hwo,
 LPWAVEHDR pwh,
 UINT cbwh
);

写数据(放音)

MMRESULT waveOutWrite(
 HWAVEOUT hwo,
 LPWAVEHDR pwh,
 UINT cbwh
);

相应的也有三个消息,用法跟录音的类似:

Tags:基于 API 录音机

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接