解决acmFormatSuggest函数报错的问题

来源:互联网 发布:知乎年度吐槽精选5 编辑:程序博客网 时间:2024/05/08 16:11

在处理acm对ADPCM编码进行解码时调用acmFormatSuggest报错,在网上搜了一下,找到了解决方案。

以下摘自:http://hi.baidu.com/leexeo/blog/item/4a8c9258d35422d59d82044e.html

 

昨天晚上遇到一个很头疼的问题,因为播放上有了一点问题,所以我把原来安装的K-Lite卸载,因为在下载东西所以没有立刻重启。本来以为没 什么问题,然而用了一会QQ后,问题来了,突然发现别人给我发消息的时候没有提示音了,怎么回事?于是打开QQ系统文件夹看提示音,播放了一 下,MSG.WAV确实没声音。奇怪的是其他几个提示音却有正常,于是直接打开文件尝试播放,问题来了:除了MSG.WAV以外的文件用WMP打开均正 常,而MSG.WAV用WMP打开提示解码错误。奇怪了,WAV怎么可能解码出错的?于是又尝试用GoldWave打开,失败,依然提示解码错误。不死心, 换用Foobar打开,依然提示错误,不过有进步的是,提示信息给出了ACM解码器缺失的错误信息。ACM?那不是windows自带的解码器吗?难道是 系统自带得WAV解码器丢失了?于是察看系统的音频解码器,果然少了不少。于是在网上找了一下系统自带解码器的下载,发现没有……于是绝望之下搜了一下系 统,发现那几个缺少的解码器原来文件还在,应该只是在注册表中被unreg了。这样就好办多了,写了个reg文件,将这些文件重新注册,重启了一下,问题 解决。

注册表文件内容如下://本人修改版

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Drivers32]
"vidc.mrle"="msrle32.dll"
"vidc.msvc"="msvidc32.dll"
"msacm.imaadpcm"="imaadp32.acm"
"msacm.msg711"="msg711.acm"
"msacm.msgsm610"="msgsm32.acm"
"msacm.msadpcm"="msadp32.acm"
"midimapper"="midimap.dll"
"wavemapper"="msacm32.drv"
"vidc.uyvy"="msyuv.dll"
"vidc.yuy2"="msyuv.dll"
"vidc.yvyu"="msyuv.dll"
"vidc.iyuv"="iyuv_32.dll"
"vidc.i420"="iyuv_32.dll"
"vidc.yvu9"="tsbyuv.dll"
"msacm.l3acm"="C://Windows//System32//l3codeca.acm"
"vidc.cvid"="iccvid.dll"
"wave1"="wdmaud.drv"
"midi1"="wdmaud.drv"
"mixer1"="wdmaud.drv"
"wave2"="wdmaud.drv"
"midi2"="wdmaud.drv"
"mixer2"="wdmaud.drv"
"msacm.siren"="sirenacm.dll"
"VIDC.XVID"="xvidvfw.dll"
"VIDC.YV12"="yv12vfw.dll"
"msacm.ac3acm"="ac3acm.acm"
"msacm.lameacm"="lameACM.acm"
"VIDC.FFDS"="ff_vfw.dll"
"wave"="wdmaud.drv"
"midi"="wdmaud.drv"
"mixer"="wdmaud.drv"
"aux"="wdmaud.drv"

 

将以上信息保存成.reg文件,双击运行下就可以解决问题了。