视频和音频流 - 仅限客户端的服务器

时间:2017-10-08 20:10:50

标签: html5 audio video webrtc

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

我已经开始阅读webrtc,但是如果我使用webrtc,我应该创建一个stun / turn服务器和其他东西,对于单向流我认为没有必要(这只是我对事物的理解) ..)因为我不需要客户的任何东西,字面意思,他们的视频或音频......

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

server (camera) -> clients

那里有什么东西,或者我应该坚持webrtc

1 个答案:

答案 0 :(得分: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,但我建议你用它编写你的服务器应用程序(< 3 Javascript!):

  • 有一些库可以包含WebRTC功能,以便在服务器端使用,例如node-webrtcnode-rtc-peer-connection

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

以上所有内容都与WebRTC相关,在这种情况下:流视频对等(服务器)到对等(浏览器)。

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

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

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

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

现在,适用于您的方案

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

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