我正在为游戏开发Java语音聊天,当几个玩家同时讲话时,我的音频混音有问题。音频仅发送到附近的播放器,因此我将每个用户的缓冲区分别存储在客户端上,并将ID和语音数据包一起发送到服务器上。要收听,我要遍历用户列表并检查现有用户的缓冲区以重现它们。但是,我在混合音频时遇到问题,可能是混合错误。我应该如何混合这些音频包?音频是16位PCM。当几个玩家一起聊天时,这些音频中有很多杂音/嘶嘶声,因此音频几乎听不到。
适用于此混音器的正确算法是什么?
答案 0 :(得分:0)
基于我对话筒输入的有限经验,我的出发点是尝试以下步骤:
根据您的描述,我无法确定您是否正确地执行了步骤1。
可能需要进一步研究的地方是jitsi.org。他们的服务是用Java编写的,并且是开源的。知道他们如何处理这件事将很有趣。但是在我看来,最平常的事情是在任何一次都只选择并播放一条线。对此限制可能有充分的理由。但是我不知道这是否是技术性的(例如,噪音以淹没声音的方式积累)还是仅仅是人们同时讲话很容易造成混乱。我认为可能还有回声/反馈注意事项。我将期待看到其他人可以为此提供哪些信息。