网络工程专业毕业论文屏幕录像软件的设计与实现

上传人:阳*** 文档编号:59679367 上传时间:2022-03-04 格式:DOC 页数:60 大小:873KB
收藏 版权申诉 举报 下载
网络工程专业毕业论文屏幕录像软件的设计与实现_第1页
第1页 / 共60页
网络工程专业毕业论文屏幕录像软件的设计与实现_第2页
第2页 / 共60页
网络工程专业毕业论文屏幕录像软件的设计与实现_第3页
第3页 / 共60页
资源描述:

《网络工程专业毕业论文屏幕录像软件的设计与实现》由会员分享,可在线阅读,更多相关《网络工程专业毕业论文屏幕录像软件的设计与实现(60页珍藏版)》请在装配图网上搜索。

1、摘 要信息时代,知识触手可及。网络连接着世界,知识在网络上传播。网络,让人们可以方便的获取知识,也为人们节省了获取知识所需要的时间和经费,网络课程迅速兴起,人们通过丰富多彩的网络课程传播知识,交流经验,尤其是计算机技术课程和游戏演示,需要讲授者将计算机屏幕的动作按帧记录下来,制成视频在网络上传播。基于这个需求,开发了屏幕录像系统。本系统能录制计算机屏幕上的动作,记录下连续时间内屏幕的图像,然后保存成AVI格式的视频文件;还可以实现视频的编辑功能,方便用户将不同的视频拼接以及视频的剪辑。本论文将从相关理论出发,对各个模块的功能和实现进行介绍,并解释用到的技术。本屏幕录像系统以Visual C+6

2、.0为开发平台,采用多媒体技术以及图形图像技术,实现比较全面的功能和便捷的用户体验。关键词:屏幕录像;帧;AVI;Visual C+;多媒体;图形图像技术ABSTRACTThis is the age of information, knowledge is beside everybody. With the link of Internet, people can get knowledge conveniently at the same time knowledge travels on the Internet speedy. This can help people save lo

3、ts of money and plenty time, as a result, resources online is rising with an astonishing speed, through which people learn and communicate. For example, game players and computer technology workers need to show their screen to others so they need to get their computer screen frames recorded and tran

4、sform it to a video and then put it online. Due to this, I developed this screen record software.This software can record the computer screen movement to a video as a AVI format file, in addition, it can also edit the video, which can give the user a easy way to put different videos together as one

5、video.This paper start from some theory which is important to develop the software, and then give a brief introduce to the functions of each module , after that, give out the technology being used in the software. This system was developed in the platform of Visual C+ 6.0, also with the help of mult

6、imedia technology and graphic technology. The system is a very helpful tool for users.Key words: Screen Record; Frame; AVI;Visual C+;Multimedia;Graphic Technology目 录第一章 绪论31.1互联网时代与多媒体技术31.2屏幕录像软件简介31.3VC+与MFC简介31.4本章小结3第二章 相关技术简介32.1数字图像基本原理与技术32.2AVI相关技术32.3钩子技术32.4位图(BMP)32.5Video for Windows技术32

7、.6托盘技术32.7其他相关技术32.8本章小结3第三章 屏幕录像软件系统分析33.1系统需求分析33.2系统可行性分析33.3本章小结3第四章 屏幕录像软件概要设计34.1屏幕录像软件系统结构34.2屏幕录像软件原型与说明34.3部分系统流程34.4本章小结3第五章 软件实现35.1屏幕录像软件详细设计35.2系统的相关类图35.3Hook技术实现35.4根据运行状态显示托盘图标的实现35.5本章小结3第六章 总结36.1系统测试36.2总结与展望3参考文献3附录I 文献翻译3I英文原文3中文译文3谢辞355 / 60第一章 绪论1.1互联网时代与多媒体技术1.1.1计算机引领的新时代电子计

8、算机是一种不需要人工直接干预,能够快速对各种数字信息进行算术和逻辑运算的电子设备。第二次世界大战期间,美国军方为了解决大量军用数据难以快速计算分析的难题,成立了由宾夕法尼亚大学的莫契利和埃克特领导的研究小组来研制能够满足需求的电子设备,三年后,ENIAC于1946年2月14日问世,从此掀开了人类信息化时代的序幕。自从有了计算机,人类的智力被成倍放大,计算机飞速的运算速度让短时间内处理复杂艰难的问题成为可能,大量信息被输入计算机,并通过计算机产生、处理、传播新的信息,由此带领人类走向知识爆炸的时代。计算机的出现深刻地改变了人们的生活习惯和思维方式,人类进入了一个前所未有的时代,很多不可思议的事情

9、奇迹般进入人类视野中,很多传统行业也因为计算机的出现而焕发出新的生机,而计算机本身也催生了一大批新的行业。1.1.2 计算机网络诞生引发的生活方式变革计算机诞生以后,人们有能力在很短的时间内处理复杂艰难的问题,但是计算机问世初期,计算机都是独立运行,独立处理问题,没有交互。但是从20世纪90年代开始,以因特网为代表的计算机网络得到了飞速的发展,它已经从最初的教育科研网络逐渐发展成为商业网络,并成为仅次于全球电话网的世界第二大网络。因特网的出现,给人类社会的变革带来了新的内容,于是,21世纪将会是一个以网络为核心的信息时代,其主要特征就是数字化、网络化、信息化。计算机网络的诞生极大地改变了人类的

