【问题标题】:How to build webRTC m:m audio/video live-streams/calls like discord does? client to client via gateway for IP protection如何像 discord 那样构建 webRTC m:m 音频/视频直播/通话?客户端到客户端通过网关进行 IP 保护
【发布时间】:2022-02-01 00:54:06
【问题描述】:

mux.com(以及 agora.io 等)是一项很棒的服务,但非常昂贵,因为它是一个服务器解决方案。我不能用那个。

Discord 是一个很棒的客户端解决方案,它只是使用网关作为传递来隐藏 IP 地址等。他们在这里描述了他们的整个架构:https://discord.com/blog/how-discord-handles-two-and-half-million-concurrent-voice-users-using-webrtcDiscord 不是唯一采用这种方法的,Instagram 也有 AFAIK 相同的方法,因为它很便宜并且可以做到这一点

我也想将这个解决方案用于我的社交媒体应用程序(如 instagram),但没有这么多定制的东西来提高性能。我是一个单人团队,我无法处理这种复杂性;我仍然不想使用 mux,因为它对我来说太贵了

我对库存/标准性能没问题。有谁知道或可以向我指出一个教程,从哪里开始为 m:m 音频/视频直播流调用构建这样的 webRTC elixier 网关解决方案?

也许已经发布了我可以复制粘贴的代码

非常感谢!!

编辑 我在他们的官方论坛上得到了答案https://elixirforum.com/t/how-to-build-webrtc-m-m-audio-video-live-streams-calls-like-discord-does-client-to-client-via-gateway-for-ip-protection/44956

【问题讨论】:

标签: discord elixir webrtc http-live-streaming live-streaming


【解决方案1】:

Discord 后端使用 SFU 为视频室中的对等方转发流,来自discord post 的描述:

Discord 语音服务器包含两个组件:信令组件和媒体中继组件,称为选择性转发单元或 SFU。信令组件完全控制SFU,负责生成流标识符和加密密钥、转发说话指示等。

请注意,answer 中的项目是用 Elixir(基于 Erlang)编程语言编写的,在直播和 WebRTC 中都不是很常用。比如FFmpeg、x264、libopus、WebRTC、SRS,这些音视频组件都是用C++写的,你最好考虑一下。

对于不和谐这样的视频聊天产品:

  • 毫无疑问,客户端应用程序可以构建在 WebRTC 上,包括 H5 和移动设备。
  • 对于SFU服务器,推荐C++服务器,例如SRSmediasoup。因为整个音频/视频经济都是基于 C++ 的,所以 SFU 有很多东西需要处理。
  • 关于信令服务器,也叫 videoroom,可以用 nodejs 或 Go 编写,因为这取决于你的业务,所以强烈推荐你最熟练的语言,这个服务器还有很多工作要做。

并非视频室中的所有对等方都需要发布视频流,而是只播放或消费流,因此它实际上是低延迟的实时流。更多关于直播和视频聊天的信息,请阅读this post

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多