压缩基于VFW的AVI视频文件压缩与解压缩方法研究

视频文件压缩  时间:2021-04-20  阅读:()

封面

标题基于V FW的AVI视频文件压缩与解压缩方法研究

Word格式可编辑可修改

精心整理放心阅读欢迎下载

文档信息

基于VFW的AVI视频文件压缩与解压缩方法研

目录

2. AVI文件的结构

3. AVI文件中视频数据压缩方法

4. 实验与结果分析

5. 结论

正文

摘要摘 要本文首先概述了微软数字视频软件开发包VFW

Video For Windows的内容与其体系结构然后针对AVI文件结构进行必要性分析接着重点讲述如何使用VC++编程技术调用VFW库函数对AVI文件中视频数据进行压缩与解压缩处理并给出了相关函数或代码

关键字 VFW AV I VC++压缩解压缩

VFW(Video for Windows)是Microsoft推出的关于数字视频的一个软件开发包 VFW的核心是AVI文件标准。 围绕AVI文件 VFW推出了一整套完整的视频采集、压缩、解压缩、回放和编辑的应用程序接口

(AP I) 。 VFW接口主要包括多个动态连接库通过这些组件间的协调合作来完成视频的捕获、视频压缩及播放功能。

本文主要通过VC++编程技术调用其中的AVIFILE.DLL和ICM 以实现对AVI文件中视频数据的压缩、解压缩以及播放操作并经过几组实验得到了较好的效果。

2. AV I文件的结构

AVI文件所采用的RIFF Resource Interchange File Format资源互换文件格式文件结构是由4字节的数据块标记FOURCC(four -character code) ‘AVI’所标识且包含一个ID为""hdrl""的LIST信息块其主要用于定义AVI文件的数据格式记录着视频音频的格式参数信息还包含一个ID为""movi""的LIST数据块其记录着AVI的音视频序列数据而对于视频流来说其子块中包含各帧视频图像的数据内容最后RIFF文件结构包含一个ID为""idxl""的索引块其包含数据块在文件中的位置索引能有效提高AV I文件的读写速度 当然这部分是可选的。

3. AV I文件中视频数据压缩方法

我们知道 以未压缩格式存储的AVI视频文件的体积很大。一方面这样会占用大量的硬盘空间另一方面受限于网络带宽的因素大体积的AVI视频文件也不便于在互联网络中进行顺畅传输。为此对AVI视频文件进行有效地压缩处理成为了人们必须要考虑的研究点。微软的VFW库中也包含了这方面的库函数便于编程人员方便地对AV I视

频数据进行压缩处理。下面本文介绍一种通过调用VFW中相关库函数实现压缩AV I视频数据的方法。

首先与前边介绍的读取方法一样使用相关库函数获取一个未压缩AVI视频文件的pgf 然后调用VFW中为方便用户所提供的“选择压缩器对话框”函数I CCompress orChoo se(m_hWnd

I CMF_CHOOSE_KEYFRAME &bmp info_input NULL &m_Com ""选择压缩类型"") ;来选择一个我们需要的目标压缩编码方式。该函数中bmpi nfo_input即为前边所述使用AV IS treamReadFormat函数返回的B I TMAP I NFO类型的结构体变量其描述着原始视频数据的格式信息。当用户选择完目标压缩器后相关设置信息将会被自动填充到里面的m_Com中该变量为C OMP VA类型的结构体。接着利用前边m_C om中的目标压缩器句柄以及bmp info_input中的B ITMAPI NFOHEADER结构体变量调用ICCompres sGe tFormat函数返回一个目标视频压缩数据的格式信息这里以类型为BITMAPINFO的结构体变量m_OutInfo存储。正确完成前边的设置操作后则执行下面的函数完成压缩数据所需的初始化操作

ICCompressBegin(m_Com.hic (BITMAPINFO*)&bmpinfo_input(BITMAPINFO*)m_OutInfo)

最后我们再调用如下函数完成一帧视频数据的压缩操作

ICCompress(m_Com.hi c 0 &m_Out Info->bmiHeadercompres s_data & bmpinfo_input.bmiHeader or igin_image &dwCk ID dwCompF lag s 0 0 100 NULL NULL)

其中 compres s_data为压缩后的当前帧数据其应在使用ICCompress前执行如下函数申请内存空间

BYTE *compres s_data = (BYTE *) new BYTE[m_Out Info-

>bmiHeader.biSizeImage]

而origin_image为未压缩的当前帧数据其应使用下面的语句获取且每执行ICCompress函数压缩完一帧数据后应该改变

AVIStreamGetFrame函数中lPos的值 以实现对下一帧数据进行压缩origin_image = (BYTE *)AVIStreamGetFrame(pgf lPos)orig in_image= or igi n_image+s izeof(BITMAPINFOHEADER)

为了将每次压缩完的视频数据重新再写入到AV I文件中我们每执行完一次ICCompres s函数后应该及时利用函数AVI Str eamSet Format和AVI StreamWri te完成当前帧数据的写入。如此反复不断进行直到完成最后一帧数据的压缩 同时新的AV I压缩视频文件也完成了写入。受篇幅所限关于创建AV I文件并写入视频流的具体操作不再讨论可以查询MS DN获取相关帮助信息。

