1

我正在制作我自己的 teamviewer 版本,您可以在其中向其他人显示您的屏幕,以便他们可以帮助您解决问题并提供支持。但是,我遇到了一个小问题。

首先,当我截取屏幕截图时,.BMP 在内存中大约有 1 MB。在使用 EncodingParams 并将其转换为 ulong 质量 = 20 的 JPEG 后,它下降到 92 kb。但是,我仍然觉得这可能有点太大而无法不断地通过流发送。

有什么方法可以减小图像的大小,或者有什么方法可以减少网络密集度吗?我删除的每个字节都有助于加快速度以适应较慢的连接,并使用更少的带宽。

如果有人能给我一些建议,我将不胜感激。

谢谢

4

1 回答 1

2

要么使用低于 20 的质量,要么减小图像的大小。两者当然都会降​​低质量。但是没有任何明显的压缩技术可以在 JPEG 压缩图像上使用 - 它几乎可以得到尽可能小(即使是高质量的 JPEG 压缩效果也会很差,因为 JPEG 在压缩图像中的实际数据方面做得很好)图像,以及在压缩级别很高时“破坏”像素)。您可以通过拍摄大量 JPEG 图像并使用您喜欢的压缩程序(ZIP、GZIP、BZIP 等)对其进行压缩来证明这一点。

您还可以减少图像中的颜色数量 - 256(8 位)或 64K(16 位)图像的压缩效果比 16M(24/32 位)图像要好得多。

另一个明显的答案是只发送一帧和另一帧之间的差异——只要图片没有太大变化,这会给你带来相当可观的好处——如果有人在玩“射击游戏”类型的游戏,那么爆炸并且场景以 50 fps 的速度变化,这可能不会有太大帮助,但对于常规的办公类型应用程序,每帧变化的像素数量可能很少。

于 2013-08-26T19:38:59.553 回答