最近在做语音聊天
目标分层次有:
1对1的聊天
1对n的组播聊天
n对n的群聊。
---------------
我们采用的技术有:sip udp 等等。
1对1的聊天实现方法: 协议层:osip..传输用udp.语音用729.. 。。进度是已经完成。
1对n的语音: 进度正在做。
方法一:使用udp 组播。 具体原型已经摸索出。借鉴了 陆老师的multicast.
不分服务器,客服端。一个主线程负责分发,一个主线程负责接受。
后期准备裁剪陆老师的avchat实现语音。
方法二:(待补充)
n对n的语音:
感觉很难。有同学建议p2p..求证中
最后小结:想模仿个YY语音,真的不容易。
------解决方案--------------------------------------------------------
据我了解国内某大公司的语聊平台中:
协议不了解,但是设计思想如下:
1、1对1中,和楼主使用的方式相同,是点到点直连
2、1对n中,使用的是类似方法一服务端中转这个1,然后做组播
3、n对n貌似他们也不支持类似功能,我得感觉是用p2p,有了1对n的基础要解决的实际上就是一套p2p网络体系,其他诸如婚姻、UDP通讯问题(比如丢包)都已经解决完毕。
------解决方案--------------------------------------------------------
各开一个线程做发送,和接收,把收到的报文放到缓存区里,开另外的线程处理缓存区(做混音什么的的)。
------解决方案--------------------------------------------------------
不是服务器吗,还考虑什么嵌入环境
------解决方案--------------------------------------------------------
按照你的这个思路开发出来的只能内网使用,如果想公网使用转发服务器少不了的。
SIP不太适合做多对多,没有现成的协议支持,需要诸如sip conference之类的扩展协议,而这类扩展协议osip是不支持的,如果你要自己扩展也是相当麻烦的。
组播不能公网传输,绝大部分的路由器屏蔽了组播。
踏踏实实从头到尾自己设计一套比较靠谱。
------解决方案--------------------------------------------------------
这个协议时关键,要么自定义协议要么使用H323