2015-07-21 93 views
0

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

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

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

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

  1. 某些客户端的音频似乎会延迟增加。 例如,如果数据流已经持续1分钟,某些客户端的延迟可能会高达10秒,并且在几分钟后,某些客户端的延迟甚至会更长30-50秒。

  2. 有些客户没有问题。

  3. 特别是遇到延迟的客户,声音极其低调。这可能会发生在没有延迟音频的客户端。

+0

我想我们需要一些代码来帮助你! –

回答

1

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

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

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

检查有关无的WebRTC解决我的帖子:Can I stream microphone audio from client to client using nodejs?

你可以给我使用的链接作品库吗?也许我会在我的项目中迭代这个。

+0

https://github.com/Mido22/recordOpus/tree/8f0c312a3f45834d57c43f0758d773ccdd03d2e3/client/scripts libopus + opus.js. – dvalinn

+0

谢谢:)我会试试这个 – Cracker0dks

+0

只是澄清,这不是我的项目,我只是从那里拿了那些图书馆。 – dvalinn