[已解决]别人的程序可以播放的声音,电脑播放器播放不了。
本帖最后由 haijie1223 于 2012-3-27 14:19 编辑如题:本来是看到别人的一个有声计算器,觉得可能是内置声音,然后释放出来。于是乎从临时文件中提取到这些wav文件,但是播放时嗤嗤啦啦,听不清。用计算器播放却很正常。
所有文件都在下面地址中。请自行测试。
http://115.com/file/c2uni356#
有声语音计算机.rar
放了好几天了,没人解决。没办法,请版主拖到无意义问题区吧 可能是还却点什么东西吧,,期待答案{:face (396):} 再顶一下如果两天内还没有人回答,请版主关闭吧 请版主关闭帖子吧,看来是没有办法解决的。 回复 4# haijie1223
呵,人那些声频文件本身就这样的
你找个发音好的wav文件就行了嘛 回复 5# happytc
但是人家的程序为什么调用的时候发音都很好呢,肯定有什么地方没搞明白。人家的程序能把这种wav读的非常好。所以想研究一下方法。 回复 6# haijie1223
可能别人为了防止别人直接拷wav文件而修改下wav的某些字节,调用再还原
所以别人用的正常。
因为直接用播放器放这些文件就是有你在一楼说的问题
所以最简单的办法就是重新找好用的wav的文件,要不,你自己录几个更显个性了 回复haijie1223
可能别人为了防止别人直接拷wav文件而修改下wav的某些字节,调用再还原...
happytc 发表于 2012-3-27 13:09 http://www.autoitx.com/images/common/back.gif
我想也是这样吧。。。 回复 7# happytc
这是目前最好的解释了 happytc 发表于 2012-3-27 13:09
回复 6# haijie1223
翻看过去自己曾提问的问题,这个问题刚刚又研究了一下,发现确实如 happytc 所言,文件并非一个标准的wav文件,而是尾部利用delphi的一种数据库格式进行改写后的数据,运行时在内存中进行格式转换并播放。播放函数使用 sndPlaySoundA(Binary("内存解密后的真正wav数据"), BitOR(SND_ASYNC, SND_MEMORY));
可惜能力有限,未能将解密过程代码写出来。
只能在手动调试过程中,将解密后的音频数据拦截。待以后水平若有提升,再尝试写出解密过程。
文件如下:
原始文件:
解密后文件:
页:
[1]