使用DirectSound进行PCM声音采集
2013-12-23 16:15
225 查看
msdn有directsound函数的讲解,网上有类似流程的例子。我就不说废话了哈,直接说一下步骤, 因为步骤清楚了,自然写起来就不那么费劲了。^ 。^
第一步:初始化 CoInitialize();
第二步:创建一个LPDIRECTSOUNDCAPTURE8类型的设备,我用的DirectSoundCaptureCreate8()
第三步:创建一个LPDIRECTSOUNDCAPTUREBUFFER类型的buffer对象,CreateCaptureBuffer()
第四部:用LPDIRECTSOUNDCAPTUREBUFFER类型的对象,query一个LPDIRECTSOUNDCAPTUREBUFFER8类型的对象。
第五步:
5.1设置提醒事件,就是在什么时间自己可以去缓冲区提取数据。用LPDIRECTSOUNDCAPTUREBUFFER8类型的对象,query一个LPDIRECTSOUNDNOTIFY8类型的对象。
5.2创建时间, createevent()
5.3描述事件的提醒,包含什么时间取数据,以及event的句柄。其类型为DSBPOSITIONNOTIFY。
5.4设置事件提醒,LPDIRECTSOUNDNOTIFY8中的SetNotificationPositions()方法。
第六步:启动录音,LPDIRECTSOUNDCAPTUREBUFFER8的start方法
第七步:对数据进行操作
7.1等待设置事件的发生 :MsgWaitForMultipleObjects
7.2对数据锁操作:LPDIRECTSOUNDCAPTUREBUFFER8中的lock方法
7.3拷贝数据
7.4数据解锁:LPDIRECTSOUNDCAPTUREBUFFER8中的unlock方法
需要注意的是,采集的缓冲是一个环形缓冲区。对数据操作时要加以处理。
网上的很多例子都几乎都一样- -~ 这里给一个参考的网址:http://lgy-047.blog.163.com/blog/static/6134656520139109334568/
第一步:初始化 CoInitialize();
第二步:创建一个LPDIRECTSOUNDCAPTURE8类型的设备,我用的DirectSoundCaptureCreate8()
第三步:创建一个LPDIRECTSOUNDCAPTUREBUFFER类型的buffer对象,CreateCaptureBuffer()
第四部:用LPDIRECTSOUNDCAPTUREBUFFER类型的对象,query一个LPDIRECTSOUNDCAPTUREBUFFER8类型的对象。
第五步:
5.1设置提醒事件,就是在什么时间自己可以去缓冲区提取数据。用LPDIRECTSOUNDCAPTUREBUFFER8类型的对象,query一个LPDIRECTSOUNDNOTIFY8类型的对象。
5.2创建时间, createevent()
5.3描述事件的提醒,包含什么时间取数据,以及event的句柄。其类型为DSBPOSITIONNOTIFY。
5.4设置事件提醒,LPDIRECTSOUNDNOTIFY8中的SetNotificationPositions()方法。
第六步:启动录音,LPDIRECTSOUNDCAPTUREBUFFER8的start方法
第七步:对数据进行操作
7.1等待设置事件的发生 :MsgWaitForMultipleObjects
7.2对数据锁操作:LPDIRECTSOUNDCAPTUREBUFFER8中的lock方法
7.3拷贝数据
7.4数据解锁:LPDIRECTSOUNDCAPTUREBUFFER8中的unlock方法
需要注意的是,采集的缓冲是一个环形缓冲区。对数据操作时要加以处理。
网上的很多例子都几乎都一样- -~ 这里给一个参考的网址:http://lgy-047.blog.163.com/blog/static/6134656520139109334568/
相关文章推荐
- 使用DirectSound进行PCM声音采集
- java使用多线程进行分页数据采集
- 基于Java使用Snmp4j进行监控与采集(snmptrap、snmpwalk、snmpget)
- 在Module中使用自定义过滤器,来统一对站内所有请求响应的输出内容进行采集或更改。
- 使用php laravel进行数据数据采集
- 4.使用DShow采集摄像头图像和麦克风声音到本地(摄像头录制)
- AudioToolbox--利用AudioQueue音频队列,通过缓存对声音进行采集与播放
- 在DevExpress中使用CameraControl控件进行摄像头图像采集
- 使用Snoopy进行模拟登陆、采集
- 在windows系统上使用java代码在ffmpeg环境对音频进行转换wav,pcm,ogg
- 使用google进行关键字搜索的域名采集。
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
- 使用JMF进行视频、音频的采集与实时传送
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
- [转载]使用EasyRTMP的Android版采集AAC音频流进行RTMP推送
- 使用Snoopy进行模拟登陆、采集
- asp.net中使用定时器进行采集数据的思路
- 使用Snoopy进行模拟登陆、采集
- DirectSound播放PCM(可播放实时采集的音频数据)
- Linux服务器使用kettle进行数据采集及入库