计算机应用论文视频动画播放控制策略.doc

上传人:来看看 文档编号:3971357 上传时间:2019-10-11 格式:DOC 页数:4 大小:31.01KB
返回 下载 相关 举报
计算机应用论文视频动画播放控制策略.doc_第1页
第1页 / 共4页
计算机应用论文视频动画播放控制策略.doc_第2页
第2页 / 共4页
计算机应用论文视频动画播放控制策略.doc_第3页
第3页 / 共4页
计算机应用论文视频动画播放控制策略.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《计算机应用论文视频动画播放控制策略.doc》由会员分享,可在线阅读,更多相关《计算机应用论文视频动画播放控制策略.doc(4页珍藏版)》请在三一文库上搜索。

1、视频动画播放控制策略 宋亚林1,何欣1,2(1.河南大学计算中心,河南开封475004;2.西安交通大学计算机科学技术系,陕西西安710049)摘要:针对C#语言中常用播放控制方法在视频动画的逆序及自定义播放时存在的较大问题,提出一种利用C#语言定义新视频文件、播放控制文件的方法。该方法创建继承于PictureBox的播放控件,从而轻松控制正序、逆序、自定义顺序播放及播放速度,可以使用简单的视频动画源(帧总数少)实现较为复杂的视频效果。实验结果表明,所设计的播放控制方法方便快捷,播放速度达到日常视频软件的播放水平,视频大小可任意缩放,正序、逆序可自由控制,可适用绝大多数视频播放项目的要求。关键

2、词:C#语言;COM控件;可扩展标记语言;视频;字节流中图法分类号:TP317.4文献标识码:A文章编号:1000-7024(2011)03-1115-04 0引言在大多数视频动画中,有很多看似复杂、视频文件较大的视频,是可以通过简单动画合成的,例如风吹动树木摇摆过程等动画视频,可采用将非常简单的动画过程视频(树木一次摇摆过程视频),自定义播放、正序播放、逆序播放等实现,播放时如果合理的跳帧,还可实现不同风力的效果。想要达到这些要求,就要能够自由随意地播放视频文件,目前视频播放常常选用的播放软件对正常播放支持的很好,但对视频动画的倒播、自定义播放等操作基本上无能为力。 Visual C#是微软

3、公司基于DotNetFramework的主要的编程开发语言,它凭借其简单、易用、高效、功能强大、跨平台等特点从问世以后就一直深受编程开发人员的喜爱,C#在视频播放时通常选用播放控件,这种方法虽然简单易行,仅仅调用COM(component object model)控件就可以实现,但不能很好地做到自由控制视频的目的。本文提出了一种自由控制视频动画的思路与实现方法,该方法具有自由控制视频动画,随意改变视频画面效果等诸多优点。 1视频控制方法 在视频播放控制中,常用的视频控制方法有:COM控件库方法,DirectShow方法,解析视频文件。 (1)调用COM控件方法:方法简单易用,也是大多程序选用

4、的方法,只要将控件加入程序中,便可直接使用其播放功能,这种播放控件对正序播放支持较好,但在逆序及自定义播放等操作时存在很多问题,播放控件虽然提供搜索帧函数,但效率极低,并且有明显的停滞现象,不能达到要求2-3。 (2)DirectShow方法:DirectShow是基于DirectX的一种视频控制方法,可以通过DirectX函数库操作AVI等视频文件,该方法较COM控件法灵活,可以在很大程度上提高程序控制视频的能力,但仍不能达到自由控制的目的4。 (3)解析视频文件法:该方法是通过对得到视频文件流解析,自行控制播放,从而达到完美控制的效果。但若要很好的控制视频文件,必须对视频文件结构有非常清楚

5、的了解,否则控制无从谈起,并且目前视频文件格式的多样化和各种视频压缩算法的特异性,导致为了达到较为完美地控制视频播放,必定付出很大的代价且难度也较大。从而使用这种方法的适用范围受到的很大限制。 (4)自定义视频文件法:为了能够自由地控制视频文件播放,也能避免解析视频文件格式的麻烦,本文提出一种控制视频动画播放的有效策略,此控制策略可以轻松实现正序、逆序、自定义顺序播放以及播放速度控制等效果,从而使用简单的视频动画源来实现较为复杂的视频效果。以下介绍该策略的主要思路及实现方法。 主要方法步骤为:生成自定义新文件:将原有视频文件转换成自定义文件存放所有的帧图片;定义控制文件:合理的创建播放控制文件

