【问题标题】:Video and audio stream - server to clients only视频和音频流 - 仅服务器到客户端
【发布时间】:2017-10-08 20:10:50
【问题描述】:

有没有办法使用安装在服务器上的摄像头将网站上的视频和音频流式传输给客户端 - 例如,像 youtube 那样?

我已经开始阅读webrtc,但是如果我使用 webrtc,我应该创建一个 stun/turn 服务器和其他东西,我认为这对于一种方式流来说是没有必要的(这只是我对这些东西的理解.. ) 因为我不需要客户的任何东西,从字面上看,既不需要他们的视频,也不需要他们的音频..

那么有没有办法使用html5 实现这一点,只在一个方向上流式传输:

server (camera) -> clients

这有什么问题吗,还是我应该坚持webrtc?

【问题讨论】:

    标签: html audio video webrtc


    【解决方案1】:

    我将解释这种情况的可能解决方案,可能还有其他解决方案,但我希望我的解决方案能让您大致了解如何做到这一点,并作为一个起点来探索更多关于 WebRTC 的惊人可能性。如果有不明白的地方请告诉我。

    所以,WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs。甜蜜,也就是说:WebRTC 有一个相当好的浏览器支持(虽然不是在每个浏览器中,Safari 一个月前才开始支持它的 Safari 11)。但在这种情况下,我们想在服务器端使用 WebRTC。归根结底,我们仍然可以考虑点对点实时通信,其中我们的对等点之一就是服务器。

    我不知道你是否熟悉 Node.js,但我建议你用它来编写你的服务器应用程序(

    • 有一些库封装了要在服务器端使用的 WebRTC 功能,例如 node-webrtc 和 node-rtc-peer-connection。

    • 但我建议你看看electron-werbrtc,因为 其他人可能正在使用已弃用的方法或不完整。 electron-webrtc 在后台运行一个无头电子客户端来 使用 Chromium 的内置 WebRTC 实现。所以有了它你应该 能够访问服务器中的摄像头并创建一个流 提供给其他对等方(浏览器)。

    以上都是与 WebRTC 相关的任务,在这种情况下:流式视频对等点(服务器)到点对点(浏览器)。


    现在,让我们来谈谈信号过程、眩晕和转向。

    • 信号:想象一下现在有 2 个浏览器的点对点场景,他们想要建立直接连接并在彼此之间流式传输视频和音频。但他们彼此不认识,就像如果我不知道你的家庭住址,我就不能给你寄信。所以他们需要一种服务来帮助他们相互了解,这样他们就可以拥有对方的IP。这应该由所谓的“信令服务器”来完成。如果您知道其他对等 IP,则不需要信令服务器。

    • STUN/TURN:上述方案在局域网中完美运行,每个对等点都有自己的 IP 地址,并且它们之间没有防火墙和路由器。但除此之外,您可以在 NAT 或防火墙后面拥有对等点,然后您的信令服务器将无法让两个对等点发现自己。如果在 NAT 后面有对等点,则需要 STUN 服务器,如果在防火墙后面有对等点,则需要 TURN 服务器。这有点简化,但我只想让您大致了解何时可能需要 STUN/TURN 服务器。

    为了更好地理解 Signaling、STUN 和 TURN,有一个 very graphic article 可以完美地解释它们。


    现在,针对您的场景:

    • 我认为您可能不需要 STUN/TURN 服务器 而且您可能不需要实现信令过程,因为应该从服务器接收流的浏览器会知道该服务器地址, 正确的?因此他们可以与它建立 WebRTC 连接。
    • 编辑:您可能需要在服务器和客户端(浏览器)之间实现某种握手,所以这将是信令过程。这不是 WebRTC 的一部分,并且这就是为什么您需要自己实现它的原因。正如我所说,这是 2 个对等方可以发现彼此的方式,但它们也交换信息作为本地媒体条件,如编解码器、它们可以处理的分辨率等。对于您的情况,您的信令服务器可以托管在同一台服务器中你习惯于 strea:你可以构建一个运行在那里的小型 node.js 应用程序,它可以轻松管理所有信号处理过程,这没什么大不了的。我建议您阅读此article,特别是“我如何构建信号服务?”部分。一般来说,该站点上的所有 WebRTC 文章都非常有帮助。

    这对你有意义吗?我认为有了它你可以开始挖掘更多,看看这是否足够,或者你需要实现更多的东西。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多