4

概述

是否可以使用带有 WebRTC 的 VNC (RFB) 来使用 Node Js 实现远程屏幕控制?我从 RFB 获取远程屏幕帧,我想将其转换为 MediaStream,然后发送到客户端。我试图在网上搜索任何解决方案,但没有找到我可以使用的东西。

我发现的可能解决方案

  1. ffmpeg 帧编码(我不确定是否可以将帧编码为适合 MediaStream 的内容)
  2. 将帧放入画布元素,然后捕获到 MediaStream

主要问题

如何编码 rfb 帧以​​适合 Mediastream 和 WebRTC

到目前为止我一直在使用的东西

我只是将 rfb 帧转换为 png 图片,发送到客户端并使用画布渲染它。问题 - 低帧率,相当大的延迟

除了WebRTC还有其他解决方案吗?

4

1 回答 1

3

我认为 WebRTC 是一个很好的解决方案,这个开源项目neko已经做到了。他们没有使用 VNC(而是使用 GStreamer 来捕获 X11),但这完全有可能改变。

由于 png 是无损的,因此您会浪费大量带宽,如果可能的话,我会编码为 VPx 或 H264。

您是通过 DataChannel 传输这些 png 吗?如果可能的话,我也会使用 RTP。浏览器将丢弃延迟帧(和其他优化)以确保您获得最佳体验。

于 2020-03-18T18:36:00.283 回答