6、是实现自由控制播放的必备条件;设计播放控件:使用C#的自定义控件功能,通过继承现有Picture-Box类并配合Timer计时器,快速实现播放控件,从而达到自由控制视频文件的目的。 1.1定义新文件 视频文件由多幅连续的图片文件构成,一幅图片称为一帧,为了能够很好的控制视频文件,需先取出视频文件的帧,按二进制文件方式重新组成新文件。制作新视频文件时,必须将一些附加信息(如:帧总数、帧大小等)写入文件头部,帧图片信息以字节流方式顺序组成文件体数据,加在文件头信息之后,如图1所示,其中B表示1个字节。 生成新文件的主要工作在于能够快速地获取原视频文件中的帧、得到新文件头部所需的附加信息及写文件操作

7、。本文中的视频文件选用较常用的AVI视频文件格式。 (1)获取视频文件中的帧图片: 获取AVI文件中帧图片的方法有多种,本文中采用AVI-FILE32.DLL来完成。为了能够进一步处理,将获取的帧图片存放在C#的Bitmap对象中,但AVIFILE32得到的图片格式与Bitmap中的图片数据格式不同,AVIFILE32.DLL得到的帧图片数据不能直接放入Bitmap对象中,需要经过类型转换才能实现。转换方法是将获取的帧图片放入C#定义的结构体BIT-MAPFILEHEADER和BITMAPINFOHEADER中,如图2所示。 通过两个结构体的首地址得到结构体的字节流,并复制到C#的Memory

8、Stream对象中,MemoryStream对象可直接生成Bitmap对象,从而得到帧图片。AVIFILE32.DLL中主要使用的方法有AVIFileOpen()、AVIStreamGetFrameOpen()、AVI-StreamGetFrame()、AVIStreamLength()等5-7。 (2)组成文件头:文件头部的帧图片总数可通过AVIStream-Length()得到,帧的尺寸大小是已知的。为了能够表示较长的视频,本文中的帧总数信息用3个字节表示(23 8=16777216),每帧图片大小和视频画面尺寸大小有关,文中选用3个字节表示。文件头中附加信息多为整型数据,存放时需将整型转

9、成字节数组,方法采用快速的移位操作,如下所示B0=I>>16;B=I>>8;B=I&255;(1)式中:I帧总数值。 (3)组成文件体:使用Bitmap对象SaveAs方法可得到指定格式图片的字节流(本文中采用JPEG格式),顺序组成最终的文件体。Bitmap对象中的帧图片如需加工处理(如:增强、灰度化、淡化等)可在组成文件体前进行。C#的指针法处理图像,速度快效率高,完全可以和C+程序相媲美,图像处理可在10ms左右完成,不影响整个文件生成的过程,具体操作可参考相关书籍。 (4)写文件:C#中提供非常方便的文件操作类,按照图1中所述的文件头加图像文件字节流的顺

10、序写入文件,为了提高读取速度,本文中采用二进制方式的BinaryWriter类来完成。 1.2控制文件 为了达到使用简单的视频动画源,实现复杂的视频效果的目标,必须设计播放控制文件,文件主要内容如下:(1)视频段编号(ID):在自由控制视频文件的程序中,通常会把一段视频文件多次反复使用,控制文件中要能体现出这一点,视频段编号功能类似于ID号,用于标识在视频文件中的某一段视频,是整个视频的子集名; (2)播放流水号(PlayOrder):同一视频段编号内的视频常常存在正常播放和逆序播放两种情况,且这两种情况会交替出现,用播放流水号来存放同一视频段内正序段、逆序段、停止段等的顺序。 (3)开始帧(

11、StartFrame)与结束帧(EndFrame)标记:标记某一视频段编号内,正序或逆序播放帧的开始帧与结束帧的帧编号 。 (4)播放类型标记(PlayFlag):标记一段帧集合是正序播放(normal)、逆序播放(Rev)还是停止(Stop)。 (5)跳帧标记(PlayStep):标记跳帧情况,可控制正序、逆序的播放速度,此值越大表示播放速度越快。 考虑控制文件较小,控制标记较多,数据以可扩展标记语言(XML)方式存放,XML语言具有简洁易用、开放的国际化标准等特点,读取和设置该文件都极为方便8。下述是部分主要的标记内容:1.3播放控件的设计播放新视频文件时,先读取控制文件中的各种参数,编码

12、解析新视频文件,再使用C#中的图片控件PictureBox即可实现视频的顺序、逆序、自定义顺序及播放速度的控制。但如果每次都编写解析文件、读取控制文件、控制PictureBox显示等重复性地操作,必然带来开发效率的降低和错误率的提高。为了避免这种问题,可使用自定义控件的方式来实现。自定义控件实际就是自定义可视化类,为了提高效率增大代码的重用性,可在继承原有类的基础上,添加特有的属性和方法来实现。C#是完全面向对象的编程语言,对类的继承操作非常易于实现,播放控件的设计的主要步骤如下:继承PictrueBox类:视频中的帧图片最终放入Bitmap对象,而PictureBox对象可轻松显示Bitma

