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

A400:36元/季,16.8/月kvm架构,线路优质,延迟低

A400互联是一家成立于2020年的商家,主要推行洛杉矶服务器采用kvm架构,线路优质,延迟低,稳定性高!全场产品对标腾讯云轻量,服务器线路有有美国洛杉矶cn2_gia、香港cn2+cmi,目前推行的vps服务器均为精心挑选的优质线路机房,A400互联推出了夏季优惠洛杉矶5折、香港7折促销活动,质量可靠,价格实惠!二:优惠码洛杉矶五折优惠码:20210620香港cn2七折优惠码:0710三、优惠方...

LOCVPS-2021年6月香港便宜vps宽带升级,充值就送代金券,其它八折优惠!

LOCVPS怎么样?LOCVPS是一家成立于2011年的稳定老牌国人商家,目前提供中国香港、韩国、美国、日本、新加坡、德国、荷兰等区域VPS服务器,所有机房Ping延迟低,国内速度优秀,非常适合建站和远程办公,所有机房Ping延迟低,国内速度优秀,非常适合做站。XEN架构产品的特点是小带宽无限流量、不超售!KVM架构是目前比较流行的虚拟化技术,大带宽,生态发展比较全面!所有大家可以根据自己业务需求...

酷番云78元台湾精品CN2 2核 1G 60G SSD硬盘

酷番云怎么样?酷番云就不讲太多了,介绍过很多次,老牌商家完事,最近有不少小伙伴,一直问我台湾VPS,比较难找好的商家,台湾VPS本来就比较少,也介绍了不少商家,线路都不是很好,有些需求支持Windows是比较少的,这里我们就给大家测评下 酷番云的台湾VPS,支持多个版本Linux和Windows操作系统,提供了CN2线路,并且还是原生IP,更惊喜的是提供的是无限流量。有需求的可以试试。可以看到回程...

视频文件压缩为你推荐
支持ipad重庆宽带测速重庆市电信网速测试是哪个网站或ipipad如何上网苹果ipad无线上网卡怎么设置?谷歌sbgoogle一下"SB",虽然显示的是baidu排第一,链接的不是baidu.win7勒索病毒补丁我的电脑是windows7系统,为什么打不了针对勒索病毒的补丁(杀毒软件显联通合约机iphone5联通合约机iphone5和电信合约机Iphone5哪个好苹果5.1.1越狱你好,iphone5.1.1完美越狱,电脑上为什么连不上呢?只能显示充电,谢谢android5.1安卓5.1比4.4流畅很多吗bitchinaBTchina和VeryCD是什么意思?这与87.53有什么关系?能源eset
windows虚拟主机 未注册域名查询 qq云存储 韩国加速器 59.99美元 美国主机论坛 68.168.16.150 轻博 windows2003iso 免费ddos防火墙 免费smtp服务器 html空间 panel1 100m免费空间 php空间申请 秒杀汇 网络空间租赁 umax120 登陆空间 中国电信测速器 更多