【问题标题】:UDP stream into webRTCUDP 流到 webRTC
【发布时间】:2018-10-26 15:52:21
【问题描述】:

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

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

【问题讨论】:

  • 您是否可以控制计算机 Y 和生成流的软件?如果是,为什么要通过 UDP 走额外的路由,而不是首先通过 WebRTC 将其从 X 发送到 Y?
  • 您好,感谢您的评论。不幸的是,我对此并没有真正的控制权。
  • 您可以构建一个 UDP 服务器,该服务器从计算机 X 接收数据,然后通过 WebRTC 将其传送到您想要的对等点(在您的示例中为计算机 Y)

标签: javascript networking udp webrtc


【解决方案1】:

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

将其转换为 HLS 直播

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

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

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

通过 WebRTC 直接从 X 连接到 Y

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

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

我建议你从它开始,然后一路向上。

【讨论】:

  • 嗨,谢谢,这正是我所需要的。对于这些解决方案,您期望什么样的延迟。我已经尝试过 HLS 直播,但发现它比可能更尴尬的选项慢得多
  • HLS - 合理地不少于 4-6 秒的延迟,在 DataChannel 上 - 可能是 2-4 并且 WebRTC 是最快但最复杂的。除非您有交互性要求,否则我会从 HLS 开始,因为它在通过防火墙和缓存方面最简单。 WebRTC 确实适用于 1 对 1 视频。您可以尝试的另一件事是 LHLS(如 twitch)medium.com/@periscopecode/…
【解决方案2】:

在 Windows 中,您可以使用 AVObjects directshow 过滤器 它支持UDP到webrtc。 它还支持眩晕服务器

【讨论】:

    【解决方案3】:

    如果您使用 WebRTC 库,这是可能的。 libdatachannel(我是原作者)会让你打开一个带有视频轨道的 WebRTC 对等连接,并在编解码器是 H264 或 VP8 的情况下直接在轨道中发送 RTP 数据包。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2017-11-25
      • 2013-09-24
      • 2022-06-13
      • 2017-10-18
      • 1970-01-01
      • 2017-09-05
      • 2021-07-28
      • 1970-01-01
      相关资源
      最近更新 更多