10、生活,从此地球村的概念家喻户晓,获取信息变得简易,只要动一下手指头,点几下鼠标,想要的信息就可以在家里获取。地球越来越小,这归功于计算机网络为代表的各种通信网络,拉近了人们间的距离。计算机网络向用户提供的最重要的功能有两个,连通性和共享性。连通性解决的是计算机之间如何通信的问题,在此不再赘述。共享性就是指资源共享,其含义是多方面的,包括信息共享、软件共享等,也可以是硬件共享。屏幕录像软件就是为了充分利用计算机网络的共享性,让教育、经验、培训课程等传统的需要学员、学生集合起来在特定讲授场所进行教授与学习的资源,利用计算机网络提供的共享性,变得更便捷与人性化。教育课程、培训课程等,可以制作成视频录

11、像放到网上,需要的人可以通过网络检索获得资源,并将其下载到本机或者在线观看,然后学习者就可以在方便的时间观看视频来学习知识,极大方便了知识传播者与知识获得者,他们都可以根据自己的实际情况合理安排时间。1.1.3 计算机网络与多媒体技术计算机网络最初的设计目的是传送数据,因特网IP层提供“尽最大努力交付”的服务,配套的TCP协议则解决IP层不能提供的可靠性交付问题。随着计算机与网络技术的飞速发展,计算机的用途已经不再局限于传递数据与科学计算上,现在计算机更多的被用于很多与科学计算无关的工作中,例如娱乐、游戏、通信等等。大部分PC机都被用户作为个人电子助理来使用,在计算机的帮助下完成日常工作,而不

12、是科学运算。随着计算机制造成本的进一步下降与网络速度的进一步提高,许多用户开始利用因特网传送音频视频信息。这些音频、视频信息通畅被称为多媒体信息。多媒体信息(包括声音、视频、图像的信息)与不包括声音、图像的信息有两点重大区别:第一:多媒体信息的信息量相比普通信息要大很多。含有音频或者视频的多媒体信息的信息量一般都很大,以照片为例,假设分辨率为中等质量的1280X960,若每个像素用24位进行编码,那么一张未经过压缩的照片上的字节数约为3.52MB。而如果是活动的图像信息量将会更大,例如不压缩的彩电信号的数据率超过250Mb/s。因此在互联网上的多媒体信息都采取了各种信息压缩技术。在屏幕录像软件

13、中,为了照顾不同网络带宽的用户,在录制屏幕的时候可以通过不同的取样频率来适应网速,取样频率越高,多媒体信息量就越大,反之则越小。第二:在传输多媒体数据时,对延时和延时抖动均有较高要求。模拟的多媒体积信号只有经过数字化后才能在因特网上传输,就是对模拟信号要经过采样和模数转换变为数字信号,然后将一定数量的比特组装成分组进行传送。这些分组在发送时是等时的,但是在使用IP协议的因特网中,每一个分组是独立地传送,因而这些分组在到达接收端时就变成非等时的。如果在接收端对这些非恒定速率到达的分组边接收边还原,那么就会产生很大的失真。如图1-1所示。可以再接收端设置适当大小的缓存来进行缓冲,然后再以恒定速度按

14、顺序读出分组并还原播放,如图1-2所示。 模拟信号 采样后的信号 发送的分组(等时的) 到达的分组(非等时)因特网 图1-1 因特网对分组的非等时传送 到达的分组(非等时) 缓存(队列) 有可能发生 经过缓存变成等时的丢失的分组图1-2 缓存把非等时的分组变换为等时的经过缓存的处理,能够将非等时的分组转变为等时的,从而确保了分组按照发送端的顺序和时间间隔在接收端重组,从而保证正确的传输。有关加入缓存后产生的时延与时效性之间的权衡,现在业界有很多争议,是选择保证分组的正确传输还是宁可丢失少量分组也不要太晚到达的分组,属于互联网策略的讨论,在此不详述。目前因特网上提供的音频/视频服务有三种常见类型

15、:流式存储音频/视频、流式实况音频/视频、交互式音频/视频。(1)流式存储音频/视频 把已经录制、压缩好的音频/视频文件(例如音乐、电影)存储在服务器上,用户通过因特网将这样的文件下载到本地。用户不是等到文件全部下载完毕后才播放音频或者视频,而是边下边播,有一部分内容缓冲好之后就开始播放,剩下的其余部分则继续下载。这里下载是指把后面要使用的信息放到缓冲区内,用户播放完毕并关掉边下边播的软件或者网页之后,硬盘中并没有该音频/视频文件保留。(2)流式实况音频/视频 这类服务类似电视台或者电台的现场直播,只是节目通过因特网完成广播。流式实况音频/视频时一对多通信,节目没有事先录制好并压缩存储,而是由

