在不同的平台上流式传输桌面以提高速度

时间:2012-02-14 07:33:30

标签: c bitmap cross-platform screen-capture

我需要在'C'中创建一个小型的远程桌面软件,它可以在各种平台上编译(linux,freebsd,windows ......)我一直在研究各种图像格式,但仍然无法到来好好利用它们,现在,我就是这样做的:

1. Convert All Formats into Windows Bitmap (XImage,...etc)
2. Do a byte-to-byte comparion and replace the identical bytes with zeros
3. Preform a RLE (Run Length Encoding) on the Resulted data.
4. Transmit the Packet to the Server
5. Inverse the Operation on the Server by Reconstructing the Image through the previous image (Comparing Last Image with the New one Discarding Zero Bytes after RLE)

但这往往非常慢,因为位图图像格式已经有非常大的文件,因为它不包含压缩,而在Mac OS X等平台上,由于分辨率非常高,位图大小非常大。 / p>

有没有更快更好的桌面流媒体方式?

1 个答案:

答案 0 :(得分:2)

有些事情你可以在电脑屏幕上加以考虑,主要是屏幕上只有一小部分可以随时改变。

你可以看看这三种方法:

  1. 将屏幕分成矩形,因为每个屏幕更新只传输那些已经改变的地方。
  2. 使用压缩图像格式(如png或jpeg),或使用zlib而不是RLE压缩位图。
  3. 捕获图像时减少图像的颜色深度,将图像缩小为4位或8位颜色将大大减少您发送的数据量以及您需要比较更改的数据量。
  4. 根据您希望如何编写服务器,您可以从操作系统中获取有关屏幕哪些位已更改的提示,以减少您必须执行的处理量。

    最后,(如果这不是家庭作业)那么看看VNC已经做得很好的事情,甚至有java或c#版本。