13、p对象,故在编写自定义控件时继承PictureBox类。主要代码为:class VideoPic:PictureBox添加播放控件的新属性:继承于PictureBox类的新控件VideoPic已具备了图片显示的基本功能(如缩放等),但要播放新定义的视频文件还须添加其他属性,如:播放文件的路径属性File-Path、控制文件的路径属性CtrlFilePath、播放时间间隔PlayInterval(常设置为30ms)等。C#中添加类中属性的主要源代码如下:public string FilePathgetreturn obj;/属性值可得到setfilePath=value;/属性值可进行设置加入

14、时间计时器:用PictureBox来显示视频动画,必须有计时器参与,在自定义控件中实例化Timer类,将Timer对象的Interval的属性对应于PlayInterval属性,并添加其Tick事件处理函数,在函数体内根据控制文件中配置信息,控制每帧的显示来实现动画。 添加播放控件的方法:添加的方法主要包含有解析新视频文件功能、得到特定帧图片的功能等。 (1)解析文件:打开文件得到的文件流放在流变量bsfile中,解析文件头获得帧总数及文件中每一帧图片字节流的大小,将文件中的每一帧图片的字节流起始位置和结束位置放入一个结构体数组alPlay中,待播放时使用。主要步骤如下,每帧图片的字节流大小定

15、义为整型变量tptp=bs0<<16+bs<<8+bs;(2)(2)得到指定的Bitmap对象:根据控制文件信息,读取结构体数组alPlay,得到指定帧在文件流bsfile中的位置信息,通过字节流生成Bitmap对象得到相应的帧图片。 2实验结果与分析 2.1实验过程与步骤使用C#建立新视频文件,创建视频控制文件,利用C#强大易用的创建自定义控件能力,建立基于PictureBox的播放控件,用Timer时间器提供精确的视频动画控制,达到了非常满意的自由控制视频播放的目的。实验流程如图4所示。文中所述的视频动画控件方法在Visualstudio2005IDE环境下编程实现

16、,开发语言为C#,本例中选择视频内容为一棵小树左右缓慢摇摆一次的简单视频动画的AVI文件,帧总数为900,帧尺寸大小为800*600像素。 (1)生成新文件:通过AVIStreamLength()得到帧总数900,通过AVIStreamGetFrame()得到帧图片,帧图片最终以JPEG格式存放,帧图片的平均字节数为10KB左右,生成文件头如图5所示。 (2)定义播放配置文件:如表1所述,共两段播放过程,分别为编号001和号002,通过开始帧和结束帧以及播放类型Normal表示正常播放,Rev为倒播,跳帧数大表示树的摇摆幅度大。表1最终以XML文件存放,XML文件内容为图6。 (3)使用自制播

17、放控件,并设置FilePath、CtrlFilePath、Play-Interval为30ms。 2.2控制方法的性能与分析 以上程序在配置为CPU 2.4C,内存1G;操作系统为Win-dows XP或Windows 2003的计算机上运行。图片间切换可在30ms内流畅地进行播放,即图片显示速度可达到30帧/秒以上,足以满足视频播放的要求(中国电视节目Pal制的帧速率为25帧/秒),同时程序可适用于多数视频播放项目的要求。 3结束语 本文提出的控制视频动画播放策略,可以轻松实现正序、逆序、自定义顺序播放等效果。所设计的播放控制使用方便快捷、播放速度达到日常视频软件的播放水平、视频大小可任意缩

18、放,正序、逆序可自由控制,可适用绝大多数视频播放项目的要求。目前所设计的播放控件已在多个视频控制项目中使用,如:展示风力等原因导致建筑物倒塌过程等,效果甚佳。 本文提到的方法主要是针对AVI这种视频文件的播放控制策略,此方法稍加改动便可用于其他视频文件的自由播放问题。 参考文献: Christian Nagel,Bill Evjen,Jay Glynn.Professional C#M.4rded.北京:清华大学出版社,2006. 冯正全.COM原理概述J.成都信息工程学院学报,2004(9):398-402. 3郭国文.COM组件在.NET环境中的应用J.福建电脑,2006(8):166-167. 4张勇,罗静.基于DirectShow的AVI文件在局域网中的组播与接收J.计算机工程,2006,32(10):218-220. 5朱森勇,周平.VC.Net编程实现多AVI视频帧序列的剪裁编辑J.电脑编程技巧与维护,2005(7):56-59. 6许先斌,朱平,安晖.扩展格式AVI文件播放的编程方法J.计算机工程与设计,2003,24(3):27-29. 7童亚拉.一种新的流媒体文件快速读取方法J.微电子学与计算机,2007(11):114-116. 8刘芳,肖铁军.XML应用的基石:XML解析技术J计算机工程与设计,2005,26(10):2823-2824

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1