1

有谁知道如何在 vnc 通信中添加额外的数据帧和视频帧。客户端和服务器都将由我处理。以及如何在两侧对额外的数据帧进行编码和解码。

任何帮助,将不胜感激。

4

2 回答 2

1

使用“水印”。您可以设置每 X 帧都有数据。每个像素都将用于存储一些数据。记录每 X-1 帧的每个像素,并且对于每个 X 帧,忽略服务器视频源中的任何实际变化,但如果您希望该位为 1,则使该像素更暗,如果您希望它为 0,请保持像素一样。在 1024 x 768 像素的显示器上,您可以使用此方法每 X 帧存储 786kb 的数据。确保不要压缩将存储数据的帧的流。

如果你不需要 786kb,只为屏幕的上半部分做,你会节省一些带宽,你会得到 786kb 的一半用作数据。

如果不是全部加密,您应该能够实现大多数加密。你也可以做很多混淆。也许每个第三位都是随机且无用的。也许如果第一位是 1,翻转一切。等等等等。

于 2011-07-12T10:53:36.583 回答
0

我在 RFB (VNC) 协议上找到的最佳参考是:http ://tigervnc.org/cgi-bin/rfbproto

你有几个大方向。

如果您不介意扩展协议,那么您只需将新的消息类型添加到您的协议(因为您控制两端)。请参阅clientcuttextservercuttext作为现有消息的示例,用于在任一方向发送任意数量的数据。缺点是如果您的客户端或服务器连接到不同的客户端或服务器,那么这将导致致命错误。

另一种选择是以向后兼容的方式扩展现有消息。例如,您可以通过发送视口外部的鼠标事件(然后发送返回到实际位置内部的最终鼠标事件)来发送客户端到服务器消息。您可以通过发送视口之外的帧缓冲区更新来向客户端发送服务器消息。普通客户端不会显示。

于 2011-07-12T14:30:49.997 回答