我们正在开发一个基于Java的Voice程序,我们需要找到一种有效的方法来将流和服务器端的压力保持在一个合理的水平。我们正在为一个多人游戏编写这个,我们计划有几个不同的模式来决定如何混合和发送音频。如果他们选择不参加语音聊天的话,我们计划让它“选择加入”,让无用的流远离这个等式。除此之外,我们还在考虑频道、私人聊天(2人)和接近。如果我们使用的是一个带有16+人员的通道,那么我们想知道是否有一种方法可以避免x^2的流数(在本例中是256个)。我们还需要努力使客户端的工作保持在一个合理的水平,因为它将运行一个游戏。我们不太确定一个大型服务器能够处理多少工作,因为随着更多的人在一个通道中工作,它将是指数级的。我们可能需要限制每个通道的人数,或者允许服务器所有者这样做,以及限制通道的数量。这个游戏一次可以有40到500人在一台服务器上,这取决于它的流行程度,我们不知道如何处理服务器的处理和带宽上的那种压力。
本质上,我们是在问是否有人对现有的系统有任何了解,这些系统有一个有效的处理方法。我们使用JSpeex进行音频编码,如果相关的话。因此,是否有任何方法来处理这件事,甚至可能有一些来自社会的想法?我们还计划在一个小规模的Skype上重新实现这一点,就像我们一直在开发的程序一样。
发布于 2013-08-25 19:20:57
我不明白你为什么需要256个数据流。你不应该直接从一个客户到另一个客户。
对于每个客户端,您需要一个与服务器的双向连接。所有输入/输出音频通过服务器定向。服务器比多路复用器的所有音频播放器将接收到一个单一的音频流,并转发它。
当您进行私人聊天时,服务器只会与您转发来自私密聊天中其他玩家的数据包。
当使用邻近时,服务器将来自范围内的任何播放器的音频多路复用到单个流中。
我假设任何合适的音频编码包都支持从多个通道将音频多路复用,但我对JSpeex一无所知。
https://stackoverflow.com/questions/18432092
复制相似问题