【问题标题】:How to mix multiple PCM audio packages (Voice streaming)如何混合多个 PCM 音频包(语音流)
【发布时间】:2021-02-13 07:47:54
【问题描述】:

我正在为游戏开发 Java 语音聊天,当多个玩家同时交谈时,我遇到了音频混合问题。音频仅发送给附近的播放器,因此我将每个用户的缓冲区分别存储在客户端上,并将 id 与语音包一起发送到服务器上。为了听,我正在浏览用户列表并检查现有用户的缓冲区以重现它们。但是,我的音频混合有问题,可能混合错误。我应该如何混合这些音频包?音频是 16 位 PCM。当几个玩家一起说话时,这些音频中有很多噪音/嘶嘶声,音频几乎听不见。

应用于此混音器的正确算法是什么?

【问题讨论】:

    标签: java android audio


    【解决方案1】:

    根据我对麦克输入的有限经验,我的出发点是尝试以下步骤:

    1. 将 16 位字节转换为 PCM
    2. (考虑对 PCM 应用低通滤波器,并可能增加音量)
    3. 将要混合的每一行的 PCM 值加在一起
    4. 将 PCM 转换回字节

    我无法从您的描述中判断您是否正确执行了第 1 步。

    进一步研究的可能地点是 jitsi.org。他们的服务是用 Java 编写的并且是开源的。知道他们如何处理这件事会很有趣。但在我看来,最常见的事情是任何时候只选择并播放一条线。这种限制可能有充分的理由。但我不知道这是否是技术性的(例如,噪音以一种淹没声音的方式积累)或者只是人们同时说话很容易造成混乱。我想也可能有回声/反馈的考虑。我期待看到其他人可能会为此提供哪些信息。

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多