终于完成了一个有点难度的东东了。远端屏幕传输。就是效率不高 ( 积分: 5 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
这几天遇到不少高手。

路漫漫其修远,吾将上下而求索
 
哦,我想 guanyueguan,说的隔行扫描与我现在的方法不一样,你是说动态矩形生成的。
今天我在两台机上测了 红蜻蜓 ,结果有点让我意外。256色时在 28% - 30% 左右的CPU 占用。64K 色在 50% - 60% ,基本上与 guanyueguan 一样,我想也许他们的算法都差不多吧。

比我现在版本是要好些,但差距没有我想像中大。至少在CPU 占用方面没有与 VNC 相差大,当然 VNC 是用了不同的方法,它是用 HOOK GDI 来做的,CPU 占用在 10% 以下。但它有个弱点,就是在使用输入法时,更新很慢。

再深入点研究一段时间,再动手做下一版本了
 
现在我认为最大的问题是在不同的显卡环境,抓屏速度的问题。
 
CPU占用是由於截屏造成的,我現在寫的基本上在小變化時略為強一點紅蜻蜓,但在大變化時就差的比較多,這是由於我是單矩形計算造成的,改成和他一樣的多矩形計算就差不多了,效果也會差不多。現在基本上有點眉目了,試了N次才想了點。
不知道QSmile的算法是怎樣的,是不是固定矩形,再加上隔行掃描的?固定矩形唯一的缺點就是冗余,如果有更好的方法去除冗余也不錯。
 
不知道QSmile的算法是怎樣的,是不是固定矩形,再加上隔行掃描的?

----------------
对,就是这样的,上面我已经说了,我在想也许还有提高的潜力。再试试
 
delphi世界qq群:23981160,喜欢Delphi的都进来
 
這個方法我也試過,不過沒深入下去,估計不會比動態矩形差多少。
 
to guanyueguan:
我在盒子上下载了你的这个版本http://www.2ccc.com/article.asp?articleid=4081,并下了控件ICS - Internet Component Suite 5.0:http://www.2ccc.com/article.asp?articleid=3752
1:编译报错,出现“property is read-only”的对话框!是否是我下的控件版本不对,如果下错了,请告知,最好提供链接
2:我是在家测试的,还没来的及装虚拟机,只用本机试的。服务端打开后,用客户端去连接,发现图是一块一块的传过来,而且是一层叠着一层。这是什么原因?是没来得及刷新吗?
以前自己用过这方面的软件,本机试的很正常,最起码没有上述的问题。不知道我有没有说清楚,如说的不准确的地方,还请见凉!
 
我用的是:ICS V5 for Delphi/C++Builder Beta (Nov 11, 2006) :http://www.overbyte.be/frame_index.html

那個程序有點錯誤,是在接收的過程中,我現在也沒去改了,因為忙著做隔行掃描版本。
你應該多調試一下,看看問題在哪。
 
to ddzhouqian:给个邮箱,我把己调试好的程序源码发给你,本机测试没问题,不过,双机测试在传输时有点问题,希望你帮我改一改,改好了别忘了发我一份.
 
xxagri,你傳輸的那個錯誤還沒改好啊?
 
to guanyueguan:
danger 17:56:25
群里有下
------------------------------------------
xxagri 18:11:41
试了.你的这个版与红蜻蜓不相上下,你的刷新速度好象还略快,
xxagri 18:13:05
好象你的上一个版CPU最低占用还少点,只有17%,这个版有20左右.
xxagri 18:15:18
我发给你的源程序在你那可以直接编译吗?怎么从你那过一下到我这就不行了,源码打开时就提示有的属性没有.
xxagri 18:36:50
还是不行,不是源码的问题,应该是ICS版本的问题.
xxagri 18:46:55
可以了,原来是要用ICS Version 6 beta 29/12/2005
 
其实基本上猜出了红的算法,不过我觉得他的冗余还是多了点,所以在想更好的方法。
 
我前天还以为我找到一个可以改进的地方,昨天今天试来一看,发现效果更差了。郁闷中
 
思考一个问题,如何抓锁屏后的界面????
 
我有一个想法,先抓取整屏,保存为图片,然后把图片分成N块,每块取一个点的颜色,再从屏幕相应点取颜色,比较,如果相同则弃,不同,则抓取该小块,发送,更新图片.这样效率一定很高,因为每次比较只需执行N次循环,冗余数据不多,同时,相邻的变化小块可以起抓,这样可以提高效率.
问题是,如何从抓下来的屏幕图片中逐点取颜色,用什么涵数?请教各位.
 
我測試了一下今天修改的程序,發現在小變化時可以超過紅蜻蜓(CPU占用+數據大小),大變化時的差距也縮小了不少(CPU占用+數據大小+效果(由於我還沒在效果上做優化)),再改進一下多矩形計算,就可以超過它了。
 
我的代码被我越改越差了
 
然后把图片分成N块,每块取一个点的颜色

----------------------
每块取一个点? 你如何保证刚好取到这个色彩变化了的点?
 
是有这个问题,但应该可以解决的.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部