EVC录音详解
来源:互联网 发布:mac mpv 安装教程 编辑:程序博客网 时间:2024/05/21 06:32
//===========================================
//TITLE:
// EVC录音详解
//AUTHOR:
// norains
//DATE:
// Friday 9-June-2006
//===========================================
借助evc在wince下实现录音不是一件难事.恩,的确不是一件难事.本文主要解释如何使用wavein,并且把声音以wave文件形式保存到储存器中.
最先,我们要分配两个缓冲区.因为数据首先要保存到内存中,两个内存缓存区间可以较快进行切换,可以避免录音有断断续续的现象.
接下来需要设置录音的方式,需要用到WAVEFORMATEX结构.声道数,采样位和采样率都可以在这结构中设置.
设置完毕之后,就可以用waveInOpen函数打开输入设备.
设备可以打开后,就需要初始化两个输入缓存区的声音文件头了.声音文件头主要是在录音时,记录相关的数据,以方便后期的处理.
在对PWAVEHDR进行赋值时,本程序中需要设置的其实只有lpData和dwBufferLength.接下来将pWaveHdr2同pWaveHdr1进行相关处理(略).
由于我们是要将录音数据以文件形式保存到非易失性存储器上,所以在开始录音之前我们需要先建立文件,并且把相关的文件头信息写入(WriteWaveFileHeader是自写函数,代码附在文章最后).
一切准备就绪之后,就可以调用函数waveInStart()来进行真正的录音了:
waveInStart(hWaveIn);
在录音过程中,有三个回调函数系统会自动调用,分别是:OnMM_WIM_OPEN(),OnMM_WIM_DATA()和OnMM_WIM_CLOSE().顾名思义,这三个函数分别在这三种情况下调用:开始录音时;缓冲区用完时;录音关闭时.其中OnMM_WIM_OPEN()和OnMM_WIM_CLOSE()只调用一次.本程序最重要是对OnMM_WIM_DATA()函数进行处理.
相关代码如下:
录音完毕则调用OnMM_WIM_CLOSE(),我们在此函数体里进行相关的收尾清除工作
至此,整个录音程序结束.
附录:相关文件函数
- EVC录音详解
- EVC录音详解
- EVC
- Linux录音详解
- WP8录音详解
- Linux录音详解
- android MediaRecorder录音详解
- IOS录音方法详解
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 【转】Spartan-3 DCM使用详解
- Software Testing challenges in the Iterative lifecycle models
- Asp.net WEB 程序员学习计划
- Software Testing challenges in the Spiral Lifecycle model
- USACO1.1.1 Your Ride Is Here
- EVC录音详解
- hello
- 关于代码重定位问题
- Concepts for English interview (Unfinished)
- CToolBar的使用总结(2)
- 谁是谁的谁 写的真的很美
- 个人闪回技术小结
- 缺乏实践与新知识的无奈
- SQL 汉字转换拼音首字母