我开始在C++ (Windows platform)中实现某种远程屏幕录制(类似VNC)的客户机/服务器软件,它只是通过网络传输屏幕更新(图像块)。
屏幕被分成块,在通过网络发送之前,每个瓦片都被压缩成JPEG (可能我会使用libjpeg-turbo)。所以我的问题是,为这些(已经是JPEG压缩的)瓦片实现另一层压缩(无损)是不是很好,比如使用zlib?
我有一种感觉,zlib不会在带宽方面带来任何显着的改进,因为JPEG文件已经被压缩了。我希望避免为实现额外的压缩层而投入更多的时间和金钱,只是为了测试目的,所以我想听听你的建议。
附言:作为一个次要问题,有没有比将tiles编码成JPEG更好的选择呢?也许可以立即进行无损压缩?上面提到的技术(把屏幕分成瓦片,选择更新的瓦片,把它们压缩成=>,=>,通过网络发送)是实现这类软件的好方法吗?
任何类型的输入都将非常感谢!
发布于 2011-06-08 02:02:15
完全没有必要。
更好的选择是使用两种方法:计算块中的颜色,并使用zlib/rle/etc表示较少的颜色,使用jpeg表示较多的颜色。这是最基本的方法。我建议你看看VNC的远程帧缓冲协议。
发布于 2011-06-08 02:21:50
JPEG文件已经压缩到几乎可以压缩到最小的程度。您可能会在报头上节省几个字节,但这可能会被额外压缩的开销所克服。
如果您需要进行快速检查来证明这一点,那么压缩一组示例jpeg文件并查看它们之间的区别应该很容易。
https://stackoverflow.com/questions/6269542
复制相似问题