带有 WebRTC 的 Vnc 用于远程屏幕控制

Vnc with WebRTC for remote screen control

概览

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

我找到的可能解决方案

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

主要问题

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

到目前为止我一直在使用什么

我只是将 rfb 帧转换为 png 图片,发送到客户端并使用 canvas 进行渲染。问题 - fps 差,延迟相当大

除了WebRTC还有其他方案吗?

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

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

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