16、发送方边录制边发送,接收方也是边接收边播放。接收方收到节目的时间与发送方事件发生的时间可以近似认为是同一时刻,存在的时间误差就是电磁波的传播事件和收发双方在处理信号时耗费的时间(现在的技术已经可以忽略这个时延)。(3)交互式音频/视频 这种类型是用户使用因特网和其他人进行实时交互式通信,例如网络电话和网络电视会议。这三类互联网服务中的流式视频/音频就是流媒体(Streaming Media)。其特点就是边下载边播放(streaming and playing)。屏幕录像软件产生的视频文件在互联网上传播时,用的就是互联网提供的流式存储音频/视频服务。视频的作者在本地,用屏幕录像软件将自己计算机屏

17、幕的动作记录下来,压缩成AVI文件,然后经过编辑等处理,制成视频文件,上传到服务器。当有其他用户需要观看这个视频的时候,就向服务器出请求,然后服务器就用流式存储音频/视频服务将作者上传并存储在服务器上的avi文件发送给用户。服务器在存储作者上传的视频的时候,为了节省存储空间,可能会对原文件进行一定的压缩,这也是为什么有时候网络上的视频清晰度较低的原因。这个过程如图1-3所示。因特网视频作者的计算机 用户计算机与服务器建立联系 用户计算机屏幕录像软件记录下屏幕动作并用avi格式存储 上传至网络 压缩后存储 服务器用流式存储音频/视频服务发送视频图1-3 互联网的流式存储音频/视频服务1.2屏幕录

18、像软件简介1.2.1屏幕录像技术现状多媒体技术是当今信息技术领域发展最快、最活跃的技术,是新一代电子技术发展和竞争的焦点。多媒体技术给很多传统行业带来了变革与活力,例如应用多媒体技术的课堂更加生动,影视界由于多媒体技术的引入而有了带给人们更加丰盛的视听盛宴的能力。人们的生活、学习、工作和娱乐等活动因为多媒体技术而变得更加便捷、丰富。屏幕录像软件作为一款能够改变传统教学方式的重要软件,正受到越来越多的关注,它能给人们的学习带来极大方便,借助网络,应用屏幕录像软件可以很方便的将课程资源录制下来,然后让世界各地的人们在适当的时间观看学习。一直以来,人们对屏幕录像软件的理解,都是录制屏幕操作的软件,但

19、是严格意义上来说,“屏幕录像软件”是计算机多媒体术语,除了包含录制窗口动作以外,还包括了另一个重要来源,即录制计算机视窗环境中的视频内容,例如各种播放器播放的视频、网页上的视频等。因此,屏幕录像软件完整的定义应该是视频录像软件和屏幕录像软件的并集。因此,屏幕录像软件的定义应该是:能够录制来自计算机视窗环境桌面操作、播放器视频内容,包括各种播放器播放的视频内容、录制游戏视频等功能的专用软件。目前比较流行的屏幕录像软件有很多,大多都是直接下载后运行就能进行屏幕录像的基本操作。比较有名的屏幕录像软件有:超级捕快、屏幕录像专家等。它们的界面如图1-4、1-5所示。图1-4 超级捕快的用户界面 图1-5

20、 屏幕录像专家用户界面 一个优秀的屏幕录像软件应该有客户有好型界面,即操作简单、容易掌握,还要具有全面而强大的功能,例如能够根据不同的网络状况采取不同的取样频率,得到同一段动作的大小不同的avi文件,并且能够对获得的视频进行编辑等功能。通过研究体验比较流行的屏幕录像软件,能够更好的理解屏幕录像的原理,并且吸收它们成功的经验,例如用户界面布局等方面,还能通过体验它们不便捷的地方而在开发时注意避免同样的问题。1.2.2屏幕录像软件功能用户可以用屏幕录像软件将当前屏幕中的操作过程录制下来,并生成AVI文件,用户可根据需要选择是否录制鼠标的动作,并且可以根据存储状态以及网络带宽等因素决定每秒录制的帧数

21、,而且可以对已经录制好的AVI文件进行一些像截取、合成这样简单的编辑操作,方便用户裁剪录制过程中的错误。1.2.3屏幕录像软件的开发环境与运行环境操作系统:Microsoft Windows 7 Enterprise,32 bit。程序语言:Microsoft Visual C+6.0集成开发环境、MFC(Microsoft Foundation Class)。开发包:Microsoft Visual C+6.0 SDK(Software Development Kit)。硬件:ASUS K40in,Core2.1GHz CPU,2GB Memory,320GBHarddisk。运行环境:Wi

22、ndows NT操作系统。1.3VC+与MFC简介1.3.1VC+6.0简介Microsoft Visual C+6.0是微软公司推出的基于Windows操作系统的可视化C+编译工具。它具有良好的界面和操作,支持标准C/C+规范,它在开发人员中很流行。VC+开发环境基于Windows操作系统的可视化,面向对象的集成开发环境,(Integrated Development Environment,IDE)。在该环境下用 户可以开发有关C 和C+的各种应用程序,应用程序包括建立、编辑、浏览、保存、编译、链接和调试等操作,这些操作都可以通过单击菜单选项或工具栏按钮来完成,使用方便、快捷。它还提供了项

