繁体   English   中英

使用 socket.io 流式传输网络摄像头

[英]Stream WebCam using socket.io

我一直在尝试实现一个能够处理以下场景的 Web 应用程序:

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

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

我正在考虑将 Socket.IO 与 WebRTC 混合使用。 从理论上讲,这两者的结合似乎非常适合这项工作。 Socket.IO 非常适合通过将一些套接字分配给房间来收集特定的用户集以及 WebRTC 要求的信号处理。 同时,WebRTC 非常适合聚集在同一个房间的用户之间的 P2P 连接,访问网络摄像头和我可能想要使用的其他内置设备也非常容易。

所以是的,理论上一切看起来都不错,但我真的需要看到一些代码在运行,这样我才能真正尝试自己实现它。 此外,我看到了一些问题:

  • 如何保存P2P连接发送的流? 显然服务器无权访问它。 我在想我可能会将服务器视为另一个“客人”,因此它只是与房间创建者的 P2P 连接的另一个端点。 不过,不知怎的,它感觉很前卫。
  • 将服务器视为创建者和客户端之间的中间人不是更好吗? 在某一时刻,与 P2P 相比可能会有一些可能微不足道的延迟,但大概对所有客户端来说都是一样的。 (我试过了,但我无法完成从网络摄像头到服务器的流式传输,但是这是另一个问题的主题,因为我在处理 MediaStream 时遇到了问题)

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

我真的很感谢一些具体的例子,文档,任何可能让我更接近它的实现的东西,因为我真的不知道如何处理它。

提前致谢:)

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

您可以实现流的模式:

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

WebRtc-服务器架构

客户端将通过 WebRTC 服务器相互连接。 因此,在服务器端,您可以记录流,或将其发送以进行转码。

webSocket 用于与服务器通信。

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

视频流向多个用户是一个非常困难的问题,不幸的是需要大量的基础设施才能实现。 您将无法通过 websocket 流式传输视频数据。 WebRTC 也不是您所描述的可行解决方案,因为正如您所提到的,WebRTC 协议是 P2P,因为在流媒体中,用户需要与所有“观众”建立直接连接。 这显然不会超过少数“观众”。 WebRTC 更适用于直接视频通话,例如在 Skype 中。

这里有一篇文章描述了一个有点流行的实时流媒体服务所使用的架构。 如您所见,实现任何规模的实时视频都需要大量资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM