vnc2flv(或者vnc2swf)的原理分析

来源:互联网 发布:大数据的发展前景知乎 编辑:程序博客网 时间:2024/06/06 00:35
VNC使用远程帧缓存协议(VFB,remote framebuffer)来实现桌面共享和远程控制。一般包括VNC Client和VNC Server两部分,Server默认使用5500端口监听,VNC中不同的桌面(比如:0 to :3)使用不同的端口(比如5900到5903)。如果你在A上使用VNC访问B,那么VNC将把器A上的键盘鼠标操作传输给器B,而B则把需要显示的帧传输给A,这就是VNC的原理。

VNC Client在连接VNC Server的时候,可以使用share和viewonly的模式,这时候可以实现多人共享一个桌面。比如用户A使用VNC连接了VNC Server,并使用1号桌面,用户B可以使用share和viewonly的模式连接VNC server的1号桌面,那么用户B的连接不会断开用户A的连接,并且用户B只是观看模式,用户B可以看到用户A的所有操作。vnc2flv(或者vnc2swf)就是使用了这种Share和viewonly的模式。

vnc2flv(或者vnc2swf)本身就相当于一个VNC Viewer,它们都实现了VFB协议。不过它们接收到对应的显示帧的时候,不是显示出来,而是在内存中模拟显示,并且按照一定的时间间隔把帧存储起来。存储的时候可以选择不同的格式存储,vnc2flv与vnc2swf的主要不同就在于存储格式的不同。

每当你开启vnc2swf或者vnc2flv的时候,它就以Share和viewonly的模式的连接上VNC server的指定桌面,并把显示记录下来,这就实现了屏幕录制。

如果把它们配置在VNC启动的脚本中,那么就可以记录使用VNC连接到这台机器上的任何操作。由于VNC 缺乏安全性,可以和SSH结合使用。


抓屏代码:
vnc2swf -startrecording -geometry 800x600 -depth 16 -framerate 5 demo.swf vnc_server_ip:x.0
上面,demo.swf是要保存的flash文件,vnc_server_ip是要抓屏的运行着vncserver的机器的地址,x是vncserver的display number,比如vncserver的启动命令是vncserver :2,那么这个x就是2
输入访问vnc的密码后,就会出现一个vnc桌面的窗口,左上角有数字表示当前帧
关掉这个窗口,录制结束。打开这个flash文件看看吧
原创粉丝点击