一个简单的问题,录音的api是什么呀

sealaugh1980 2003-08-21 03:10:14
我现在正在用vc做程序,想实现录音功能,就是用声卡的mic实现录音,但不知录音的api是什么,请知情者告诉我,不胜感激,100分奉上!!
...全文
115 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanyaliji 2003-08-27
  • 打赏
  • 举报
回复
MCI_RECORD_PARMS RecordParms;
mciSendCommand (m_wDeviceID, MCI_RECORD,NULL, (DWORD)(LPVOID)&RecordParms);
homey123 2003-08-26
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/listcode.asp?mclsid=7&sclsid=707
homey123 2003-08-26
  • 打赏
  • 举报
回复
waveInAddBuffer 向波形输入设备添加一个输入缓冲区
WaveInClose 关闭指定的波形输入设置
waveInGetDevCaps 查询指定的波形输入设备以确定其性能
waveInGetErrorText 检取由指定的错误代码标识的文本说明
waveInGetID 获取指定的波形输入设备的标识符
waveInGetNumDevs 返回系统中存在的波形输入设备的数量
waveInGetPosition 检取指定波形输入设备的当前位置
waveInMessage 发送一条消息给波形输入设备的驱动器
waveInOpen 为录音而打开一个波形输入设备
waveInPrepareHeader 为波形输入准备一个输入缓冲区
waveInReset 停止给定的波形输入设备的输入,且将当前位置清零
waveInStart 启动在指定的波形输入设备的输入
waveInStop 停止在指定的波形输入设备上的输入
waveInUnprepareHeader 清除由waveInPrepareHeader函数实现的准备


waveOutBreakLoop 中断给定的波形输出设备上一个循环,并允许播放驱动器列表中的下一个块
waveOutClose 关闭指定的波形输出设备
waveOutGetDevCaps 查询一个指定的波形输出设备以确定其性能
waveOutGetErrorText 检取由指定的错误代码标识的文本说明
waveOutGetID 检取指定的波形输出设备的标识符
waveOutGetNumDevs 检取系统中存在的波形输出设备的数量
waveOutGetPitch 查询一个波形输出设备的当前音调设置
waveOutGetPlaybackRate 查询一个波形输出设备当前播放的速度
waveOutGetPosition 检取指定波形输出设备的当前播放位置
waveOutGetVolume 查询指定波形输出设备的当前音量设置
waveOutMessage 发送一条消息给一个波形输出设备的驱动器
waveOutOpen 为播放打开一个波形输出设备
waveOutPause 暂停指定波形输出设备上的播放
waveOutPrepareHeader 为播放准备一个波形缓冲区
waveOutRestart 重新启动一个被暂停的波形输出设备
waveOutSetPitch 设置一个波形输出设备的音调
waveOutSetPlaybackRate 设置指定波形输出设备的速度
waveOutSetVolume 设置指定的波形输出设备的音量
waveOutUnprepareHeader 清除由waveOutPrepareHeader函数实现的准备
waveOutWrite 向指定的波形输出设备发送一个数据块
homey123 2003-08-26
  • 打赏
  • 举报
回复
录音通常都是使用 waveInXXX 一类 API 的,最主要的是 waveInStart (顾名思义就是开始录音),然后是 waveInStop(它能够在你指定的缓冲满的时候返回) ; 如果不用 waveInStop 可以使用 waveInReset(不同于Stop的是该函数不等缓冲满就马上返回那样你才可以终止录音),不过最好跟 waveInGetPosition 配合使用。

说完这些函数,不得不提的是为以上几个函数做准备工作的函数(注意配对使用), waveInOpen 和 waveInClose 配对( waveInOpen 里面指定音频的格式,比方说立体声 和16位音质等); waveInPrepareHeader 和 waveInUnprepareHeader 配对( waveInPrepareHeader 里面指定用来录音缓冲的大小和首地址),紧跟着 waveInPrepareHeader要例行公事调用 waveInAddBuffer( 作用未详,不多说了)。

详细调用过程可以看下面


之前最好调用 waveInGetNumDevs 看看有没有可用的设备)

waveInOpen (该处用 WAVEFORMATEX 结构指定音频格式)



waveInPrepareHeader (该处用 WAVEHDR 结构的 lpData 成员指定缓冲首地址)

waveInAddBuffer



waveInStart

(录制中....)

waveInStop (warning:一定要缓冲满了才返回)



waveInUnprepareHeader



waveInClose

几个重要的结构

//波形格式
typedef struct {
WORD wFormatTag; //编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等,更多的音频格式在MMReg.h文件中
WORD nChannels; //声道数,Monaural用1个,stereo用2个
DWORD nSamplesPerSec; //采样频率
DWORD nAvgBytesPerSec; //每秒数据量
WORD nBlockAlign; //块对其
WORD wBitsPerSample; //Wave文件的采样大小(Bit位)
WORD cbSize;
} WAVEFORMATEX;


Windows低层波形音频数据块结构 WAVEHDR
typedef struct {
LPSTR lpData; //指向锁定的数据缓冲区的指针
DWORD dwBufferLength; //数据缓冲区的大小
DWORD dwBytesRecorded; //录音时指明缓冲区中的数据量
DWORD_PTR dwUser; //用户数据
DWORD dwFlags; //提供缓冲区信息的标志
DWORD dwLoops; //循环播放的次数
struct wavehdr_tag * lpNext; //保留
DWORD_PTR reserved; //保留
} WAVEHDR;
u2m 2003-08-25
  • 打赏
  • 举报
回复
wave开头的一系列函数
NeoBean 2003-08-25
  • 打赏
  • 举报
回复
MS Windows 提供一套低级的录音函数,你可以看看msdn关于

waveInXXXXX(...)
^^^^^功能

的介绍。
sealaugh1980 2003-08-25
  • 打赏
  • 举报
回复
我知道播放声音的api是PlaySound,有没有与之相对的RecordSound函数????
akiko 2003-08-21
  • 打赏
  • 举报
回复
MCI_RECORD_PARMS RecordParms;
mciSendCommand (m_wDeviceID, MCI_RECORD,NULL, (DWORD)(LPVOID)&RecordParms);
papaya_stone 2003-08-21
  • 打赏
  • 举报
回复
MSDN中查:MCI Commands

MCI_RECORD

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