将WebRTC集成到一个音频/视频呼叫是否会影响Web应用程序的性能

时间:2014-09-29 17:52:56

标签: asp.net .net performance webrtc

在了解了WebRTC的一些强大功能之后,我想到了在我的Web应用程序中使用WebRTC一对一的音频/视频通话。 Web应用程序适用于某类别的许多组织/实体,他们可以每天注册并记录几条记录,用于内部工作和客户。这些单个组织/实体的客户还可以访问Web应用程序以访问其详细信息。

使用WebRTC的目的是为了客户和组织之间的通信。此外,新人每天都会向这些组织询问产品和服务。

在浏览谷歌等文章时,如果我们不使用媒体服务器,我发现广播或一对多的电话需要非常高的带宽给用户。

那么一对一的电话是什么情况呢? 如果几个用户同时作为例程同时进行音频/视频通话(一对一),它是否会影响Web应用程序的性能或带来任何危急情况?

用户数量将非常大,用户将每天记录几个条目作为日常工作。但它仍然是可管理的,应用程序将运行顺利,但我不确定WebRTC的新概念。它需要一个非常高的托管计划吗?是否将WebRTC用于适合或可取的当前场景?

1 个答案:

答案 0 :(得分:3)

WebRTC本质上是Peer-to-Peer。意味着流数据是在CLIENT端处理的。所有解码,编码,ICE候选者收集/协商以及媒体加密/传输将在客户端而不是在服务器端发生。因此,您将提供页面,客户端JS和一些数据交换(会话协商信令),但总而言之,这不是一项大量的工作。它应该易于处理,而不必担心主机过度工作。

所有这些都说,这是唯一一个可能影响您的托管服务器的性能问题。

  1. 信令会话启动,协商和削皮。这是非常小的(在会话开始时只有一些json数据)。这不应该是一个负担太重,但你应该知道,如果1000个会话同时开始,你将有一个消息队列指向所需的各方。如何确定各方,转发消息以及服务器端所做的工作都会影响性能。如果聪明地编写(如何存储会话,如何转发消息等)不应该是一个可怕的负担。这可以很容易地用SignalR完成,因为你在ASP.NET上或者你可以使用单独的一个运行Node .js(或同一个盒子,无关紧要),如果你愿意的话。
  2. 如果需要,可以使用RTP TURN继电器。这可能是通过不同的服务器(或者如果你想要的话,与托管服务器相同)。对于某些连接,需要TURN服务器,任何生产就绪的WebRTC解决方案都应考虑到这一点。 Here is a good open source turn server。这里的带宽使用率非常高,因为RTP数据包被发送到该服务器并被转发到连接中的对等体。
  3. 如果要录制流,则可能会增加托管流量,具体取决于您的实施方式。 Firefox支持client side recording个流,但Chrome不支持(他们说它目前正在进行中)。您可以使用existing JS libraries记录Feed客户端,然后将其推送到任何您想要的位置。您还可以通过MediaServer推送所有数据,该媒体服务器将多路复用,解复用和转发数据,以便在任何您喜欢的地方录制。 Janus-Gateway videoroom是mediaserver的一个很好的轻量级示例。
  4. 客户端是另一回事。

    1. Javascript中存在更高级别的问题。如果您使用其中一个录制JS库,这一点尤为明显,因为它们每秒都会进行多次画布捕获,这会严重影响用户体验。
    2. 随着流式传输视频质量的提高,浏览器的CPU利用率将会提高。这是相当明显的,因为高清视频帧比SD帧需要更多的CPU功率来编码/解码。
    3. 客户端带宽使用也可能是个问题。 Chrome和Firefox尝试动态修改每个视频/音频源的比特率,但视频比特率可以高达2 Mbps。你可以在Chrome中加盖(通过在SDP中添加一个属性),但在Firefox中(最后一次我检查过)不会这样。