【问题标题】:Video streaming from client to server: which alternative use, websocket or webrtc从客户端到服务器的视频流:哪个替代使用,websocket 或 webrtc
【发布时间】:2014-02-08 03:06:08
【问题描述】:

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

1) 我知道不是从点到点硬流式传输避免使用 webrtc 的服务器中间,但可能使用 webrtc 将客户端流式传输到服务器(通过 websocket 这样做有一些好处,或者 webrtc 的好处是避免中间通信) ...流式视频和音频呢?

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

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

非常感谢,请不要粗鲁,我的问题不是主观的或比较这两种技术,更重要的是要知道哪些是限制以及我可以在哪里使用每一个...谢谢!。

【问题讨论】:

    标签: stream websocket video-streaming webrtc


    【解决方案1】:

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

    WebRTC 只是一组已经存在的协议,捆绑在一起提供实时通信。它之所以被称为网络,是因为 Google 希望通过浏览器使其可用和广泛使用(这是传播这个词的一大步)......

    所以,回答您的问题:WebRTC 在流媒体内容方面比 WebSockets 更好,原因很明显。

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

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

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

    嗯,WebRTC 使用标准协议,您可以使用标准服务器来支持它。稍微搜索一下 Asterisk + WebRTC。

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

    【讨论】:

    • 看到您的回答:我说的是 webRTC,而不是 RTC 本身。确实可以将 webRTC 连接到启用 RTC 的服务器。
    【解决方案2】:

    Peer2Peer?

    可以使用 WebRTC 完成,而不是使用 WebSockets。见Do websockets allow for p2p (browser to browser) communication?

    浏览器支持?

    WebRTC: Chrome + Firefox (+ Opera)

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

    交通?

    WebRTC:UDP (SRTP),(也可能:带有 TURN 服务器的 TCP 模式)希望始终端到端加密,但 I'm not sure in case of TURN servers

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        是的,有可能……

        尝试将KURENTO 与 WEBRTC 一起使用。

        您可以在他们的文档中找到“一对多”呼叫应用程序,从客户端到服务器,从服务器到许多客户端。

        【讨论】:

          【解决方案5】:

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

          或者webrtc的好处是避免中间沟通

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

          根据另一个答案,可以在启用 RTC 的服务器之间进行流式传输

          关于多个流,这很困难。我answered a question 关于使用 webrtc 作为多点对点。也许这就是你可以做的,但需要一个好的代码来管理谁应该连接到谁,并且只是链接你的用户。在这种情况下,服务器是最好的(如果你想与浏览器兼容,websockets 比 webRTC 更受支持,even IE supports them now (?!?!)。

          你可能想要一个结论:

          • 降低服务器负载,点对点:webRTC
          • 多人连接等:带有中间服务器的 WebSockets。

          请注意,webRTC 需要进行一些数据交换才能启动。您可以使用 node.js 中的 websocket 服务器轻松完成此操作。

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

          【讨论】:

            猜你喜欢
            • 2020-11-16
            • 1970-01-01
            • 1970-01-01
            • 2016-10-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-18
            • 2012-04-15
            相关资源
            最近更新 更多