计算机应用论文视频动画播放控制策略.doc
《计算机应用论文视频动画播放控制策略.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中所述的文件头加图像文件字节流的顺
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 应用 论文 视频 动画 播放 控制 策略
链接地址:https://www.31ppt.com/p-2391979.html