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

vpsdime:夏日促销活动,美国达拉斯VPS,2G内存/2核/20gSSD/1T流量,$20/年

vpsdime怎么样?vpsdime是2013年注册的国外VPS主机商,实际上他还有一系列的其他域名站点如Winity.io, Backupsy,Cloudive, Virtora等等,母公司“Nodisto IT”相对来说还是很靠谱了的商家。VPSDime主要提供各种高配低价VPS套餐,其中Linux VPS和存储VPS基于OpenVZ架构,高级VPS基于KVM。VPSDime在上个季度的Low...

香港2GB内存DIYVM2核(¥50月)香港沙田CN2云服务器

DiyVM 香港沙田机房,也是采用的CN2优化线路,目前也有入手且在使用中,我个人感觉如果中文业务需要用到的话虽然日本机房也是CN2,但是线路的稳定性不如香港机房,所以我们在这篇文章中亲测看看香港机房,然后对比之前看到的日本机房。香港机房的配置信息。CPU内存 硬盘带宽IP价格购买地址2核2G50G2M1¥50/月选择方案4核4G60G3M1¥100/月选择方案4核8G70G3M4¥200/月选择...

HostWebis:美国/法国便宜服务器,100Mbps不限流量,高配置大硬盘,$44/月起

hostwebis怎么样?hostwebis昨天在webhosting发布了几款美国高配置大硬盘机器,但报价需要联系客服。看了下该商家的其它产品,发现几款美国服务器、法国服务器还比较实惠,100Mbps不限流量,高配置大硬盘,$44/月起,有兴趣的可以关注一下。HostWebis是一家国外主机品牌,官网宣称1998年就成立了,根据目标市场的不同,以不同品牌名称提供网络托管服务。2003年,通过与W...

视频文件压缩为你推荐
投资者适当性客户端系统爱信艾达株式会社documentcss模块ios8支持ipad2.3ios5重庆网通中国联通重庆分公司的公司简介eaccelerator使用apmsevr中eAccelerator显示NO是什么问题ipad如何上网ipad怎么设置网络?谷歌sbgoogle一下"SB",虽然显示的是baidu排第一,链接的不是baidu.
企业虚拟主机 网通服务器租用 花生壳免费域名申请 香港ufo bbr 免备案cdn 空间打开慢 godaddy支付宝 表单样式 web服务器的架设 网站在线扫描 东莞服务器托管 全能空间 华为k3 阿里云邮箱登陆 xuni 空间服务器 网络速度 杭州电信宽带 双11促销 更多