4. 实验与结果分析

为了验证本文方法的有效性笔者进行了两组实验对实际效果加以验证。每组实验均采用由Microsoft Visual C++ 6.0编译环境生成的试验程序对AVI视频素材进行分析处理。该程序基于本文所述的VFW技术方法可播放压缩或非压缩的AV I视频素材并可对非压缩的AV I视频数据进行压缩处理。

第一组

本组实验主要用于验证对AVI视频文件的读取效果。为此我们准备了采用三种不同的AVI视频编码压制的数据文件验证本试验程序能够正常读取其中的视频流数据。效果如下图1 2 3所示

图1 Intel IYUV编码方式的AVI

图2 XVID编码方式的AVI

图3 RGB 24位无压缩的AVI

透过上述图片数据我们看到该试验程序可以顺利读取采用不同压缩方式的AV I视频文件并顺利播放出来且理论上来说只要在系统中正确安装并注册了相关的AV I解码器那么都可以被试验程序正常播放。

第二组

本组实验主要用于验证对非压缩AVI视频文件的压缩效果为此我们准备了一段RGB24位非压缩的AV I视频文件并使用本试验程序调

用XV I D编码器对其内部视频流数据进行压制效果如下图4 5 6 7所示

图4待被压缩的原始AV I视频 图5选择XV I D编码器

图6压制过程 图7生成的XV ID编码的压缩AVI

由上述图片数据可以证明该试验程序能够顺利调用系统中的一种编码器对未压缩的AVI视频文件进行压制较好地取得了预期效果。

5. 结论

经过上面两组实验的图像数据分析可以证明本文介绍的基于VFW的AV I视频文件压缩与解压缩方法的可行性为实现AV I数据文件的压缩存储与其能在网络中进行高效传输提供了一定帮助。

参考文献

[1]聂栋栋.基于网络实现AV I视频流的实时操作[J] .电脑与信息技术 2002 1

[2]徐从东罗家融王树坤.基于VFW的视频图像叠加与播放方法[J] .计算机工程与设计 2007 28 1

[3]孙涛.谈谈视频压缩管理器1 VCM -Video Compress

Manager EB/OL .http:untaoznz/archive/2005/08/19/458860.aspx 2005-08-19。

[4]孙鑫余安萍. VC++深入详解[M] .北京: 电子工业出版社.

2006 6。

[5] Microsoft Corporation. Microsoft Developer NetworkLibrary[DB/DK] .Microsoft Corporation 2001

“基于VFW的AVI视频文件压缩与解压缩方法研究”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言或者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载

数脉科技香港自营,10Mbps CN2物理机420元/月

数脉科技怎么样?数脉科技品牌创办于2019,由一家从2012年开始从事idc行业的商家创办,目前主营产品是香港服务器,线路有阿里云线路和自营CN2线路,均为中国大陆直连带宽,适合建站及运行各种负载较高的项目,同时支持人民币、台币、美元等结算,提供支付宝、微信、PayPal付款方式。本次数脉科技给发来了新的7月促销活动,CN2+BGP线路的香港服务器,带宽10m起,配置E3-16G-30M-3IP,...

inlicloud48元/月,云主机,2核1G/200Mbps,可选安徽/上海联通/广州移动/江门移动NAT

inlicloud怎么样?inlicloud(引力主机)主要产品为国内NAT系列VPS,目前主要有:上海联通NAT(200Mbps带宽)、宿州联通NAT(200Mbps带宽)、广州移动NAT(200Mbps带宽)。根据官方的说法国内的NAT系列VPS不要求备案、不要求实名、对中转要求也不严格,但是,禁止任何形式的回国!安徽nat/上海联通/广州移动/江门移动nat云主机,2核1G/200Mbps仅...

Sharktech:无限流量服务器丹佛,洛杉矶,荷兰$49/月起,1Gbps带宽哦!

鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主打高防产品,独立服务器免费提供60Gbps/48Mpps攻击防御。机房提供1-10Gbps带宽不限流量服务器,最低丹佛/荷兰机房每月49美元起,洛杉矶机房最低59美元/月起。下面列出部分促销机型的配置信息。机房...

视频文件压缩为你推荐
usergoogleCreatedwin7三星iphone重庆网通中国联通重庆分公司的公司简介win10关闭445端口win10怎么关闭445的最新相关信息iphone连不上wifi苹果手机无法连接wifi是什么原因重庆电信宽带管家如何才能以正确的流程在重庆电信安装上宽带迅雷快鸟迅雷快鸟这种强盗软件不违规吗?morphvoxpro怎么用MorphVOX Pro变声器声音怎样调试bitchinaBTchina和VeryCD是什么意思?这与87.53有什么关系?
网站空间申请 泛域名 北京域名空间 hostmonster 香港服务器99idc 个人免费空间 谁的qq空间最好看 域名转接 免费防火墙 中国电信测网速 hdd 上海服务器 免费mysql数据库 免费邮件服务器 河南移动梦网 免费asp空间申请 lamp的音标 镇江高防 114dns apnic 更多