23、目工作区 (WorkSpace)、应用程序向导(AppWizard)、类操作向导(ClassWizard)和WizardBar等实用编程工具。工程与项目工作区在Visual C+集成开发环境中,把实现程序设计功能的一组相互关联的C+源文件、资源文件以及支撑这些文件的类的集合称为一个工程。工程是Visual C+IDE 开发程序的基本单位,一个工程至少包含一个工程文件,工程文件的扩展名为.dsp。Visual C+IDE以项目工作区来组织应用程序的工程,项目工作区文件的扩展名为.dsw,这种类型的文件在Visual C+中级别是最高的。项目工作区含有工作区的定义和工程中所包含文件的所有信息。所以

24、,要打开一个工程,只需打开对应的项目工作区文件(*.dsw)即可。项目工作区窗格一般位于屏幕左侧,包含 ClassView(类视图)、ResourceView(资源视 图)及(文件视图)3 种视图。ClassView ClassView 用于显示工程中定义的类。展开文件夹将显示工程中所有的类,包括系统 生成的和用户自定义的。单击类名左边的“+”,就可以看到类的数据成员和成员函数。我们可以看到,在ClassView 中 ClassView 使用了各种各样的图标,它们被用来标识 类、类成员和工程中的其他项。ResourceView 用于显示工程中所包含的资源文件。展开文件夹可显示所有的资源类型。显

25、示的资源类型包括 Accelerator(加速键)、Dialog(对话框)、Icon(图标)、 Menu(菜单)、StringTable(串表)、 Toolbar(工具条)、Version(版本)等。 双击底层某个图标或资源文件名,可以打开相应的资源编辑器。 用于显示所创建的工程。展开文件夹后可以看到工程中所包含的文件。除了查看,还可以管理文件,包括增加、删除、移动 、重命名和复制文件等。单击文件类型左边的“+”可看到工程中该种类型的所有文件,双击一个文件即可打开该文件。一个应用程序工程主要包含实现源文件(*.cpp) 、头文件(*.h)和资源文件(*.rc)等 文件类型。Standard 工

26、具栏中包括一些与文件和编辑有关的常用操作命令,每个按钮的功能与文件(File)、编辑(Edit)和查看(View)等主菜单中的某个菜单项对应。Standard 工具栏按钮从左到右依次对应的菜单项为:New Text 、Save、 Save All、Cut、Copy、Paste、Undo、Redo、 Workspace、Output、Window List、Find In Files、Find、Search。Build MiniBar 工具栏中主要包括了工程的选择、编译、 链接和调试等操作命令,每个按钮的功能与编译和调试菜单中某个菜单项对应。Build MiniBar 工具栏按钮从左到右依次对应

27、的菜单项为: Compile、Build、Stop Build、Execute、Go、 Insert/Remove Breakpoint。WizardBar 工具栏可以对ClassView 和 ClassWizard 中的命令进行快速访问,使类和成员函数的操作更加方便,WizardBar 会自动跟踪用户程序的上下文。WizardBar 工具栏上从左到右分别是Class List 下拉列表框、Filter 下拉列表框、Member List 下拉列表框和Action 控件。Action 控件含有一个按钮和一个下拉菜单。3 个列表框分别确定当前的类、ID和成员函数,Action 控件用于完成一些常

28、用功能。单击Action 按钮旁的下拉箭头时,可打开Action 菜单。通过选择菜单项,可执行跳到函数定义、增加消息处理函数等操作。AppWizard 与ClassWizard AppWizard(应用程序向导)的作用是帮助用户一 步步生成一个新的应用程序,并且自动生成应用程序所需的基本代码。它是Visual C+ 提供的一个实用编程工具,用它产生C+ 源代码框架。将它与ClassWizard 一起配合使用,可大大节省用于开发应用程序的时间和精力。应用程序向导AppWizard 在Visual C+中,开发Windows 应用程序有很多方法,最简单、最方便的方法是使用应用程序向导 AppWiz

29、ard。在可视化开发环境下,生成一个应用程序要做的工作主要包括编写源代码、添加资源和设置编译方式。利用应用程序向导可以快速创建各种风格的应用程序框架,并可自动生成程序通用的源代码,这样大大减少了手工编写代码的工作量,使程序员能把精力放在具体应用代码的编写上。启动Visual C+, 进入Visual C+IDE,从File 菜单上选择New 菜单项,此时将弹出New 对话框。该对话框有4个选项卡,分别用于创建新的Files、Projects、 Workspaces 和Other Documents。1.3.2MFC简介MFC(Microsoft Foundation Classes),是一个微

30、软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C+ 开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。 MFC 应用程序的总体结构

31、通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。 Windows 应用程序中,MFC 的主包含文件为Afxwin.h。 此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。 由于它的易用性,初学者常误认为VC+开发必须使用MFC。这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。下面介绍一些重要的MFC。CWnd:窗口,它是大多数“看得见的东西”的父类(W

32、indows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。 CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)。 CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd:

33、Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。 CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog对话框。 CWinApp应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立与撤消,主窗口和文档模板的建立。最

