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

虎跃云-物理机16H/32G/50M山东枣庄高防BGP服务器低至550元每月!

虎跃科技怎么样?虎跃科技(虎跃云)是一家成立于2017年的国内专业服务商,专业主营云服务器和独立服务器(物理机)高防机房有着高端华为T级清洗能力,目前产品地区有:山东,江苏,浙江等多地区云服务器和独立服务器,今天虎跃云给大家带来了优惠活动,为了更好的促销,枣庄高防BGP服务器最高配置16核32G仅需550元/月,有需要的小伙伴可以来看看哦!产品可以支持24H无条件退款(活动产品退款请以活动规则为准...

ZJI(月付480元),香港阿里云专线服务器

ZJI是成立于2011年原Wordpress圈知名主机商—维翔主机,2018年9月更名为ZJI,主要提供香港、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册业务。本月商家针对香港阿里云线路独立服务器提供月付立减270-400元优惠码,优惠后香港独立服务器(阿里云专线)E3或者E5 CPU,SSD硬盘,最低每月仅480元起。阿里一型CPU:Intel E5-2630L...

Virtono:€23.7/年,KVM-2GB/25GB/2TB/洛杉矶&达拉斯&纽约&罗马尼亚等

Virtono最近推出了夏季促销活动,为月付、季付、半年付等提供9折优惠码,年付已直接5折,而且下单后在LET回复订单号还能获得双倍内存,不限制付款周期。这是一家成立于2014年的国外VPS主机商,提供VPS和服务器租用等产品,商家支持PayPal、信用卡、支付宝等国内外付款方式,可选数据中心包括罗马尼亚、美国洛杉矶、达拉斯、迈阿密、英国和德国等。下面列出几款VPS主机配置信息,请留意,下列配置中...

视频文件压缩为你推荐
朝阳分局电子物证实验室建设项目支持ipad更新iphoneipad如何上网ipad如何允许app使用网络ipad如何上网ipad怎么设置网络?ipad连不上wifi苹果ipad突然连不上网了,是怎么回事?网络是好的,手机能上网。iphone连不上wifi苹果手机无法连接wifi是什么原因itunes备份itunes备份是什么ipad上网为什么ipad网速特别慢迅雷快鸟迅雷快鸟是做什么用的,,,
安徽虚拟主机 东莞电信局 securitycenter 全球付 20g硬盘 香港新世界电讯 免费ftp站点 本网站在美国维护 元旦促销 web服务器的架设 已备案删除域名 linux服务器维护 昆明蜗牛家 四川电信商城 国外的代理服务器 iki 永久免费空间 websitepanel godaddy退款 reboot 更多