0

我们正在开发一个基于 Java 的 IP 语音程序,我们需要找到一种有效的方法来将流和服务器端的压力保持在合理的范围内。我们正在为多人游戏编写这个,我们计划有几种不同的模式来确定如何混合和发送音频。如果他们选择不参与语音聊天,我们计划让它“选择加入”以将无用的流排除在外。除此之外,我们还在考虑频道、私人聊天(2 人)和邻近度。如果我们使用一个有 16 人以上的频道,我们想找出是否有办法避免 x^2 的流数(在本例中为 256)。我们还需要尝试将客户端工作保持在合理的水平,因为它将运行游戏。我们不太确定大型服务器可以处理多少工作,因为随着更多人在一个频道中,它将是指数级的。我们可能需要限制每个频道的人数,或者允许服务器所有者这样做,以及限制频道的数量。根据受欢迎程度,这款游戏可以同时在服务器上容纳大约 40-500 人,我们不确定如何处理服务器处理和带宽上的这种压力。

本质上,我们是在询问是否有人对现有系统有任何了解,这些系统可以有效地处理这个问题。如果有任何相关性,我们将使用 JSpeex 进行音频编码。那么,是否有任何方法可以处理这个问题,或者甚至可能来自社区的一些想法?我们还计划在我们一直在开发的类似 Skype 的小规模程序中重新实现这一点。

4

1 回答 1

1

我不明白你为什么需要 256 个流。您不应该直接从客户到客户。

对于每个客户端,您需要一个与服务器的双向连接。所有输入/输出音频都通过服务器定向。服务器然后将播放器要接收的所有音频多路复用到单个音频流中并转发它。

当您在私人聊天中时,服务器只会转发与您进行私人聊天的其他玩家的数据包。

当使用接近时,服务器将来自范围内任何播放器的音频多路复用到单个流中。

我会假设任何体面的音频编码包都支持从多个通道多路复用音频,但我对 JSpeex 一无所知。

于 2013-08-25T19:20:57.597 回答