34、常用函数InitInstance()初始化。 CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。CPen笔,画线。CBrush刷子,填充。 CFont字体,控制文字输出的字体。CBitmap位图。CPalette调色板。 CRgn区域,指定一块区域可以用于做特殊处理。 CFile文件。最重要的不外是Open(打开),Read(读入),Write(写)。 CString字符串。封装了C中的字符数组,非常实用。 CPoint点,就是(x,y)对。CRect矩形,就是(left,top,right,bottom。1.4本章小结本章简单介绍了屏幕录像软件所处的时代与技术背景,

35、简单介绍了屏幕录像软件的需求与多媒体互联网时代的契合之处,并简单描述了屏幕录像软件的基本概念与基本功能,给出了当前流行的屏幕录像软件例子。本章给出了屏幕录像软件的功能结构模型,为后面的开发与实现构架了框架,然后又给出了开发屏幕录像软件的软件、硬件系统及运行环境。第二章 相关技术简介2.1数字图像基本原理与技术2.1.1计算机图像的形成计算机图形学在信息化时代迅速发展,称为一门全面独特的学科,与多媒体关系非常密切。在其相关理论支撑下,各种计算机图形软件业得到相应的快速发展,许多实用、强大的图形图像软件如雨后春笋般出现,给人们的生活增添了色彩与便捷。屏幕录像软件与计算机图像密切相关,因此计算机图像

36、技术相关理论是不可或缺的技术知识储备。计算机的图像显示方式通常有屏幕显示、打印机打印屏幕上的图案和绘图机输出图样等方式。屏幕录像软件关注的是屏幕显示,软件通过将屏幕的图像按帧保存后按顺序连续播放,就得到活动的视频。像素是组成图像的基本元素,通过点亮一些像素,灭掉另一些像素,大量像素的明灭就在屏幕上组成了宏观的图像。复杂的图形系统,都是由一些最基本的图形元素组成的,利用计算机编制图形软件时,最重要的是要编制基本图形元素。一个像素构成一个点,点是最基本的图形元素。利用点,可以构造出其他基本二维几何图形,然后这些二维集合图形可以构造出更为复杂、精美的其他图形图像。计算机在将图像显示在屏幕上的时候,不

37、可能完全客观、精准的将现实世界中的图像分毫不差地绘制出来,这是由于计算机的屏幕是由一系列排列的点阵组成,像素之间有空隙,所以不可能完全精准。但是这并不妨碍计算机用最接近客观形象的图像来表征这些现实事物,而且这样的准确度也能满足人们的需求。当要显示图像时,计算机总是确定最佳逼近真实图形的像素集合来显示图像。为此,计算机有很多算法来近似显示图像。计算机中常见的图形有一维、二维、三维,对于一维图形,有算法能够快速、准确的刻画最贴近一维图形几何定义的图像,例如DDA(数值微分)算法、重点划线法、Bresenham算法等等可以用来画简单的直线,而对于圆、椭圆、抛物线、双曲线等也都有相应的算法,例如点圆画

38、法、圆的Bresenham算法等等。对于多边形,有两种重要的表示方法:顶点表示法和点阵表示法。有了这些算法,可以方便的将其编写成程序,给定参数后可以画出符合要求的图像。很多编程语言都已经有人做出了相应的函数并集成到库中,在编程的时候可以直接调用。在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕上显示的只是图形的一部分。因此需要确定图形中哪些部分落在显示区之内,哪些落在显示区之外,这样就可以只显示落在显示区内的那部分图像,这个选择的过程称作裁剪。计算机一班采用先裁剪后扫描转化的方法,也就是先圈定在显示区的图像,然后把这部分图像扫描成一定格式的文件存储在计算机中。很多程序根据裁剪

39、的相关理论算法为计算机用户提供截取屏幕上某一范围内图像的应用,而屏幕录像软件也可以据此提供一种按照划定的屏幕范围,对该范围内的屏幕动作进行录像的功能。裁剪示意如图2-1所示。图2-1表示的是多边形裁剪,关键在于通过裁剪,保持窗口内多边形的边界部分,而且要将窗框的有关部分按照一定次序插入多边形的保留边界之间,从而使裁剪后的多边形的边仍然保持封闭状态,以便填色算法得以正确实现。 图2-1 多边形裁剪示意在裁剪的时候,可以将多边形各边先相对于窗口的某一条边界进行裁剪,然后将裁剪结果再与另一条边界进行裁剪,如此重复,就可以得到最终结果。这就是Sutherland-Hodgman算法。2.1.2二维图像

40、计算机绘制的图形与平常所见的照片有相似之处。而自然界中还有很多丰富多彩的有形物体,根据图形所在的空间的不同,可将图形分为二维图形和三维图形。照片是二维的,各种物体是三维的。现在越来越多的多媒体技术都关注如何用计算机来翔实展示三维效果,三维游戏、3D数字电影等已经越来越多的出现在人们生活中,给人们带来视觉上的享受。三维图形的基础是二维,而二维图形的基础是一维图形,研究计算机怎样生成复杂的图形必须从研究二维图形入手。计算机绘制图形时,无论图形多么复杂,都是利用一些相应图形基本单元经过图形变换组成的,图形变换是指图形信息经过几何变换后产生的新的图形。这折射了计算机科学的一个颠扑不破的规律,计算机中所

41、有复杂的事物例如复杂的程序、复杂的图像、复杂的声音表示,都是由最简单、最直接的元素构成的,计算机善于以超快的速度在短时间内精确的完成重复、枯燥又简单的任务,于是将复杂的事情拆分成简单的事情,然后通过对在短时间内将大量简单事情完成而达到对整个复杂任务的完成,这在计算机程序中有很强的体现,模块化是解决计算机问题的重要手段。计算机的多线程并发执行能力,也是将一个大作业分成简单的进程,然后在短时间内对属于不同作业的进程轮流分配资源,以提高效率,更快的得出这些程序的结果,看起来就像这些程序都在这段时间内得到执行一样。可见,应深刻理解计算机处理问题的方式和原理,以便在应用计算机技术的时候,做到灵活应用。屏

42、幕录像软件是在二维图像的层次上运行,只要求对截图的二维图像进行一些简单的操作即可。例如,可能需要对录像内容进行反转、倒置等。2.2AVI相关技术由于屏幕录像软件录制的视频要转变成AVI格式存储并播放,因此对AVI格式进行介绍。2.2.1AVI基本介绍AVI格式,即音频视频交错格式(Audio Video Interleaved),是一种将语音、影像同步组合在一起的RIFF(Resource Interchange )文件格式,对视频文件采用的是有损压缩方式,压缩比较高,从而导致画面质量降低,多用于音视频捕捉、编辑、回放等应用程序中,是Windows操作系统上最基本、最常用的一种媒体文件格式。A

43、VI格式由微软公司于1992年随着Windows 3.1推出并流行,取得了大范围的广泛应用,在多媒体光盘上保存电视、电影等各种影像信息,一直到今天仍然是几种主要的视频格式之一。AVI支持256色和RLE2压缩,可以将视频和音频交织在一起同步播放,其优点是可以跨多个平台使用,缺点是占据空间比较大,而且没有统一的压缩标准,这导致了AVI格式的视频在播放的时候会经常遇到由于视频编码问题而不能播放或者即使能够播放,但是却不能调节播放进度,有时甚至会出现只能播放声音而没有画面的问题。这时候就只能靠下载相应的解码器来解决,我们平时在用视频播放软件播放AVI视频的时候会经常遇到这种问题,但是AVI文件格式仍

44、然是目前视频文件的主流。2.2.2AVI的结构由于AVI文件采用RIFF(Resource Interchange )文件结构方式,因此先介绍RIFF文件结构。RIFF,即资源互换文件格式是Windows操作系统环境下大部分媒体文件遵循的一种文件结构,由微软公司定义,用于管理Windows环境中多媒体数据的文件格式,波形音频wave、MIDI和数字视频AVI都采用这种格式存储。数据块(Chunk)是构造RIFF文件的基本单元,每个数据块又由三部分组成,即:数据块标记(4字节,也称作数据块ID)、数据块大小、数据。其中数据是承载有效信息的部分。数据块(Chunk)的结构如下:struct chu

45、nk u32 id; /*块标志*/ u32 size; /*块大小*/ u8 datsize; /*块内容*/;其中,id由四个ASCII字符构成,这是每一个数据块类型的标识,计算机据此识别块中包含的是什么类型的数据,例如RIFF,LIST,fmt,data,WAV,AVI等。size是块大小,用以标示data域值中数据的长度,id和size的长度不计入size值,即size指示的是有效数据的长度。dat是块内容,其中包含的数据以字(word)为单位进行排列,如果数据结构的长度是奇数,那么就在最后添加一个空字节凑成一个字。整个RIFF文件可以看成一个数据块,其数据块ID为RIFF,成为RIF

46、F块。一个RIFF文件中只能出现一个RIFF块。RIFF中包含一系列的子块,其中有一种子块的ID为“LIST”,称为LIST,其中可以再包含一系列的子块,但是其他除了LIST块以外的其他所有子块都不能再包含子块。RIFF文件中首先会包含一个文件头结构,然后是有效数据。如图2-2所示。RIFFSizeType 数据.4字节 4字节 4字节 size表示的长度图2-2 RIFF文件头结构了解了RIFF结构之后,介绍一下AVI的结构,AVI采用的是RIFF文件结构,它在RIFF的总体结构上做了一些补充,如图2-3所示。2.3钩子技术Windows系统是由事件驱动的,整个系统都是通过消息的传递来实现。

47、钩子是Windows系统中一个非常重要的系统接口,其作用是截获并且处理送给任意应用程序的消息,用来完成一些应用程序难以实现的功能。2.3.1钩子技术的函数钩子(Hook)是Windows系统消息处理机制的平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息,而且所监视的窗口可以由其他进程创建。消息到达后,在目标窗口处理函数之前处理它,这种机制允许应用程序截获处理Windows消息或特定事件。 RIFF SIZE AVI LIST 大小 move数据块 idxl数据块. LIST大小“strl”strhstrfstrm其他数据块. avihsizeof(mainAVIHeader)main

48、AVIHeader “LIST” 大小 “hdrl”信息块数据块索引块图2-3 avi的RIFF文件结构 钩子的实质是一个程序段,它通过系统调用挂入系统来处理消息。每当特定的消息发出,再没有到达目的窗口之前,钩子程序就先捕获该消息,也就意味着钩子程序先发一步得到了控制权。系统中安装了自定义的钩子,监视系统中特定事件的发生就可以完成特定的功能,例如键盘钩子、鼠标钩子、日志监视等。钩子的种类很多,每种钩子可以截获并处理相应的消息。钩子可以根据作用对象不同分为线程钩子和系统钩子。线程钩子监视指定线程的事件消息,系统钩子监视系统中所有线程的事件消息。钩子函数一定要存在于独立的动态链接库中。钩子有三个重

49、要函数,分别是安装函数SetWindowsHookEx()、消息传递函数CallNextHookEx()、注销钩子函数unhookwindowsshookex()。下面对这三种函数的原型进行介绍。1.安装函数SetWindowsHookEx()函数的原型是:hhook setwindowshookex( int idhook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwthreadid);下面介绍该函数的4个参数。idHook:要安装的钩子类型,其值与说明如表2-1所示。表2-1 钩子类型对照表值说明WH_CALLWNDPROC窗口钩子,当系统向目标窗口发送

50、消息时将触发此钩子WH_CALLWNDPROCRET窗口钩子,当窗口处理完消息后将触发此钩子WH_CBT当Windows激活、产生、关闭、释放、最小化、最大化或改变窗口时都将触发此钩子WH_DEBUG调试钩子WH_GETMESSAGE当往消息队列中增加一个消息时将触发此钩子WH_JOURNALPAYBACK回放钩子,可以用于播放已经记录的鼠标和键盘操作WH_JOURNALRECORD记录钩子,可以用于记录鼠标和键盘的操作,木马程序可以使用钩子,窃取受控方在屏幕中输入的账号、密码等信息WH_KEYBOARD当敲击键盘时将触发此钩子WH_MOUSE当有鼠标操作时将触发此钩子WH_MSGFILTER

51、消息过滤钩子WH_SHELLShell钩子WH_SYSMSGFILTER系统消息过滤钩子Lpfn:钩子过程的指针,即拦截到指定系统消息后的预处理过程及钩子的回调函数,须定义在DLL中;hMod:应用程序实例的句柄如果全是钩子,hInstance是DLL句柄(DllMain中给的摸块儿地址,就是包含HookProc的动态加载地址);否则赋值为0,只钩向自己;dwThreadId:要安装钩子的线程ID,指定被监视的线程,如果明确指定了某个指定了某个线程的ID就只监视该线程,此时的钩子即为线程;如果该参数被设置0,则表示此钩子为监视系统所有线程的全局钩子。2.消息传递函数CallNextHookEx

52、()的原型是:LRESULT CallNextHookEx( HHOOK hhk, /当前钩子的句柄 Int ncode, /钩子代码,为下一个钩子下达的命令 WPARAM wParam, /要传递的参数,由钩子类型决定是什么参数 LPARAM lParam, /要传递的参数,由钩子类型决定什么是参数);3.注销钩子函数unhookwindowshookex()负责撤销钩子,其原型如下:bool unhookwindowshookex( hhook hhk;);其参数是要注销钩子的句柄。2.3.2钩子的使用与撤销每一个钩子都有一个与之相关联的指针列表,称之为钩子链表,它由系统进行维护,这个列表

53、的指针指向指定的有应用程序定义的被钩子子程序调用的回调函数,也就是该钩子的各个处理子程序。每当与指定的钩子类型相关联的消息发生时,系统就把这个消息传递到钩子子程序。一些钩子子程序可以只监视消息,或者修改消息,或者停止消息的前进以避免这些消息传递到下一个钩子子程序或者目的窗口。最近安装的钩子放在链表的开始,而最早安装的钩子放在最后,也就是说后加入的先获得控制权。Windows不要求钩子子程序一定要按照与安装顺序相反的顺序卸载。每当有一个钩子被卸载Windows便释放其占用的内存,并且将整个链表进行更新。如果程序安装了钩子,但是在尚未卸载钩子之前就结束了,那么系统会自动为它完成特定操作,来卸载钩子

54、。使用钩子有个显著缺点,那就是由于增加了系统处理消息的工作量,而导致系统的效率降低。因此应该在必要的时候才采用钩子,并且在消息处理完成后移除该钩子。2.4位图(BMP)对视频捕获的时候,采用的是对屏幕帧进行抽样截图,获取的是位图,故对位图进行简介。2.4.1位图简介位图是Windows操作系统中的标准图像文件格式,BMP是Bitmap的缩写。它可以分成两类:设备相关位图DDB和设备无关位图DIB,位图有广泛的应用,采用的存储方式是位映射存储格式,不采取任何压缩,故而其文件占据很大的存储空间。BMP由称作像素的单个点组成,它们进行不同的排列和染色构成不同的图案,图2-4就是一个位图文件的示意图,

55、它来自Visual C+6.0开发时的自定义图标,从图中可以看出位图的构图方式,是一个个小方块,每个小方块是一个像素,可以再每个像素上填充颜色,微观放大的时候,图片的边缘很粗糙,但是宏观来看,当把图片缩小,图像的边缘就变得平滑了。 图2-4 VC+6.0中用位图绘制图标BMP位图文件在进行扫描时,记录顺序是在扫描行内从左到右,扫描行间是从下到上。由于位图图像是以排列的像素集合体形式创建的,所以不能单独操作局部位图,一般来说,位图是工具拍摄之后得到的,如数码相机拍摄的照片。处理位图时要重点考虑的一点事分辨率,初始设置分辨率的高低决定着输出图像的质量。分辨率指图像文件中包含的细节和信息的大小,以及

56、输入输出或显示设备能够产生的细节程度。操作位图时,分辨率能够影响最后图片的输出质量,当然也会影响输出文件的大小。图像选择的分辨率通常在整个过程中都会伴随着文件,无论在300dpi的打印机还是2570dpi的照排设备上印刷位图文件,文件都是以创建图像时所设定的分辨率大小印刷。BMP文件的图像深度可以选择1bit、4bit、8bit以及24bit。BMP文件格是Windows环境中交换与图有关数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。2.4.2位图的格式与存储位图文件由头文件数据结构、位图信息数据结构、调色板、位图数据四部分构成。其中位图头文件结构包含BMP

57、图像文件的类型、显示内容等信息,位图信息数据结构则包含BMP图像的宽、高、压缩方法、定义颜色等信息。调色板是可选内容,一般真彩色图需要调色板。位图数据跟据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而小于24位的用调色板中颜色索引值。BMP文件通常是不压缩的,所以他们通常比较大,因此往往不适合在因特网或者其他低速或者容量有限的媒介上进行传输存储。由于颜色深度的不同,图像上的一个像素可以用一个或者多个字节标示,用N代表位深度,那么一个像素用N/8个字节来存储。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。2.5Video for Windows技术

58、2.5.1技术简介由于设计的屏幕录制系统是对屏幕进行录制和对录制好的文件播放、编辑,在这里使用到了Video for windows 的技术。因此,在这里对进行一些介绍。在Windows 平台下开发视频应用程序一般采用两种方式:一种是基于视频采集卡所附带的二次软件开发包SDK(Software development kit)进行。这种方式的优点是应用方便,容易上手,缺点是对硬件的依赖性较强,灵活性差,且功能参差不齐,不能充分满足各种视频应用程序的开发需要;另一种方式是基于VFW(Video for Windows)进行的。VFW 是Microsoft 公司为开发Windows 平台下的视频应

59、用程序提供的软件工具包,提供了一系列应用程序编程接口(API),用户可以通过它们很方便地实现视频捕获、视频编辑及视频播放等通用功能,还可利用回调函数开发更复杂的视频应用程序。它的特点是播放视频时不需要专用的硬件设备,而且应用灵活,可以满足视频应用程序开发的需要。在此,我们使用了基于VFW 的技术来开发系统。(1)视频捕获利用AVICAP 组件函数 CapCreateCaptureWindow() 建立视频捕获窗口,它是所有捕获工作及设置的基础,其主要功能包括:动态地同视频和音频输入器连接或断开;设置视频捕获速率;提供视频源、视频格式以及是否采用视频压缩的对话框;设置视频采集的显示模式为Over

60、lay 或为Preview;实时获取每一帧视频数据;将一视频流和音频流捕获并保存到一个AVI 文件中;捕获某一帧数字视频数据,并将单帧图像以DIB 格式保存;指定捕获数据的文件名,并能将捕获的内容拷贝到另一文件。(2)视频编辑利用VFW,不仅可以实现视频流的实时采集,还提供了编辑和播放功能,主要通过AVI、ACM 等组件之间的协作来完成。1) AVI(); /初始化;2) AVI(); /打开一个AVI 文件并获取文件的句柄;3) AVI(); /获取文件的相关信息,如图像的Width 和Height 等;4) AVI(); /建立一个指向需要访问的数据流的指针;5) AVIStreamInf

