当前位置: 代码迷 >> 多媒体/流媒体开发 >> 用DirectX 做录音,怎么监控输入的音量波形数据,以生成实时波行图
  详细解决方案

用DirectX 做录音,怎么监控输入的音量波形数据,以生成实时波行图

热度:3142   发布时间:2013-02-26 00:00:00.0
用DirectX 做录音,如何监控输入的音量波形数据,以生成实时波行图?
以前我用   WAV   SDK   写数据的时候,可以通过   waveInOpen   函数,指定一个   callback   function,   这时录制的数据,就可以通过这个   callback   function   获取到,然后经过分析, 可以知道当时音量波数数据,从而在界面上生成实时波形图.就象   windows   自带的那个录音机一样.

我现在在使用   DirectX 制作录音程序.碰到了两个问题:

1.   如果在   DirectX   获取当前录音的音量波形数据, 从而生成实时波形图?我录音的流程是:
Microphone(Sound   card)->   Audio   Compression   ->   AVI   Mux   ->   *.avi

2.   如何监控   Mixer   控件状态的改变? 例如,当用户通过   Windows   的音量调节,将   Microphone   输入改成   Stereo   Mix   输入时, 或者调整了音量的大小时,应用程序会收到一个   MM_MIXM_CONTROL_CHANGE   事件.我现在的控制都是通过 DIREXTX控制的,不想再掺入   Multimedia   SDK   的代码.这部分DirectX   有办法实现么?



------解决方案--------------------------------------------------------
问题1)Audio Compression 之前是pcm数据的样本,你一样可以根据样本值分析生成波谱表
问题2)对volume,同样有事件监控,你可以用Mixer API CALLBACK_EVENT或者CALLBACK_FUNCTION监控,关于DX有没有,我倒是不知道,你可以看看Graph没有向上投递Event
  相关解决方案