如何在VNC通信中添加额外的数据帧?

时间:2011-07-12 10:34:44

标签: video-streaming add frame vnc

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

如果您不需要786kb,只需在屏幕的上半部分进行,您将节省一些带宽,并且您将获得786kb的一半用作数据。

你应该能够实现大多数(如果不是全部)加密。你也可以做很多混淆。也许每个第3位都是随机且无用的。也许如果第1位为1,则翻转所有内容。等等。

答案 1 :(得分:0)

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

你有几个方向。

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

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