日期:2014-05-17  浏览次数:20967 次

C# 实现语音聊天
请问在网络中 像QQ那种点对点的语音聊天是怎么实现的?

------解决方案--------------------
http://www.codeproject.com/KB/audio-video/VoiceChatApplicationInCS.aspx
这有个例子
------解决方案--------------------
语音方面用C/C++做比较合适,不是C#的特长。
我资源里有个C++的例子:http://download.csdn.net/source/1450287
另外有一款开源的木马gh0st,功能也是十分强大的,里面带有语音的模块,使用gsm编码,如果要研究这个源码,注意先看资料在改版权,里面带有逻辑炸弹。
上面说的两个例子只是简单的语音软件,如果要做专业的语音软件,牵扯到的东西太多,去噪、消抖、滤波、回声消除、静音检测,等等,每个功能都需要十分专业的微积分知识,幸运的是开源的speex编码库带有这些功能,效果还是不错的。speex的帮助只有源码里带的那个pdf以及官方文档,如果想看中文帮助可以到我的博客里看看。
常见的语音软件都带有speex编码功能,例如teamspeek以及一些常见的voip软电话,像yy,is这类软件用的是自己的编码库。
开源的语音软件还有很多,不过几乎全是linux下实现的,windows下开源的语音软件我到现在只见过一个,但是代码写的非常杂乱。
我前段时间在http://www.codeproject.com上也看到过C#写的语音软件,不过没有下载测试,楼主如果需要就去找找好了。
编码方式还有很多,就不细说了。
语音软件原理方面都是一样的,采集->缓冲->编码->传输->接收->消抖缓冲->解码->播放