UDP 流到 webRTC

use*_*916 3 javascript networking udp webrtc

我刚刚开始学习网络/网络编程(因此不确定哪些信息是相关的),但我的目标是尽可能实时地将计算机 X 获取的流视频播放到计算机 Y 上托管的网页。我目前有一个笨拙的解决方案,它几乎可以满足我的需求,即在计算机 X 上获取的视频通过 UDP 套接字发送到计算机 Y。然后将此数据(通过 ffmpeg)发送到使用 v4l2loopback 创建的“假网络摄像头”,然后使用 getUserMedia() 读取该摄像头。这样做我有一个波涛汹涌的视频,滞后不到 2 秒。

我的问题很简单,是否可以直接在 webRTC 框架中读取 UDP 流(以某种方式,如果可以的话),而不是笨拙地通过网络摄像头。

Ben*_*aum 5

您不能直接使用 WebRTC执行此操作,因为它不公开原始套接字,但您的选择是:

将其转换为 HLS 实时流

  • 将 UDP 流(我假设为 RTMP?ffmpeg 输出是什么?)通过nginx-hls-rtmp.
  • 使用hls.js播放上述视频。

将其转换为 DataChannel 并通过 SCTP 发送

  • 设置媒体流 WebRTC 服务器,例如wrtc
  • 通过 WebRTC 连接到 Web 客户端(例如简单的对等点可以提供帮助)。
  • 设置一个通过 SCTP 工作的 DataChannel(在 Chrome Safari 和 Firefox 中通过 udp 使用 libsctp 实现)。
  • 在数据通道上发送数据并在那里解码。

通过 WebRTC 直接从 X 连接到 Y

  • 您还可以设置 WebRTC 服务器并将 ffmpeg 连接到该服务器
  • 在 WebRTC“服务器”对等方和客户端之间打开一个媒体通道。
  • 播放视频。

在这些选项中 - 第一个是迄今为止最简单的。缺点是它不太适合低延迟流媒体+有一些开销。

我建议您从它开始,然后逐步提高。