从客户端到服务器的视频流:websocket或webrtc可供选择



我想做几个小项目,试验从客户端到服务器以及从客户端到服务端的视频和音频流,我有几个问题:

1) 我知道使用webrtc从点到点避免服务器中间的流传输并不困难,但使用webrtc从客户端到服务器的流传输是可能的(通过websocket这样做有一些好处,或者webrtc的好处是避免中间通信)。。。流媒体视频和音频怎么样?

使用websocket流式传输视频或音频非常简单,但我找不到任何使用webrtc流式传输客户端服务器的经验。

2) 关于将视频流式传输到多个点,我知道最近有一些关于webrtc的实验,因为最初这是不可能的,现在:当它用于1到多个时,webrtc性能会下降?。。。流式传输到服务器(可能使用webrtc),然后使用websocket流式传输至多个点会是一个更好的主意??。

非常感谢,请不要粗鲁,我的问题不是subjetive或比较这两种技术,更多的是了解哪些限制以及我在哪里可以使用每种技术。。。谢谢

我不同意MarijnS95,因为我不认为WebRTC是专为浏览器设计的。您可以在浏览器之外的任何平台、任何服务器或客户端应用程序中使用它。这是好的部分。

WebRTC只是一组已经存在的协议,捆绑在一起提供实时通信。它之所以被称为网络,是因为谷歌想让它在浏览器中广泛使用(这是传播这个词的一大步)。。。

因此,为了回答您的问题:WebRTC比WebSockets更好地流式传输媒体内容,原因显而易见。

  • 创建WebSocket是为了建立与服务器的TCP连接,这样您就可以进行双向连接
  • WebRTC建立与任何其他对等方(不仅仅是服务器)的连接,最重要的是,它使用SRTP(安全实时协议)来传输媒体内容。正如名称所示,该协议是为传输实时信息而创建的,它最好通过UDP。另外,网络上的许多点将RTP视为一种特权协议

因此,优势是显而易见的,但是的,您也可以使用WebSockets来流式传输数据。

我找不到任何使用webrtc的流式客户端服务器的经验。

好吧,WebRTC使用标准协议,你可以使用标准服务器来支持它。搜索一下Asterisk+WebRTC。

关于多点问题,答案是一样的。使用WebRTC(是否转到服务器)可以获得更好的结果。正如您所说,对等会议的问题是众所周知的,解决方案实际上是使用服务器将流的数量减少到每个客户端一个。在理想的世界里,你会使用MCU来完成这项工作。事情就是这样做的。

对等

可以使用WebRTC完成,而不是使用WebSockets。请参阅网络套接字是否允许p2p(浏览器到浏览器)通信?

浏览器支持

WebRTC:Chrome+Firefox(+Opera)

WebSockets:Chrome+Firefox+IE+Safari(+Opera和其他一些)

运输

WebRTC:UDP(SRTP),(也可能:与TURN服务器的TCP模式)希望总是端到端加密,但我不确定在TURN服务器的情况下

WebSockets:TCP,可以通过HTTPS/WSS进行安全保护,但不能在对等端之间进行端到端保护!

我不知道这个问题是否还需要一个明确的答案,但我想做类似的事情。

我个人将Node.js与以下Node.js插件结合使用,以在服务器端启用WebRTC:Node-WebRTC。它现在只支持Linux和Mac OSX,但它允许我快速设置WebRTC服务器。然后,您可以使用服务器将流分发给其他对等体,这些对等体可以使用WebSockets、WebRTC或其他方式连接。

源代码也可以从WebRTC网页免费获得。因此,如果您愿意,您可以自己构建一个充当服务器的本地应用程序。

是的,有可能。。。

尝试将KURENTO与WEBRTC一起使用。

您可以在文档中找到"一对多"调用应用程序,从客户端到服务器,从服务器到多个客户端。

WebRTC是为浏览器设计的。你说得对:

或webrtc的好处是避免中间通信

它是专为浏览器设计的。你可以连接到你的服务器,但它必须有一个UI(带GUI的ubuntu服务器),并安装一个浏览器(但我想这不是你想要的)。除此之外,除了websocket,没有其他方式可以流式传输到服务器

根据另一个答案,可以流式传输到启用RTC的服务器

关于多个流,这很难。我回答了一个关于使用webrtc作为多点对点的问题。也许这就是你可以做的,但这需要一个好的代码来管理谁应该连接到谁,并只是链接你的用户。在这种情况下,服务器是最好的(如果你想与浏览器兼容,websocket比webRTC更受支持,甚至IE现在也支持它们(?!?!)。

你可能想要一个结论:

  • 降低服务器负载,对等:webRTC
  • 多人连接,例如:具有中间服务器的WebSockets

请注意,webRTC在启动之前需要进行一些数据交换。您可以使用node.js中的websocket服务器轻松完成这项工作。

希望这将在您的开发过程中进一步帮助您,我希望听到您将使用什么样的解决方案!

相关内容

  • 没有找到相关文章

最新更新