网络音频 API 和直播延迟

Web Audio API and livestream delay

我一直在使用 Web Audio API 和 Node.js 开发音频会议应用程序。一个人将发言,其他连接的客户应该听到他的声音。

在 client-side 上,我在将 PCM 样本发送到服务器之前使用 libopus 对其进行编码。

在 server-side 上,我只是将这些编码数据包发送回已连接的用户,最后在每个客户端上,我将这些数据包解码回可以使用网络音频播放的样本 API。

当我在本地环境中测试应用程序时,一切正常。在生产环境中,当客户端可以从本地外部连接时 space,会出现几个主要问题。

  1. 有些客户的音频会有延迟,而且延迟似乎在增加。 例如,如果流持续了 1 分钟,则某些客户端的延迟可能会长达 10 秒,几分钟后,某些客户端的延迟甚至会增加 30-50 秒。

  2. 部分客户端没有问题

  3. 尤其是遇到延迟的客户端,声音非常low-pitched。这也可能发生在音频没有延迟的客户身上。

那是因为不同的声卡可以有不同的采样率。因此,在这种情况下,音频音调高且滞后(来自 PC1->PC2),音调低且随着时间的推移而延迟(来自 PC2->PC1)。在这种情况下,PC1 的采样率低于 PC2。

你必须写一个重采样器来解决这个问题。 检查不同 PC 上的采样率:

var audioCtx = new AudioContext();
var mySampleRate = audioCtx.sampleRate;

检查我的 post 关于 none WebRTC 解决方案:

你能把你用过的 Opus Lib 的 link 给我吗?也许我也会将其集成到我的项目中。