2010-02-05 19 views
3

首先,我只是一个业余爱好者,所以我很抱歉,如果这是愚蠢的问题,或者如果我太天真。 (这也意味着我不能购买昂贵的库)语音会议 - 如何让更多人参与对话?

这就是情况:我正在C#.NET中构建一个简单的语音聊天应用程序(类似于Ventrilo或TeamSpeak,但仅适用于大约15或20人,并在100Mbps LAN上运行)。我有工作服务器(产卵线程为每个客户端)和客户端应用程序使用UDP连接和DirectSound捕获和播放声音。我可以打“1对1”的电话,但我无法弄清楚最重要的事情之一:

我如何在谈话中有两个以上的人?

+3

您可能想要更改您的问题。 “让每个人都听到别人说的最好的方法是什么”似乎是广泛的。它不包括人们没有面对麦克风或按下静音的情况。根据您的其余问题,您是否真的在问“我如何在对话中有两个以上的人”?如果是这种情况,你可能会考虑星型或网状拓扑结构。你也可以考虑使用IP多播。 – atk 2010-02-05 14:11:33

+0

感谢您的评论。我已经按照你的建议重新提出了这个问题(因为这真的是cas)。我正在考虑使用多播,但不确定在这种情况下是否是个好主意。 – Ken 2010-02-06 20:38:38

回答

2

你需要一些集中的地方通过多播发回数据包,否则你需要一个分散的方法,其中每个客户端连接到每个其他客户端,并且每个客户端正在主持一个多播。你想避免的是让机器将数据转发给其他机器,这会导致O(n)时间向每台机器发送消息(并且I/O速度很慢!)。

在任何一种情况下,您都会遇到同样的问题:如何合并音频流。一种简单的机制可以实现这一点,即在将它们发回(从网络端口或向扬声器发送)之前将它们按位或信号合并在一起,但假设您可以访问非压缩和合理同步的数据流。

相关问题