c# -减小图像大小的最佳方法是什么(对于通过tcp传输)?
本文关键字:于通过 tcp 传输 是什么 方法 图像 最佳 | 更新日期: 2023-09-27 18:15:59
我写了一个应用程序,直播屏幕流到远程应用程序。它抓住屏幕(调整图像大小为640x480),然后使用GIF压缩(使用System.Drawing
)压缩图像,将其保存到byte[]
数组并将其传输到另一个应用程序。
问题是我得到的图像大约是50KB,这意味着在30FPS下它将需要每秒传输1.5MB的数据。目前我的FPS只有8-10。我知道有办法解决这个问题。也许使用flash视频使用的技术?
我个人推荐使用VNCSharp -它会为你做大部分繁重的工作。有些人可能会说,重新编写这段代码是疯狂的。
如果不是,那么流图像是浪费带宽-你需要有效地建立视频流并传输它。
因为你不需要动画,想要保持无损压缩,你会得到一些更好的压缩与PNG而不是GIF (PNG是无专利的)。据此,可以节省10%到30%。
我认为逐个屏幕捕获并不是获得实时屏幕流的好方法。视频格式通常假设在许多帧之间有一小部分区域会发生变化。另一方面,您需要多做一点工作才能从屏幕上捕获视频。
你可以从这些文章开始:
http://betterlogic.com/roger/2010/07/list-of-available-directshow-screen-capture-filters/http://www.codeproject.com/KB/dialog/screencap.aspx与其压缩图像,不如压缩视频流。这就是视频编解码器实现高压缩的方式:通过利用流中连续图像的相似性。
如果你一个一个地压缩你的图像,你就失去了这个性能优势,并且在带宽上产生了巨大的差异。