缘由:由于实验室上课人数多加之投影仪效果不好,老师讲课时大屏幕上的内容很多同学看不清楚。
材料:实验室平均每两名同学配备一台电脑。
目的:设计一款软件,包括有客户端和服务端,由老师在服务端演示软件操作及PPT放映,客户端同步接收服务端主机画面并显示。
我是一名大三的学生,对软件很感兴趣并一直坚持学习C++,想做这个项目来锻炼一下自己,请各位朋友前辈就这个项目中的屏幕录像及局域网传输等问题提供一下思路。非常感谢!就项目的跟进讨论感兴趣的朋友可以关注我的博客http://blog.csdn.net/kicer,谢谢。
这个比较复杂,很锻炼人,如果你真的认真做的话,客户端有视频解码播放,服务器端录像,数据发送还算简单,但也要考虑一对多发送。设计一种socket模式。局域网网速可能好点。视频处理的用DirectShow看能不能有现成的库,自己实现视频编解码难度太大了。
谢谢你的回复。
老师讲课那边主要是PPT演示和一些软件操作的步骤,2帧/s的速率应该就可以,可以考虑不做视频录像用截图的方式吗?我的想法是,利用Windows下的截图功能每秒截图两次保存后由客户端同步接收并强制刷新。不知可否?服务端截图#保存#的话能否及时响应客户端的需求?客户端是被动接收呐还是由服务端主动发送?
因初次接触此类问题,现在还处于论证策划的阶段,请诸位不吝赐教,谢谢
不错,学习,帮顶!
这个由服务器主动发送比较好。你可以先试试一对一的方式,看效果如何。
如果只是记录屏幕上的东西你可以考虑发送数据时做个简单的帧差压缩,因为很短的时间内,你截屏的图像不不一样的区域极少,一样的区域极多,能省很多带宽的
屏幕推送?
screen push...
首先要截取服务器的屏幕(截屏幕的速度自己定)。直接保存成位图数据发到客户端。
效率问题,将屏幕分解成8*8 或者16*16 的二维数组
小格子区域内容变化的画 才往客户端发送某一个格子的位图信息。客户端收到后只改变次格子位置的显示更新。
数据结构和协议需要自己设计。
关于鼠标的位置 截取屏幕貌似截取不到, 需要单独发送鼠标的位置变化的信息。
你想的太复杂了~
如果觉的Bitmap有点大 可以压缩下
我的见解:
1、既然在同一个网段内,可以用“广播”发送
2、可以采用异或算法,然后再压缩,这样速度会快一些
3、鼠标的位置截获不到,要单独处理
4、用消息队列,这样视频看起来会平滑一些
……
何不换个思想呢
为什么非要录频呢。
先把ppt分发到每个机器。
如果不想这么做,就临时发送过去到隐藏文件夹
然后发送命令打开。 然后发送鼠标消息过去就成了嘛。
不光是PPT放映,还有软件操作的演示等。谢谢cattycat,classpatterns,liangchencf,shaozg168的建议。剩下的自己去做啦。谢谢诸位。结贴