当通过网络(远程屏幕播放应用程序)传输JPEG压缩的屏幕分块时,是否建议使用zlib(或类似)压缩



我开始在C++(Windows平台)中实现某种远程屏幕广播(类似VNC)客户端/服务器软件,它只是通过网络传输屏幕更新(图像瓦片)。

屏幕被分为块,在通过网络发送之前,每个瓦片都被压缩成JPEG(我可能会使用libjpeg-turbo)。所以我的问题是,为这些(已经JPEG压缩的)瓦片实现另一层压缩(无损)是否好,例如使用zlib?

我有一种感觉,zlib在带宽方面不会有任何显著的改进,因为JPEG文件已经被压缩了。我想避免为了测试目的而在实现额外的压缩层方面投入更多的时间和金钱,所以我想听听你的建议。

附言:作为一个附带问题,有没有比将瓦片编码成JPEG更好的替代方案?也许可以立即进行无损压缩?上述技术(将屏幕划分为瓦片=>选择更新的瓦片=>将其压缩为JPEG=>通过网络发送)是实现此类软件的好方法吗?

任何形式的投入都将不胜感激!

JPEG文件已经被压缩到几乎可以压缩的程度。您可能会在头上保存一些字节,但这可能会被额外压缩的开销所克服。

如果你需要做一个快速检查来证明这一点,那么应该很容易压缩一个样本jpeg文件的集合,看看有什么区别。

绝对不必要。

更好的选择是同时使用这两种方法:计算块中的颜色,少数颜色使用zlib/rle/etc,多数颜色使用jpeg。这是最基本的方法。我建议您查看VNC的远程帧缓冲协议。

最新更新