我一直在使用Web Audio API和Node.js开发音频会议应用程序。一个人会讲话,其他联系的客户也应该听到他的声音。
在客户端,我先使用libopus对PCM样本进行编码,然后再将其发送到服务器。
在服务器端,我只是将这些编码的数据包发送回连接的用户,最后,在每个客户端上,我将这些数据包解码回可以使用Web Audio API播放的示例。
当我在本地环境上测试应用程序时,一切工作正常。在生产环境中,当客户可以从本地外部空间进行连接时,将发生几个主要问题。
一些客户的音频延迟似乎在增加。例如,如果流已经进行了1分钟,则某些客户端的延迟可能长达10秒,而几分钟后,某些客户端的延迟甚至会增加30-50秒。
一些客户没有问题。
尤其是遇到延迟的客户,声音非常低调。对于没有音频延迟的客户也可能会发生这种情况。
那是因为您可以使用不同的声卡获得不同的采样率。因此,在这种情况下,音频是高音调和滞后的(来自PC1-> PC2),低音调和延迟是随着时间的推移(从PC2-> PC1)。在这种情况下,PC1的采样率低于PC2。
您必须编写一个重采样器来解决此问题。检查不同PC上的采样率:
var audioCtx = new AudioContext();
var mySampleRate = audioCtx.sampleRate;
查看关于无WebRTC解决方案的文章:我可以使用nodejs在客户端之间流传麦克风音频吗?
能给我您使用过的Opus Lib的链接吗?也许我也会在我的项目中对此加以说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句