61、o(); /获取存储数据流信息的AVISTREAMINFO 结构;6) AVIStreamRead(); /读取数据流中的原始数据, 对AVI 文件进行所需的编辑处理;7) AVIStreamRelease(); /释放指向视频流的指针;8) AVI();AVI(); /释放AVI 文件。若数据是压缩过的, 则用AVIStreamGetFrameOpen(),AVIStreamGetFrame() 和AVIStreamGetFrameClose()来操作,可以完成对视频流的逐帧分解。(3)视频播放对于实现视频流的播放,VFW 提供了MCIWnd 窗口类,主要用于创建视频播放区,控制并修改MCI 窗口当前加载媒体的属性。一个由函数、消息和宏组成的库与MCIWnd 相关联,通过它们可以进行AVI 文件操作,很方便地使应用程序完成视频播放功能。1)MCIWndCreate(); /注册MCIWnd 窗口类,创建MCIWnd 窗口,并指定窗风格;2) AVI(); /初始化;3) AVI(); /打开AVI 文件;4) AVI(); /获得视频流;5) AVIStreamRelease(); /释放视频流;6)AVI(),AVI(); /断开与AVI 文件的连接,释放视频源。2.5.2将位图流写入到AVI文件中由于屏幕录像软件应用的核心技术就是将不断截图得到的位图文件保存成视

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!