CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

为了实现远程桌面控制,如何高效率传输屏幕画面?我正着急呢!高手请指点啊!!!

楼主zzg315(依然)2006-03-20 22:52:45 在 VC/MFC / 网络编程 提问

为了实现远程桌面控制,如何高效率传输屏幕画面?  
  我有一下几个难点没解决:  
  1.如何高效捕获当前屏幕?  
  2.因为要将捕获的屏幕传送给对方,如何减少传输的数据量?  
  3.有没有相关的程序可以借鉴?  
   
  我正着急呢!高手请指点啊!!! 问题点数:100、回复次数:36Top

1 楼Featured(我握着爱情的门票静静排队……)回复于 2006-03-20 22:56:55 得分 10

要远程控制,那就只有一帧一帧地传送。  
  因为还要返回鼠标位置和操作,以便在受控机上复现  
   
  最多采用JPEG编码下  
   
   
  例子主要看这几方面:  
  1   截屏:这个没什么好说的。  
  2   Jpeg压缩  
  3   网络传输  
  4   鼠标操作  
   
  每个模块都有很成熟的可供参考。到www.vckbase.com上都能搜到相关的Top

2 楼zzg315(依然)回复于 2006-03-20 23:22:10 得分 0

我想只传输屏幕中只发生变化的点,  
  而且每秒最好能传输5帧以上的,我担心JPEG编码和解码会太占用CPU。  
  有没有视频压缩的方法?  
  谢谢楼上的大哥!Top

3 楼DrSmart(斯玛特)回复于 2006-03-21 00:51:31 得分 5

UltraVNC开源的库,速度很好可以和radmin相比,你不会做木马吧,最近怎么都是间接的问这些问题Top

4 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-21 06:08:28 得分 0

http://blog.joycode.com/jiangsheng/posts/10410.aspxTop

5 楼zzg315(依然)回复于 2006-03-21 10:45:05 得分 0

呵呵,小弟我是做木马,  
  我的毕业设计是要做个远程控制软件,但现在就是对图像压缩传输还不懂Top

6 楼auly403(卡西*丁布)回复于 2006-03-21 10:47:12 得分 0

路过Top

7 楼wlwlxj(wlwlxj)回复于 2006-03-21 10:48:47 得分 8

呵呵,很简单  
  时间和空间问题  
  数据压缩,过来解包,这样可以解决一些问题,但是解饱过程需要CPU计算  
  时间换取传输过程中空间Top

8 楼gohappy_1999(碧水蓝天)回复于 2006-03-21 12:29:07 得分 0

gzTop

9 楼zzg315(依然)回复于 2006-03-27 18:06:54 得分 0

有人知道WINDOWS自带的那个远程登陆是如何实现的么?Top

10 楼coolzdp(unreal张师傅)回复于 2006-03-27 23:48:52 得分 15

判断当前屏幕位图是否变动。有变动就找出发生变化的区域压缩传送。  
  这个不懂图像压缩恐怕做不出好的。  
   
  我的毕业设计也是这个。原来想做的好一些但时间紧最后基本没压缩就把位图发过去了:<  
   
  测试了局域网可以一用。Internet就放幻灯片了!  
   
  lz可以搜一下这个"偷窥者(客户端/服务端)   "参考一下。  
  不过我在internet上好像没好使过.Top

11 楼hlidea()回复于 2006-03-28 11:38:09 得分 8

找出屏幕有变化的区域似乎比压缩更占用CPU,涉及到模式识别、匹配问题,比如人家开个窗口看电影,你是不是每次都要把那个窗口从头扫到脚,还要看到底发生了变化没有,显然更费事,不如直接全屏压缩、传送Top

12 楼coolzdp(unreal张师傅)回复于 2006-03-28 11:46:29 得分 0

楼上没用过监控程序吧.  
  电影用DixectX显示,你想抓还抓不下来呢.就是一个黑块.  
   
   
  直接全屏压缩当然简单,不过lz的要求不是   1.如何高效捕获当前屏幕?  
  Top

13 楼wqrz_015()回复于 2006-03-28 14:25:32 得分 0

先要解决压缩问题         一个1024屏幕jpg压缩       一桢有80K       一秒2桢的话     一秒数据量就是160KTop

14 楼wqrz_015()回复于 2006-03-28 14:26:34 得分 0

要是压的太小     连屏幕的字都看不清楚Top

15 楼zzg315(依然)回复于 2006-03-31 12:04:06 得分 0

原本我想用JPEG2000压缩的,可是,虽然我是数学系出身的,但,小波分析也看不懂,因为实变函数、泛函分析没学好。  
  压缩是我最头痛的,最近也没仔细想了。  
  正如coolzdp说的,我不并不试图抓取DixectX视频或游戏的图片。  
  我准备将屏幕分成8*8的小块,对每个小块分别采样,如果这些采样点发生了是否改变代替整个小块是否发生了变化。  
   
  我发现MPEG-2压缩还是可以实现的,它主要用的DCT变换,比小波的理论要浅的多。Top

16 楼vc_asm(哥俩好)回复于 2006-03-31 14:30:48 得分 0

路过,看看,呵~~~~Top

17 楼zzg315(依然)回复于 2006-04-01 11:02:08 得分 0

路过的同志指点一下哦!  
  Top

18 楼linuxghs()回复于 2006-04-01 11:07:17 得分 0

网上有个vc++的代码的,可以远程控制,文件传输等等的Top

19 楼zhejiang9(千万别忘了结帖!^_^!!)回复于 2006-04-01 21:39:18 得分 0

UPTop

20 楼zzg315(依然)回复于 2006-04-02 03:46:18 得分 0

