Web音频API和直播延迟



我一直在用Web audio API和Node.js开发一个音频会议应用程序。一个人说话,其他有关系的客户应该听他说话。

在客户端,我用libopus编码PCM样本,然后将它们发送到服务器。

在服务器端,我只是将那些编码的数据包发送回连接的用户,最后在每个客户端上,我解码这些数据包返回到可以使用Web Audio API播放的样本。

当我在本地环境测试应用程序时,一切都工作得很好。在生产环境中,当客户端可以从外部本地空间连接时,会出现几个主要问题。

  1. 一些客户端将有延迟在他们的音频,似乎是增加。例如,如果流已经持续了1分钟,一些客户端的延迟可能长达10秒,几分钟后,一些客户端的延迟甚至更大,为30-50秒。

  2. 部分客户端没有问题

  3. 特别是遇到延迟的客户端,声音非常低。这也可能发生在没有音频延迟的客户端。

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

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

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

检查我的帖子关于无WebRTC解决方案:我可以流麦克风音频从客户端到客户端使用nodejs?

你能给我你使用的Opus Lib的链接吗?也许我也会把它整合到我的项目中。

最新更新