作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我只是一个爱好者,如果这是一个愚蠢的问题或者我太天真了,我很抱歉。 (这也意味着我买不起昂贵的库)
情况是这样的:我正在使用 C#.NET 构建一个简单的语音聊天应用程序(类似于 Ventrilo 或 TeamSpeak,但仅适用于大约 15 或 20 人,并且在 100Mbps LAN 上运行)。我有工作服务器(每个客户端的生成线程)和客户端应用程序,使用 UDP 进行连接,使用 DirectSound 捕获和播放声音。我可以进行“一对一”通话,但我无法弄清楚最重要的事情之一:
如何让超过两个人参与对话?
最佳答案
你需要一些集中的地方来通过多播将数据包发回,或者你需要一种分散的方法,其中每个客户端都连接到每个其他客户端,并且每个客户端都托管一个多播。您要避免的是让这些机器将它们的数据转发给所有其他机器,这会导致向每台机器发送消息的时间为 O(n)(并且 I/O 很慢!)。
无论哪种情况,您最终都会遇到相同的问题:如何组合音频流。实现此目的的一种简单机制是在将信号发送回之前(通过网络端口或发送到扬声器)按位或将信号放在一起,但这假设您可以访问未压缩且合理同步的流。
关于c# - 语音 session ——如何让更多人参与进来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207642/
我是一名优秀的程序员,十分优秀!