Audio 基于WebRTC的P2P音频广播

Audio 基于WebRTC的P2P音频广播,audio,websocket,webrtc,p2p,Audio,Websocket,Webrtc,P2p,我有一个单一的来源和一组听众在听音频流。如果我使用P2P WebRTC进行流媒体传输,那么最简单的方法就是从说话人那里创建N-1连接。这在N

我有一个单一的来源和一组听众在听音频流。如果我使用P2P WebRTC进行流媒体传输,那么最简单的方法就是从说话人那里创建
N-1
连接。这在
N<3
之前是可以的。但在其他方面,P2P传输成本很高。我概述了两种方法,并试图找出哪一种最适合

  • 有一个中央服务器转播和录制音频。(-延迟+成本)
  • 一些终端节点将作为非终端节点,而不是从源节点打开
    N-1
    连接,并将打开
    K
    连接以中继和记录传输。(+延迟-成本)
  • 我对WebRTC很陌生。我正在计划我的HTTP方面与C++。若我采用方法(2),我不会在服务器端为音频流增加额外成本。但这不是直截了当的。如果轮子已经存在并且旋转良好,我当然不想重新发明它。但我不知道已经有什么可用的方法,以及这种方法的风险是什么

    如果我采取方法(1),我应该使用什么中继服务器?这应该与业务逻辑紧密集成。这部分我很难弄清楚。有了websocket,我发现这一部分很容易,因为它们都在同一个会话中,并且所有上下文信息都可以访问。但在这里,不知何故,我需要用流映射用户帐户,并在其上应用业务逻辑。像某些用户一样,我会降低音量

    我还需要在同一个流中广播数据


    我不能让任何人(谁不使用我的应用程序)使用我的回合服务器。我需要某种令牌/身份验证系统。我该怎么做呢?

    你说得对,不要重新发明轮子。从头开始构建webRTC媒体服务器很难。幸运的是,有很多选项可以简化任务。看看:

    此外,您还必须决定是将所有流发送给任何参与者,还是将它们混合在服务器中,只向会议中的每个参与者发送一个流。它们被称为和方法

    关于如何在同一个流上发送数据的问题,webRTC提供了一种称为的机制,专门用于此目的。多亏了它,你可以创建一个具有不同曲目的流:音频、视频、屏幕共享或数据

    我不能让任何人(谁不使用我的应用程序)使用我的回合服务器。我需要某种令牌/身份验证系统。我该怎么做

    执行此操作的标准方法是使用有时间限制的凭据。coturn服务器支持这种开箱即用的方式,并且具有

    它并不完美,但到目前为止还没有发生重大虐待案件

    一些终端节点将充当非终端节点,并将打开K
    Muaz Khans的RTC多重连接演示了这一点,因此您无需重新发明轮子。正如您所说,它的成本比中央服务器低,但会增加延迟,这取决于使用情况,这是否比中央服务器好。

    这是一个很好的演示。我刚看到。但它仍处于婴儿期。看起来没有一个标准的协议。如果有人掉入锁链,会发生什么。如果有一个更有利的非终端,那么切换将如何发生。或者使用轮询机制。要使这样的分布式系统更高效,可以做很多事情。从任何webrtc演示(开源或非开源)到生产系统还有很长的路要走。祝你好运。我应该使用自己的回合服务器吗?或者使用像Xirus这样的服务?