使用 WebRTC 的 VNC 远程屏幕控制

5

概述

是否可以使用WebRTC和Node Js实现使用VNC(RFB)进行远程屏幕控制?我从RFB获取远程屏幕帧,并希望将其转换为MediaStream,然后发送到客户端。我尝试在网络上寻找任何解决方案,但没有找到可用的。

我发现的可能解决方案

  1. 使用ffmpeg帧编码(我不确定能否将帧编码为适合于MediaStream的格式)
  2. 将帧放入画布元素中,然后捕获到MediaStream

主要问题

如何将rfb帧编码为适合于Mediastream和WebRTC的格式?

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

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

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

1个回答

4
我认为WebRTC是一个很好的解决方案,这个开源项目neko已经实现了。他们没有使用VNC(而是使用GStreamer来捕获X11),但完全可以更改。
由于png是无损的,因此您浪费了很多带宽,如果可能的话,我会编码为VPx或H264。
您是否通过DataChannel传输这些png?如果可能的话,我也会使用RTP。浏览器将丢弃延迟的帧(和其他优化),以确保您获得最佳体验。

谢谢你的回答!是的,我想h.264是一个很好的解决方案,但我还没有找到任何将rfb帧编码为h.264的解决方案。有什么建议吗?此外,我正在通过套接字连接传输png文件。 - Valery Magadeeva
你可以使用 GStreamer 的 rfbsrc,这样就可以解码了,然后你可以编码成任何你想要的格式! - Sean DuBois
使用GStreamer捕获X11是否也适用于控制Windows / macOS操作系统,例如VNC? - baptx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接