




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录长江大学毕业设计(论文)任务书i长江大学毕业设计开题报告ii长江大学毕业论文(设计)指导教师评审意见iii长江大学毕业论文(设计)评阅教师评语iv长江大学毕业论文(设计)答辩记录及成绩评定v录屏专家软件设计vi外文摘要vii1 引言11.1 选题背景11.2 目的和意义11.3 技术要求和设计范围21.4 发展现状22 技术介绍22.1 vc+6.022.1.1 vc的主要部分22.2 c+语言介绍32.2.1 概述32.2.2 继承与派生32.2.3 语言特点43 过程论证53.1 系统综合要求53.2 软件设计的思路53.3 窗口展示63.3.1 主界面63.3.2 各级子菜单63.4 屏幕录像实现83.4.1 屏幕录制原理83.4.2 delphi 实现 mpeg4 编码器93.5 代码实现134 软件运行状况245 结束语24参考文献24致谢26附录27长江大学毕业设计(论文)任务书学院(系)计算机科学学院 专业计算机科学与技术 班级计科10011 学生姓名 指导教师/职称 1. 毕业设计(论文)题目:录屏专家软件设计2. 毕业设计(论文)起止时间:2013-11-012014-06-013. 毕业设计(论文)所需资料及原始数据(指导教师选定部分)硬件平台:计算机软件平台:操作系统:windows7开发环境:vc+6.0 开发语言:c+开发工具:vc+6.0 参考书:1.黄维通等编著,visual c+面向对象与可视化程序设计,北京:清华大学出版社,2011.62.张荣梅编著,visual c+程序设计案例教程,北京:北京大学出版社。2009.013.何斌,马天予编著,visual c+数字图像处理(第二版),北京:人民邮电出版社,2002.124.王华等编著,visual c+编程实例与技巧,北京:机械工业出版社,20014. 毕业设计(论文)应完成的主要内容对视频的录制和处理,是录屏软件的主要功能,视频格式的多样化,清晰度以及画面的流畅也很重要。录制视频时帧数不应过大,所以在设计软件是要注意对帧数的限制,设置一个合理的最大值。生成的文件体积不能太大,这要对录制文件的时间和大小做一个设定,当录制的大小超过规定值时,自动录制到新文件中。i5. 毕业设计(论文)的目标及具体要求本次设计是基于c+开发录屏专家软件,它可以轻松地将屏幕上的软件操作过程、网络教学课件、网络电视、网络电影、聊天视频等录制成avi动画,亦可单独录制wav音频,具有长时间录像并保证声音完全同步的能力。录屏专家软件使用简单,功能强大,是辅助教学的首选。但是国内的很多录屏软件都是收费的,这次课设的目的就是要做一款免费的录屏软件供更多有需要的人使用。 6. 完成毕业设计(论文)所需的条件及上机时数要求掌握c+语言,熟悉编译的环境,了解各种视频的格式,上机编程。上机时数大约200小时。 任务书批准日期 2013年11月1日 教研室(系)主任(签字) 任务书下达日期 2013年11月2日 指导教师(签字) 完成任务日期 2014年5月25日 学生(签名) 长江大学 毕业设计开题报告 题 目 名 称 录屏专家软件设计 院 (系) 计算机科学学院 专 业 班 级 计科11001 学 生 姓 名 指 导 教 师 辅 导 教 师 开题报告日期 2013/12/18 i一、 题目来源生产/社会实际二、 研究目的和意义 本次课设是基于c+开发录屏专家软件,它可以轻松地将屏幕上的软件操作过程、网络教学课件、网络电视、网络电影、聊天视频等录制成flash动画、asf动画、avi动画或者自播放的exe动画,具有长时间录像并保证声音完全同步的能力。录屏专家软件使用简单,功能强大,是辅助教学的首选。但是国内的很多录屏软件都是收费的,这次课设的目的就是要做一款免费的录屏软件供更多有需要的人使用。三、 阅读的主要参考文献及资料名称1.黄维通等编著,visual c+面向对象与可视化程序设计,北京:清华大学出版社,2011.62.张荣梅编著,visual c+程序设计案例教程,北京:北京大学出版社。2009.013.何斌,马天予编著,visual c+数字图像处理(第二版),北京:人民邮电出版社,2002.124.王华等编著,visual c+编程实例与技巧,北京:机械工业出版社,2001四、 国内外现状和发展趋势 录屏软件目前主要运用于教学和网络娱乐中,它将视频录制成flash动画,avi动画等多种格式,可以使声音与录像同步。它的操作简单,及时高效,容易被人们接受,在近些年来被广泛的运用在网络教学中,增加了人们学习的途径。同时也用来录制大量的3d游戏,受到越来越多玩家的青睐。总之,录屏软件以极快的速度融入到我们的生活、学习中,人们对它的要求也逐步提高,特别是体现在视频的清晰度,是否流畅,以及录制时占用资源少,生成的文件体积小上。这也是未来发展的主要趋势。五、 主要设计内容、关键问题 对视频的录制和处理,是录屏软件的主要功能,视频格式的多样化,清晰度以及画面的流畅也很重要。录制视频时帧数不应过大,所以在设计软件是要注意对帧数的限制,设置一个合理的最大值。生成的文件体积不能太大,这要对录制文件的时间和大小做一个设定,当录制的大小超过规定值时,自动录制到新文件中。六、完成毕业设计所必须具备的工作条件硬件平台:计算机软件平台:操作系统:windows7开发环境:visual c+ 6.0开发语言:c+开发工具:visual c+ 6.0七、工作的主要阶段、进度与时间安排具体安排如下:2013年12月: 查询相关信息资料,编写开题报告。2014年1月中旬至4月中旬:总体设计思想,总体框架设计,程序代码编写调试。2014年4月中旬至5月中旬:补充数据及相关内容,进一步完善界面及功能。2014年5月中旬至6月:复查系统,整理相关程序文档并书写毕业论文,准备答辩。八、指导教师审查意见 指导老师(签字): 年 月 日长江大学毕业论文(设计)指导教师评审意见学生姓名专业班级计科11001毕业论文(设计)题目录屏专家软件设计指导教师职 称讲师评审日期评审参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,难度及工作量,质量和水平,存在的主要问题与不足。学生的学习态度和组织纪律,学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩。评审意见: 指导教师签名: 评定成绩(百分制):_分iii长江大学毕业论文(设计)评阅教师评语学生姓名周尧专业班级计科11001毕业论文(设计)题目录屏专家软件设计评阅教师职 称评阅日期评阅参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,难度及工作量,质量和水平,存在的主要问题与不足。学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩。评语:评阅教师签名: 评定成绩(百分制):_分v长江大学毕业论文(设计)答辩记录及成绩评定学生姓名周尧专业班级计科11001毕业论文(设计)题目录屏专家软件答辩时间 年 月 日 时答辩地点一、答辩小组组成答辩小组组长:成 员:二、答辩记录摘要答辩小组提问(分条摘要列举)学生回答情况评判三、答辩小组对学生答辩成绩的评定(百分制):_分 毕业论文(设计)最终成绩评定(依据指导教师评分、评阅教师评分、答辩小组评分和学校关于毕业论文(设计)评分的相关规定)等级(五级制):_答辩小组组长(签名) : 秘书(签名): 年 月 日v院(系)答辩委员会主任(签名): 院(系)(盖章)录屏专家软件设计学 生: 计算机科学学院指导老师: 计算机科学学院【摘要】录屏专家软件是由 c+语言在vc+ 6.0的平台上开发的一款录制音视频的软件。开发时需要用到钩子头文件、ddraw头文件等,使用抓图函数,建立ddraw,在后台建立一个空间存放图片加快抓图处理的速度,把图片转换成位图文件保存。声明设备句柄并且为设备创建于pdc相同的内存,选择位图到设备上,再将位图转换为无关设备位图。程序中设置了不少的标志,获得的录音,录像可以单独进行保存放在不同的临时文件路径中,亦可把视频流和音频流进行压缩合并在一起。对关键帧,帧数,速度,间隔时间等参数进行设置,根据这些参数进行录像。如果只录音,则保留音频为wav。若两者都录,则保留视频为avi。在市场上已经有不少的录屏软件,但是这类软件都需要收费,不能免费使用。现在人们对录屏软件的需求越来越大,所以此次设计的实际意义在于为人们提供一款免费的录屏软件。【关键字】录屏软件、c+、参数、帧、句柄ithe design of screen recording software student:zhou yao the college of computer scienceteacher:lin deshu the college of computer science【abstract】 screen recording software is which c + + language on vc + + 6.0 platform for audio and video recording . need to use hook header file, ddraw header files when developing. using the capture function, establish ddraw, create a space to store images in the background shot of processing speed, the image is converted into a bitmap file. statement device handle and pdc is created in the same device memory, select the bitmap into the device, and then converted to a device-independent bitmap. a number of logos set in the program, the obtained recording can be stored separately in different temporary file path, the video stream may be compressed and combined audio stream. setting key frames, frames, speed, interval time and other parameters. recording bases on these parameters. if only record voice, the audio is retained wav. if both record, leave the video to avi. on the market has a lot of screen recording softwares, but such software requires charging, you can not have free access. the demand for screen recording software is now growing, so the actual significance of this design is to provide people with a free screen recording software.【key word】screen recording software, frame, c+, parameter, handlevii引言录屏专家软件设计1 引言1.1 选题背景近些年来,录屏软件越来越多的被用到人们的学习、生活、娱乐中,尤其是用在教育应用方面。它可以制作优良的多媒体课件,把老师上课时复杂的过程录制下来,改变了教学内容呈现的方式,由文本方式转为直观的图形方式,由抽象教学变直观教学, 使得教学更精彩有趣; 另一方面,屏幕录像软件的简单快捷大大减少了教师制作课件的工作量, 减轻了教师的工作压力和负担。屏幕录像软件的引入, 一方面充分尊重了学生在学习时间、 地点、 内容和形式上的自由选择; 另一方面屏幕录像软件有后期编辑功能, 可以加入语言注释和实现后期配音,教师在制作的时候可以引入一些有挑战性的任务或问题, 引导学生积极思考、 主动探究; 再者学生的学习方式也从读文本到观摩录像, 文本刺激变成文本、 视觉、 声音多重刺激, 大大优化了学生的学习方式; 最后, 学生忘记的时候可以找到录像资料复习, 提高了学习效果。远程教育、网络教育发展迅速, 这是一种借助网络技术、 通信技术等现代信息技术手段所开展的教育形式, 借助多种媒体支撑的学习环境和学习资源, 突破时空限制, 实现个别化学习。用屏幕录像软件制作的学习资源, 详细记录了教师的操作过程, 又有后期详细的注释说明, 带着它就像教师随时在身边, 更好的促进远程学习者的自主学习, 弥补远程教育中师生异地、 咨询困难、 交流不便的缺憾。录屏软件的产生使得学习的方式发生了根本性的变化,让学习变得轻松愉快。在互联网高速发展的大环境下,游戏产业迅速崛起。有不少游戏大神会录制视频把自己的游戏经验分享给玩家,获得不少的粉丝,甚至是经济上的回报。所以录屏软件越来越受年轻玩家的喜爱,被大多数的人接受。1.2 目的和意义 本次课设是基于c+开发录屏专家软件,它可以轻松地将屏幕上的软件操作过程、网络教学课件、网络电视、网络电影、聊天视频等录制成avi动画,具有长时间录像并保证声音完全同步的能力。录屏专家软件使用简单,功能强大,是辅助教学的首选。但是国内的很多录屏软件都是收费的,这次课设的目的就是要做一款免费的录屏软件供更多有需要的人使用。1.3 技术要求和设计范围如何开发出一款好的录屏软件,对音视频的录制,后期处理,画面的清晰及流畅度是要处理好的。用c+在vc上进行开发,应用程序通过句柄可以访问相应的对象信息,要熟悉句柄的常用类型。钩子头文件在也包含在内,安装钩子调用线程。压缩式选择合适的比例,要在清晰流畅的前提下是录制的文件占用少量的内存空间。1.4 发展现状录屏软件目前主要运用于教学和网络娱乐中,它将视频录制成flash动画,avi动画等多种格式,可以使声音与录像同步。它的操作简单,及时高效,容易被人们接受,在近些年来被广泛的运用在网络教学中,增加了人们学习的途径。同时也用来录制大量的3d游戏,受到越来越多玩家的青睐。总之,录屏软件以极快的速度融入到我们的生活、学习中,人们对它的要求也逐步提高,特别是体现在视频的清晰度,是否流畅,以及录制时占用资源少,生成的文件体积小上。这也是未来发展的主要趋势。2 技术介绍2.1 vc+6.0visual c+ 6.0简称vc或者vc6.0,是微软推出的一款c+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。visual c+是一个功能强大的可视化软件开发工具。自1993年microsoft公司推出visual c+1.0后,随着其新版本的不断问世,visual c+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 visual c+.net(visual c+7.0),但它的应用的很大的局限性,只适用于windows 2000、windows xp和windows nt4.0。所以实际中,更多的是以visual c+6.0为平台。visual c+6.0不仅是一个c+编译器,而且是一个基于windows操作系统的可视化集成开发环境(integrated development environment,ide)。visual c+6.0由许多组件组成,包括bianyiqi 、调试器以及程序向导appwizard、类向导class wizard等开发工具。 这些组件通过一个名为developer studio的组件集成为和谐的开发环境。2.1.1 vc的主要部分1. developer studio,这是一个集成开发环境,我们日常工作的99%都是在它第 3 页 共 38 页技术介绍上面完成的,再加上它的标题赫然写着“microsoft visual c+”,所以很多人理所当然的认为,那就是visual c+了。其实不然,虽然developer studio提供了一个很好的编辑器和很多wizard,但实际上它没有任何编译和链接程序的功能。developer studio并不是专门用于vc的,它也同样用于vb,vj,vid等visual studio家族的其他同胞兄弟。所以不要把developer studio当成visual c+, 它充其量只是visual c+的一个壳子而已。2mfc,从理论上来讲,mfc也不是专用于visual c+,borlando c+,c+builder和symantec c+同样可以处理mfc。同时,用visual c+编写代码也并不意味着一定要用mfc,只要愿意,用visual c+来编写sdk程序,或者使用stl,atl,一样没有限制。不过,visual c+本来就是为mfc打造的,visual c+中的许多特征和语言扩展也是为mfc而设计的,所以用visual c+而不用mfc就等于抛弃了visual c+中很大的一部分功能。但是,visual c+也不等于mfc。3platformsdk,这才是visual c+和整个visual studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,platform sdk是以microsoft c/c+编译器为核心,配合masm,辅以其他一些工具和文档资料。上面说到developer studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是cl,是nmake,和其他许许多多命令行程序,这些我们看不到的程序才是构成visual studio的基石。2.2 c+语言介绍2.2.1 概述c+语言是一种优秀的面向对像程序设计语言,它在c语言的基础上发展而来,但它比c语言更容易为人们学习和掌握。c+以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,c+完美地体现了面向对象的各种特性。c+的设计目标,就是要让c+既具有适合于系统程序设计的c语言所具有的可适应性和高效性,又能在其程序组织结构方面具有语言设施。它是一门通用目的的程序设计语言,它是一个更好的c;支持数据抽象;支持面向对象程序设计;支持范型程序设计。2.2.2 继承与派生 面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。要较好地进行面向对象程序设计,还必须了解面向对象程序设计另外两个重要特征继承性和多态性。面向对象技术强调软件的可重用性(software reusability)。c+语言提供了类的继承机制,解决了软件重用问题。在c+中可重用性是通过继(inheritance)这一机制来实现的。继承是c+的一个重要组成部分。一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和成员函数是不相同的。但有时两个类的内容基本相同或有一部分相同。利用原来声明的类student作为基础,再加上新的内容即可,以减少重复的工作量。c+提供的继承机制就是为了解决这个问题。在c+中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类(例如“马”)称为“基类(base class )”或“父类(father class )”。新建的类(例如“公马”)称为“派生类(derived class )”或“子类(son class )”。一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承是用已有的类来建立专用类的编程技术。派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加或调整。一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。以上介绍的是最简单的情况:一个派生类只从一个基类派生,这称为单继承(single inheritance),这种继承关系所形成的层次是一个树形结构。一个派生类不仅可以从一个基类派生,也可以从多个基类派生。一个派生类有两个或多个基类的称为多重继承(multiple inheritance)。关于基类和派生类的关系,可以表述为:派生类是基类的具体化,而基类则是派生类的抽象。2.2.3 语言特点 c+设计成静态类型、和c同样高效且可移植的多用途程序设计语言。 c+设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。 c+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。第 29 页 共 38 页过程论证 c+设计成尽可能与c兼容,籍此提供一个从c到c+的平滑过渡。 c+避免平台限定或没有普遍用途的特性。 c+不使用会带来额外开销的特性。3 过程论证3.1 系统综合要求本系统要实现的功能是简单的录制音视频,并让其播出。由于用户来自不同的群体,所以设计的界面友好,操作简单,提供适量的使用和提示说明。3.2 软件设计的思路本次的设计需要用到钩子头文件和ddraw头文件,涉及到屏幕的录制,保存方式,后期的整合以及音视频的播放。先建立窗口,设置好屏幕的大小;再用抓图函数进行截图,把图片转化成设备无关的位图,并保存为位图文件;然后定义avi及wav格式:设置文件图像的位数,大小,关键帧,速度,两帧之间的间隔时间;若录像和录音是分开的,则将它们分别保存为avi格式,wav格式,否则要将得到的视频流,音频流进行压缩整合并保存为avi格式。 (1)窗口的处理。窗口的初始化包括窗口类的定义,注册,创建窗口实例和显示窗口,这些分别由loadicon函数(在应用程序中加载一个窗口图标),registerclassex函数,createwindowhan函数,show window函数实现。 (2)句柄的应用。应用程序通过句柄来访问相应的对象信息,这次用到较多的有hcursor光标句柄,hwnd窗口句柄,cdc声明设备句柄,cwnd得到屏幕句柄等。(3)屏幕。用rect rcuse表明用户用的是矩形框,定义屏幕的长和宽,设置多个标志进行:int recordaudio=0表示是否录音;int recordvideo=1表示是否录像;int recordstate=0录象状态;int recordpaused=0暂停状态;uint interruptkey = 0热键。(4)截图。用capturescreenframe抓图函数可以获得图片,建立ddraw在后台建立一个空间存放图片,这样,可以加快抓图处理的速度(5)转换成无关设备位图。建立调色板,用bitmap.getobject获得位图信息,并初始化位图讯息头。计算信息头及颜色表大小,globalalloc为信息头及颜色表分配内存,调用 getdibits 计算图像大小,使图像的每一行都对齐边界,重新分配内存大,小重选原始调色板。(6)保存为位图文件。定义当前显示分辨率下每个像素所占字节数,调色板大小,位图中像素字节大小,位图文件大小写入文件字节数,位图属性结构,位图文件头结构,位图信息头结构。计算位图文件每个像素所占字节数和调色板大小并为位图分配内存大小。由getdibits获得该调色板下新的像素值。在创建位图文件,设置位图文件头后写入位图文件头,写入位图文件其余内容,最后释放内存。 (7)帧。用capturescreenframe抓图函数和freeframe实现创建,释放帧的指针。关键帧里面包含的是重要内容,帧速与视频的流畅程度有关,应该设置为20帧/秒。 (8)音视频的格式。单独的录像保存为avi格式,单独的录音保存为wav格式,若要包含两者则需要把他们进行压缩整合以avi格式保存。录音时要检查声卡。 (9)文件保存路径。由cstring tempfilepath得到临时视频文件的文件路径,cstring realfilepath得到实际视频文件的文件路径,临时合并文件的路径由得出cstring m_tempfilepath,cstring savedir()得出存储路径。3.3 窗口展示3.3.1 主界面 图1 主界面3.3.2 各级子菜单图2 编辑子菜单图3 属性子菜单图4 操作子菜单图5 窗口子菜单3.4 屏幕录像实现3.4.1 屏幕录制原理屏幕录像的基本原理是以整个屏幕或者屏幕指定区域的位图数据作为数据源,以一定的帧率对位图数据进行采集,然后送入编码器进行编码处理,最后将编码结果保存为标准的视频格式。其中,编码器对位图数据的编码压缩性能决定了整个屏幕录像的品质。屏幕录像一般有 3 种方式:当前活动窗体录像、全屏录像和自由指定区域录像。如图 6 所示,在录屏软件启动后先创建 mpeg4 编码器对象,然后选择录像的模式,选好模式后则开始进行录像,对mpeg4 编码器进行初始化配置,编码器根据配置的信息确定好 mpeg4 视频流的帧族群结构后则对获取的每幅屏幕位图以一定的帧率进行相应的帧模式编码,并在编码的过程中按照mpeg4 视频流结构将编码的结果写入视频流文件,最后在录屏结束后保存视频流文件。4图6 录屏流程图3.4.2 delphi 实现 mpeg4 编码器delphi 是一个可视化集成开发环境,在实现 mpeg4 编码器时,可以采用汇编查表优化其压缩算法,例如 dct 变换与vlc 编码等,压缩性能将会大大提高。mpeg4 是一种通用的音视频编码标准,它定义了 3 种帧编码模式:i 帧、p 帧和 b 帧。i 帧帧内编码帧又称关键帧;p帧前向预测编码帧,是由前面的 p 帧或者 i 帧预测而来;b 帧双向预测内插编码帧,b 帧以前面的 i 或 p 帧和后面的 p 帧为参考帧,“找出”b 帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量编码mpeg4 视频流具有高压缩比,同时对数据的损失很小,具有可与 dvd 媲美的高清晰画质,一般的播放器都支持这些文件格式。为了便于对视频编码数据进行误码处理、随机搜索及编辑,mpeg4 对视频流进行了分块结构化组织。如图 7 所示,mpeg4 视频流结构从大到小由以下 6 个结构化块组成:视频序列(video sequence)、 帧群组(group of pictures ; gop)、 帧(picture)、分片 (slice)、宏块 (macroblock) 与像块 (block)。图7 mpeg视频流结构在 分 析 了 mpeg4 基 本 原 理 和 mpeg4 视 频 码 流 结 构 的基础上,这里基于 delphi 封装了一个实现 i 帧和 p 帧编码的 编 码 器 类。 该 编 码 器 由 tmpegencoder、tmpegstream、tmpegimage 与 tmpegbw 这 4 个类组成,它们之间的关系如图 8 所示,tmpegencoder 是编码器主接口类,与视频流操作类 tmpegstream 和位图处理类 tmpegimage 之间是合成的关系;位图处理类 tmpegimage 与图像信息编码类 tmpegbw 之间也是合成关系。图8 mpeg-4编码器类合成关系是一种直观的复用对象的方法, 即新的对象是由已有的对象组合而成,具有最高效的代码重用性和对象协作性。tmpeg 类向外部提供两个重要的函数接口: 编码器初始化函数。主要完成编码器的图像宽高、编码品质系数、 视频流帧率、 帧族群类型及视频编码输出流等的配置,为后续的位图处理编码和 mpeg 码流存储做准备。其函数原型定义如下 : procedure initencoder(width, height, quantization,tolerance,goptype:integer;basefreq:tbasefrequency;outstream:tstream)。 mpeg4 编码函数。此函数是 mpeg4 的编码函数,可以把屏幕位图连续送入编码为 mpeg4 码流,并写入视频文件。其函数原型定义如下:function mp4encode(bm:tbitmap):boolean。该函数如果返回 true 则是 i( 关键 ) 帧,返回 false 则是 p 帧,它先根据初始化编码器过程给定的帧族群类型来确定帧组群的结构,由于该编码器只实现 i 帧与 p 帧编码,所以当goptype 值为 8 时帧族群结构为:ippppppp。再由帧族群结构来确定当前位图的帧编码模式为 i 帧还是 p 帧。i 帧编码过程,先将位图进行 rgb 到 yuv 的色场转换,再分别对亮度信息和色度信息进行宏块分割,对每个宏块都进行 88 的像块编码,像块编码过程为:dct 变换、量化、zig-zag 扫描、游程编码与 vlc 编码。为了提高编码效率,dct 变换使用快速 dct 算法,并把浮点运算变为整型运算;量化和vlc 编码都用查表法实现p 帧编码过程,先将位图进行 rgb 到 yuv 的色场转换,再利用前一已经编码帧重建的帧作为参考帧分宏块进行运动估计,求得最佳匹配块的运动向量数据。接着在运动向量数据及参考帧对应宏块数据的控制下进行帧内预测根据运动估计的结果,p 帧的宏块编码模式可分为 3 种:intra 帧内模式、inter 帧间模式及 not_coded 不编码模式,其中一定数量的宏块按 intra帧内模式编码, 但绝大部分为inter帧间模式或 not_coded 不编码模式。对于帧内编码模式就按照与 i 帧宏块相同的编码流程进行编码;对于帧间模式则用当前帧编码宏块的实际值和预测值求差值,最后对差值进行 dct 变换、量化、zig-zag 扫描、游程编码和 vlc 编码,并且对运动向量进行 vlc 编码;对于不编码模式表示当前宏块没有编码为零块,解码时直接把参考帧的块复制过来作为解码结果,这种块模式的宏块一般都是背景图像。位 图 处 理 类 tmpegimage 向 tmpeg 类 提 供 rgbtocb、rgbtocr 和 rgbtoy 这 3 个 函 数 完 成 rgb 向 yuv 的 转 换。 其中 encodeimpeg、encodepmpeg 与 encodeimacroblock 过程都是调用其组合类 timagebw 中的相应函数完成 i 帧与 p 帧的编码。 图 像 信 息 编 码 类 tmpegbw 提 供 了 findmotion 函 数 和compareblockfull函数, 共同实现p帧编码中的运动估计和运动补偿,encodeblock 过程实现 88 的块编码,encodeblock过程中封装了 dct 变换、量化、zig-zag 扫描、游程编码和变长编码。视 频 流 操 作 类 tmpegstream 主 要 完 成 mpeg 视 频 流 各个组成部分的写入。writesequenceheader 写视频序列头,writegopheader写视频序列帧群组头, writepictureheader写帧头,writesliceheader 写分片头,writeblock 写块编码结果。3.5 代码实现(1)抓图函数,获得图像hcursor fetchcursorhandle();hcursor hsavedcursor = null;int x,y;(2)avi函数以及定义#define aviif_keyframe0x00000010l 定义关键帧#define bufsize 260#define lplpbilpbitmapinfoheader *#define n_frames50 帧数#define text_height20 帧率,20帧秒static handle bitmap2dib(hbitmap, uint);设备相关转化为设备无关图 int recordvideo(int top,int left,int width,int height,int numframes,const char *szfilename);录像主程序 uint recordavithread(lpvoid pparam);录像线程 (3)名称:savebitmaptofile功能:保存为位图文件bool cscreencapview:savebitmaptofile(hbitmap hbitmap , cstring lpfilename) hdc hdc; 设备描述表 int ibits; 当前显示分辨率下每个像素所占字节数word wbitcount; 位图中每个像素所占字节数dword dwpalettesize=0, 定义调色板大小, 位图中像素字节大小 ,位图文件大小 , 写入文件字节数dwbmbitssize,dwdibsize, dwwritten;bitmap bitmap; bitmapfileheader bmfhdr; 位图属性结构 bitmapinfoheader bi; 位图文件头结构 lpbitmapinfoheader lpbi; 位图信息头结构 handle fh, hdib, hpal,holdpal=null; 指向位图信息头结构,定义文件,分配内存句柄,调色板句柄 long colors=0; 计算位图文件每个像素所占字节数 hdc = createdc(display,null,null,null); ibits = getdevicecaps(hdc, bitspixel) * getdevicecaps(hdc, planes); deletedc(hdc); if (ibits = 1) wbitcount = 1; else if (ibits = 4) wbitcount = 4; else if (ibits = 8) wbitcount = 8; else if (ibits = 24) wbitcount = 24; 计算调色板大小 if (wbitcount = 8) dwpalettesize = (1 palversion=0x300;plogpal-palnumentries=j;for (int i=0;ipalpalentryi.pered = i ;plogpal-palpalentryi.pegreen = i ;plogpal-palpalentryi.peblue = i ;plogpal-palpalentryi.peflags = 0;hpal1.createpalette(plogpal);delete plogpal;:selectpalette(hdc,hpal1,0);:realizepalette(hdc);获取该调色板下新的像素值 getdibits(hdc, hbitmap, 0, (uint) bitmap.bmheight,(lpstr)lpbi + sizeof(bitmapi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急安全培训证课件
- 应急安全培训活动课件
- 应急安全培训企业培训课件
- 2024职称计算机考前冲刺试卷附参考答案详解【培优A卷】
- 秋季腹泻患儿辅食调整方案与喂养指导
- 非开挖施工合同(标准版)
- 建筑商合同(标准版)
- 租用香菇大棚合同(标准版)
- 2025年教育信息化2.0背景下教师信息技术与课程资源整合能力培养策略研究报告
- 2025年智慧校园安全管理报告:校园安全风险防控策略研究
- 人才服务合同书
- 2025-2026学年统编版八年级上册道德与法治教学计划含教学进度表
- 2025年工会入职考试试题及答案
- 2025年中国电力投资集团校园招聘笔试题型分析及备考策略
- 旅游服务安全知识培训课件
- 公司章程制定合同协议书范本模板
- 2024人教PEP版三年级英语上册全册教案
- 中国慢性胃炎诊治指南(2022年)解读
- 立体车库应急预案范文
- 体彩专管员专业知识培训课件
- 严重腹部创伤院内救治专家共识(2024)解读
评论
0/150
提交评论