首页 > 解决方案 > 发送和接收 PCM 样本

问题描述

我一直在制作一个近乎实时的语音聊天应用程序。网页将数据包发送到服务器,服务器将数据包保存到磁盘,然后将数据包重新传输到其他连接的网页。我尝试了许多其他解决方案,但它们要么滞后,要么无法播放。我已经意识到发送 PCM 样本是最佳的(服务器也会记录这些样本),但我不确定如何让它们在另一个客户端播放。我正在使用带有 Socket.IO 的 NodeJS。提前致谢!

标签: htmlnode.jsaudiosocket.iowebrtc

解决方案


网页将数据包发送到服务器,服务器将数据包保存到磁盘,然后将数据包重新传输到其他连接的网页。

这已经不是那么有效了。最好尽可能直接从对等点发送数据。

我已经意识到发送 PCM 样本是最佳的

不,它不会。这需要更多带宽,这将需要更好的缓冲,这意味着更高的延迟。这是语音聊天......无需使用像 PCM 这样的无损编码。

我一直在制作一个近乎实时的语音聊天应用程序。

这基本上是构建 WebRTC 的事实上的主要用例。如果你使用 WebRTC,你会得到:

  • 点对点流式传输(在可能的情况下)
  • NAT 遍历(在可能的情况下启用这些 P2P 连接,或者在不启用时代理它们)
  • 端到端的低延迟优化
  • 硬件加速(如果可用)
  • Opus 音频编解码器
  • 自动重采样,以实现兼容性并在事情下降时保持低延迟

换句话说,这已经是 WebRTC 解决的问题。


推荐阅读