WebRtc客户端到服务器的连接

7

我将实现Java VoiP服务器以与WebRtc配合使用。浏览器点对点连接的实现非常简单。服务器到客户端的连接稍微有些棘手。

在快速查看RFC后,我写下了应该完成的任务,使Java服务器成为浏览器。请帮助我完成以下列表。

  1. 实现STUN服务器。服务器应该能够响应绑定请求和保持活动状态的ping。
  2. 实现DTLS协议以及DTLS握手。在DTLS握手之后,共享秘密将作为SRTP和SRTCP中的键材料。
  3. 支持SRTP和SRTCP流的多路复用。SRTP和SRTCP使用同一端口来解决NAT问题。
  4. 不确定是否应该实现SRTCP。如果服务器不向客户端发送SRTCP报告,我相信连接不会断开。
  5. 解码SRTP流到RTP。

问题:

  1. 服务器端是否还需要做其他事情?
  2. WebRtc如何处理SRTCP报告?它是否根据SRTCP报告调整采样率/比特率?
  3. WebRtc声称将解决以下问题:

    • 数据包丢失掩盖
    • 回声消除
    • 带宽自适应
    • 动态抖动缓冲
    • 自动增益控制
    • 降噪和抑制

    这是WebRtc内部还是编解码器(Opus)内部?我是否需要在服务器端处理这些问题,例如可变比特率等?


你打算创建自己的RTP堆栈吗?还是像使用Gstreamer这样的现有堆栈? - Benjamin Trent
@Anton 你考虑过使用现有的MCU和WebRTC服务器吗?周围有一些开源实现。你可以查看他们的代码,看看他们在做什么。无论如何,我可以告诉你,你计划的事情一点也不简单。看看Kurento,这是我参与的一个项目,以及github repos,自己看看吧。 - igracia
@igracia 我看到了一些开源实现,但它们都是用C语言编写的。我想要一个Java解决方案。 - Anton
目前,SRTP流已解码并可以写入wav文件。然而,当我将SRTP流发送回浏览器时,浏览器无法播放它。目前不知道原因。 - Anton
@igracia 嗯,它可以支持最多500个并发连接。虽然没有尝试更多。不过这也不是很重要,因为它可以进行水平扩展。您可以拨打call2friends.com的12345678号码来测试通话质量。 - Anton
显示剩余6条评论
2个回答

0
第一步是实现交互式连接建立(RFC 5245)。无论您是否使用STUN / TURN服务器都无关紧要,您的代码需要向浏览器发出连通性检查(使用STUN 消息),并响应浏览器的连通性检查。 ICE是一个相当复杂的状态机,但是可以做到。

-1

你不必重复造轮子。STUN / TURN 服务器是外部组件。直接使用即可。WebRTC源代码可供使用,您可以在应用程序代码中调用相关方法。

请参考类似的帖子 - 将服务器作为WebRTC数据通道对等体


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接