首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

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

2012-02-04 
用DirectX 做录音,如何监控输入的音量波形数据,以生成实时波行图?以前我用WAVSDK写数据的时候,可以通过wav

用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

热点排行