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

wordpress专业外贸建站主题 WordPress专业外贸企业网站搭建模版

WordPress专业外贸企业网站搭建模版,特色专业外贸企业风格 + 自适应网站开发设计 通用流行的外贸企业网站模块 + 更好的SEO搜索优化和收录 自定义多模块的产品展示功能 + 高效实用的后台自定义模块设置!采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera...

pacificrack:2021年七夕VPS特别促销,$13.14/年,2G内存/2核/60gSSD/1T流量,支持Windows

pacificrack官方在搞2021年七夕促销,两款便宜vps给的配置都是挺不错的,依旧是接入1Gbps带宽,KVM虚拟、纯SSD raid10阵列,支持包括Linux、Windows 7、10、server2003、2008、2012、2016、2019在内多种操作系统。本次促销的VPS请特别注意限制条件,见本文末尾!官方网站:https://pacificrack.com支持PayPal、支...

BGP.TO日本和新加坡服务器进行促销,日本服务器6.5折

BGP.TO目前针对日本和新加坡服务器进行促销,其中日本东京服务器6.5折,而新加坡服务器7.5折起。这是一家专门的独立服务器租售网站,提供包括中国香港、日本、新加坡和洛杉矶的服务器租用业务,基本上都是自有硬件、IP资源等,国内优化直连线路,机器自动化部署上架,并提供产品的基本管理功能(自助开关机重启重装等)。新加坡服务器 $93.75/月CPU:E3-1230v3内存:16GB硬盘:480GB ...

视频文件压缩为你推荐
matrixnvdocumentcss思科flash技术参数及要求:支持ipad支持ipad步骤ioscss3圆角css实现圆角的几种方法是什么?tracerouteping命令和traceroute(tracert )在功能上的区别有哪些?tcpip上的netbios怎么启用TCP/IP上的NetBIOS
猫咪永久域名收藏地址 便宜域名注册 域名主机管理系统 泛域名绑定 新秒杀 bandwagonhost pccw 免费网站监控 godaddy域名转出 debian7 免费全能空间 150邮箱 web服务器架设 空间论坛 php空间推荐 股票老左 hkg 江苏双线服务器 彩虹云 789 更多