我开始用 C++(Windows 平台)实现某种远程屏幕广播(类似 VNC)客户端/服务器软件,它仅通过网络传输屏幕更新(图像图 block )。
在通过网络发送之前,屏幕被分为多个 block ,每个图 block 都被压缩为 JPEG(可能我会使用 libjpeg-turbo)。所以我的问题是,为这些(已经 JPEG 压缩的)图 block 实现另一层压缩(无损)会好吗?使用 zlib?
我有一种感觉,zlib 不会在带宽方面提供任何显着的改进,因为 JPEG 文件已经被压缩了。我希望避免仅仅出于测试目的而投入更多的时间和金钱来实现额外的压缩层,因此我想听听您的建议。
P.S.:顺便问一下,除了将图 block 编码为 JPEG 之外,还有其他更好的选择吗?也许立即进行无损压缩?上述技术(将屏幕划分为图 block => 选择更新的图 block => 将它们压缩为 JPEG => 通过网络发送)是实现此类软件的好方法吗?
任何形式的意见都将不胜感激!
最佳答案
JPEG 文件已经被压缩得几乎尽可能小。您可能会在 header 上节省一些字节,但这可以通过额外压缩的开销来克服。
如果您需要进行快速检查以证明这一点,那么应该很容易压缩一组示例 jpeg 文件并查看差异。
关于c++ - 通过网络(远程屏幕广播应用程序)传输 JPEG 压缩的屏幕图 block 时,是否值得/推荐使用 zlib(或类似的)压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269542/