易语言API实时录音源码下载(winmm.dll)

[复制链接]
发表于 2023-5-31 09:11:31
Windows的录制过程大致如下:

1 首先检查本机是否有声音输入设备。

2 获取声音输入设备信息

一般上面这两个都不是很需要,毕竟现在大部分电脑都集成了声卡。但从稳定性和通用性的角度来看,还是很有必要的。

3 打开设备,获取设备句柄,传入相应的事件句柄。

4 准备一个异步线程,专用于录制完成后的处理工作,等待事件发生。

5 通过设备句柄为其准备缓冲区

6 通过句柄将准备好的缓冲区添加到设备中

接下来就属于系统的工作了。一般情况下,缓冲区被填满后,会触发一个事件,通知异步线程进行处理。获取到声音信息后,必须重新添加缓冲区才能继续录音。



有时在缓冲区的建立中,一般采用栈分配或堆分配的方法。栈分配内存的销毁过程是通过出栈完成的,不需要用户手动处理。但是在堆分配的时候会遇到麻烦,如下:

waveInPrepareHeader 函数在准备缓冲区时被调用。调用该函数后,为其分配的内存无法通过delete或free释放,因为调用该函数后内存区域被锁定。这时必须调用waveInUnprepareHeader函数解锁,然后释放。

但是在调用waveInPrepareHeader函数后,再调用waveInAddBuffer函数,当缓冲区未满时,尝试使用waveInUnprepareHeader函数解锁,会返回失败代码33。这里的解决方案是在决定释放空间之前先调用一个函数:waveInReset。调用该函数后,可以从waveInAddBuffer函数的限制中释放内存,然后通过waveInUnprepareHeader的常规使用释放,最后调用delete或free释放内存空间。

09113137909[下载].rar

091131f2b979fs52fgs9bf.jpg


上一篇:百度朗读引擎易语言易语言源码
下一篇:易语言酷我音乐下载器源码

使用道具 举报

Archiver|手机版|小黑屋|吾爱开源 |网站地图

Copyright 2011 - 2012 Lnqq.NET.All Rights Reserved( ICP备案粤ICP备14042591号-1粤ICP14042591号 )

关于本站 - 版权申明 - 侵删联系 - Ln Studio! - 广告联系

本站资源来自互联网,仅供用户测试使用,相关版权归原作者所有

快速回复 返回顶部 返回列表