有人知道S-DEMO或CsmRec是怎么实现高效屏幕压缩的么?Top

21 楼MSDN3000(八门金锁)回复于 2006-04-02 11:02:10 得分 8

JPEG除了付里叶变换外,还有量化,霍夫曼编码,行程编码,如果楼主不大清楚,时间有限而且打算自己写的话,不建议使用这种方式.  
          可以考虑使用压缩算法对Bitmap压缩,比如使用LZSS等网上有现成的源码,而且原理也不复杂,压缩效果虽然比不上现有的RAR等,也可以大幅度的降低传输数据了,这样实现起来速度快一些.Top

22 楼MSDN3000(八门金锁)回复于 2006-04-02 11:03:51 得分 0

一般的Jpeg和MPEG-2的压缩过程是类似的,Jpeg2000在实现上面不同就是变换算法而已.Top

23 楼zzg315(依然)回复于 2006-04-02 23:01:40 得分 0

MSDN3000,谢谢你。可以看出,你在图像编码方面是高手啊。  
  现在我还遇到一个难题,我现在捕获屏幕用的是GDI方式,但效率不高,每秒只能截取5帧就让CPU吃不消了。  
  可以有其他的方式么?Top

24 楼structme(带着放大镜看文章,噢靠!怎么这牛啊!)回复于 2006-04-02 23:57:53 得分 0

DixectX   Show   有相关的视屏传送函数。  
   
  如果你不想去研究   图象压缩。。。你就用它吧Top

25 楼manplus(魅力加加)回复于 2006-04-03 02:33:31 得分 0

mrkTop

26 楼yuanbocsut(井冈星火)回复于 2006-04-03 13:05:57 得分 0

网上有免费的VNC源代码,请下载了之后,看懂了之后,就可以像改成什么样子就什么样子,呵呵  
   
  Top

27 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2006-04-04 17:43:25 得分 0

速度的提高关键在对数据的压缩Top

28 楼butterwx(小溪)回复于 2006-04-04 17:52:43 得分 0

加快数据传输   有两个方法     1   减少单位时间上的帧数   2.降低要显示的像素   .Top

29 楼etre(林荃)回复于 2006-04-04 18:01:29 得分 6

这个不难.  
  屏幕变化的采集有两个实现  
  1.驱动实现这种实现效率高.  
  2.HOOK实现这种实现效率低.  
  数据的压缩.  
  1.比如JPEG(很多采用),压缩比高,速度一般  
  2.ZRLE   压缩一般,速度快  
  3.JPEG2000压缩很高,速度慢.(我实现了此方式)  
  ......  
  Top

30 楼zzg315(依然)回复于 2006-04-04 21:42:06 得分 0

在截取屏幕时,有人有驱动实现的源代码么?  
  MIRROR   Driver。  
  我的邮箱是zhangzhenggui@126.com。  
  发个给我,谢谢啊!Top

31 楼etre(林荃)回复于 2006-04-05 09:11:59 得分 0

驱动实现的效率高,你可以以DDK的代理修改一下吧Top

32 楼rwx_tech(寇仲)回复于 2006-04-05 11:22:44 得分 0

高效截屏还是需要写显卡驱动。可惜这方面的资料很少。UltraVNC代码是公开,但是他用的也是别人写的驱动,所以这部分代码还是没有的。Top

33 楼gohappy_1999(碧水蓝天)回复于 2006-04-17 10:44:41 得分 0

gzTop

34 楼ChangYong(石头)回复于 2006-04-17 22:03:23 得分 20

留下邮箱,我给你个现成的代码,你给我发邮件把changyong125@sohu.com记的要给我分哦Top

35 楼flowlight(流光)回复于 2006-04-18 09:23:11 得分 20

这类应用的瓶颈是在网络传输  
  压缩的目的就是为了降低网络流量  
   
  远程控制网络要求实时的,原样的还原远程桌面  
  主要是实时,原样这两点  
   
  实时就必须为高压缩,原样就必须为无损  
  JPG等压缩为是为了"高精度的还原图片"而开发的压缩算法  
  是有损压缩,并且为低压缩(尽管对应图片是高压缩,但对图像是低压缩)  
  目前的图片压缩算法是不适合用于远程控制网络的  
   
  所以目前这类应用是采用类似MPG等动态图像的压缩算法,采用帧间差别压缩方式  
  但跟这类压缩又有区别,这类压缩还是有损压缩  
   
  远程控制网络的图像比常规的图像有自己的特征,帧间的变化极其小,并且主要为图形  
  图形的压缩是之大的,不是一般的图片可比  
   
  简单说就是差别比较+图形压缩  
   
  可以看看QQ的远程桌面协助就知道了  
   
   
  Top

36 楼zzg315(依然)回复于 2006-04-18 13:18:19 得分 0

感谢各位给小弟的宝贵的建议!  
  我是受益匪浅啊!  
  好了,我要结贴了,再次感谢各位!Top

相关问题

  • 远程桌面
  • 高手指点,很着急!!!
  • 远程桌面控制?
  • 关于远程桌面
  • 远程桌面连接
  • NETMEETING 远程桌面共享
  • 远程桌面连接
  • 关于远程桌面
  • 2003远程桌面问题
  • win2003远程桌面问题!

关键词

  • 屏幕
  • jpeg
  • 传输
  • 压缩
  • 实现
  • 传送
  • 问题
  • 时间

得分解答快速导航

  • 帖主:zzg315
  • Featured
  • DrSmart
  • wlwlxj
  • coolzdp
  • hlidea
  • MSDN3000
  • etre
  • ChangYong
  • flowlight

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo