2016-10-17 85 views
3

我一直在努力实现的网络应用程序将能够处理以下情形:流摄像头使用socket.io

  • 视频流/从客户机到其他客户端(实际上是一组特定的人声音,无广播)和服务器。数据源将是客户端的网络摄像机。
  • 此流数据必须实时显示在其他客户端的浏览器上以保存在服务器端用于“归档”目的。
  • 它必须在node.js + socket.io环境中实现。

把它放在一些更具体的上下文中......场景是有一个人为他选择的用户提供了一种空间。选定的用户加入房间后,创作者开始从他/她的内置设备(网络摄像头)流式传输视频/音频。所有的客人都会实时接收数据,而且数据正在被发送到服务器,并在数据流和房间关闭后进行恢复。

我在考虑将Socket.IO与WebRTC混合使用。从理论上讲,这两者的结合似乎恰恰适合这项工作。 Socket.IO非常适合通过为一个房间分配一些套接字并收集WebRTC要求的信令过程来收集特定用户集合。 与此同时,WebRTC对于聚集在同一房间中的用户之间的P2P连接来说非常棒,访问摄像头和其他可能想使用的内置设备也非常简单。

所以是的,理论上所有的东西看起来相当不错,但是我真的需要看到一些代码,所以我可以尝试自己实现它。此外,我看到一些问题:

  • 如何保存由P2P连接发送的流?很显然,服务器无法访问。我在想,我可能把服务器当作另一个“客户”,所以它只是与房间创建者建立P2P连接的另一个端点。但不知何故,它感觉前卫。
  • 将服务器视为创作者与客户之间的中间人不是更好吗?与P2P相比,有一点可能会延迟一些,但可能并不重要,但可能对所有客户端来说都是一样的。 (我试过,但我不能从摄像头到完成服务器的流,这不过是因为我有处理MediaStream问题,为不同的问题的话题)

我一直在寻找一些不错解决方案但没有任何成功。我已经看到,有一个很好的P2P解决方案为socket.io制作:http://socket.io/blog/socket-io-p2p/。事情是 - 我认为它不会很好地处理数据流。这些例子只提到简单的聊天应用程序,我需要一些比这更重要的东西。

我会非常感谢一些具体的例子,文档,不管怎样可能导致我更接近实施它,因为我真的不知道如何处理它。

感谢提前:)

回答

1

视频流至多个用户的是,不幸的是需要大量的基础设施建设,实现了真正的难题。您将无法通过websocket传输视频数据。WebRTC对于你描述的内容来说也不是一个可行的解决方案,因为正如你所提到的那样,WebRTC协议是P2P的,因为流媒体用户需要直接连接到所有'观众'。这显然不会超过一些“观众”。 WebRTC更适合Skype等直接视频通话。

Here是一篇描述某种流行的直播流服务所使用的架构的文章。正如你所看到的以任何规模实现实时视频都需要相当多的资源。

3

您可以使用开源WebRTC服务器解决您的任务。 例如,kurento

可以实现数据流的模式:

  • 一对一
  • 一对多
  • 多对多

WebRtc-server schema

客户会互相连接扔webRtc服务器。 因此,在服务器端,您可以记录流或将其发送到transciding。

webSocket用于comunicatind与服务器。

根据您的任务可以找到一些examples