网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 基本理论
  • 融资决策
  • 财务分析
  • 投资决策
  • 财务控制
  • 其他相关
  • 您的位置:写论文网 > 财务管理 > 其他相关 > 基于VFW的AVI视频文件压缩与... 正文 2020-01-16 07:27:09

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

    相关热词搜索:

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

    基于VFW的AVI视频文件压缩与解压缩方法研究3500字 ICCompressBegin(m_Com.hic,(BITMAPINFO*)&bmpinfo_input,(BITMAPINFO*) m_OutInfo);
    最后我们再调用如下函数完成一帧视频数据的压缩操作, ICCompress(m_Com.hic,0,&m_OutInfo->bmiHeader,compress_data,& bmpinfo_input.bmiHeader, origin_image,& dwCkID, dwCompFlags,0,0,100,NULL,NULL);
    其中,compress_data为压缩后的当前帧数据,其应在使用ICCompress前执 行如下函数申请内存空间:
    BYTE *compress_data = (BYTE *) new BYTE[m_OutInfo->bmiHeader.biSizeImage];
    而origin_image为未压缩的当前帧数据,其应使用下面的语句获取,且每执 行ICCompress函数压缩完一帧数据后,应该改变AVIStreamGetFrame函数中lPos 的值,以实现对下一帧数据进行压缩, origin_image = (BYTE *)AVIStreamGetFrame(pgf, lPos);
    origin_image= origin_image+sizeof(BITMAPINFOHEADER);
    为了将每次压缩完的视频数据重新再写入到AVI文件中,我们每执行完一次 ICCompress函数后,应该及时利用函数AVIStreamSetFormat和AVIStreamWrite 完成当前帧数据的写入。如此反复不断进行,直到完成最后一帧数据的压缩,同 时新的AVI压缩视频文件也完成了写入。受篇幅所限,关于创建AVI文件并写入视 频流的具体操作不再讨论,可以查询MSDN获取相关帮助信息。

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

    第一组:
    本组实验主要用于验证对AVI视频文件的读取效果。为此我们准备了采用三 种不同的AVI视频编码压制的数据文件,验证本试验程序能够正常读取其中的视 频流数据。效果如下图 1,2,3所示:
    图1 Intel IYUV 编码方式的AVI 本文首先概述了微软数字视频软件开发包VFW(Video For Windows)的内容 与其体系结构,然后针对AVI文件结构进行必要性分析,接着重点讲述如何使用 VC++编程技术调用VFW库函数对AVI文件中视频数据进行压缩与解压缩处理,并给 出了相关函数或代码。

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

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

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

    首先与前边介绍的读取方法一样,使用相关库函数获取一个未压缩AVI视频 文件的pgf;

    然后调用VFW中为方便用户所提供的“选择压缩器对话框”函数 ICCompressorChoose(m_hWnd,ICMF_CHOOSE_KEYFRAME,&bmpinfo_input,NULL,&m _Com,""选择压缩类型"");来选择一个我们需要的目标压缩编码方式。该函数中 bmpinfo_input即为前边所述,使用AVIStreamReadFormat函数返回的BITMAPINFO 类型的结构体变量,其描述着原始视频数据的格式信息。当用户选择完目标压缩 器后,相关设置信息将会被自动填充到里面的m_Com中,该变量为COMPVARS类型 的结构体。接着利用前边m_Com中的目标压缩器句柄以及bmpinfo_input中的 BITMAPINFOHEADER结构体变量,调用ICCompressGetFormat函数返回一个目标视 频压缩数据的格式信息,这里以类型为BITMAPINFO的结构体变量m_OutInfo存储。

    正确完成前边的设置操作后,则执行下面的函数完成压缩数据所需的初始化操作, 图2 XVID 编码方式的AVI 图3 RGB 24位无压缩的AVI 透过上述图片数据,我们看到该试验程序可以顺利读取采用不同压缩方式的 AVI视频文件,并顺利播放出来,且理论上来说只要在系统中正确安装并注册了 相关的AVI解码器,那么都可以被试验程序正常播放。

    第二组:
    本组实验主要用于验证对非压缩AVI视频文件的压缩效果,为此我们准备了 一段RGB24位非压缩的AVI视频文件,并使用本试验程序调用XVID编码器对其内部 视频流数据进行压制,效果如下图4,5,6,7所示:
    图4 待被压缩的原始AVI视频 图5 选择XVID编码器 图6 压制过程 图7生成的XVID编码的压缩AVI 由上述图片数据可以证明该试验程序能够顺利调用系统中的一种编码器,对未压缩的AVI视频文件进行压制,较好地取得了预期效果。

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

    [1] 聂栋栋. 基于网络实现AVI视频流的实时操作[J] .电脑与信息技术, 2002,(1). [2] 徐从东,罗家融,王树坤. 基于VFW的视频图像叠加与播放方法[J]. 工程 与 设计,2007,28(1) [3]孙涛. 谈谈视频压缩管理器1(VCM)-Video Compress Manager[EB/OL]. http://blog.csdn.net/suntaoznz/archive/2005/08/19/458860.aspx, 2005-08-19. [4] 孙鑫,余安萍. VC++深入详解[M].北京: 电子工业出版社. 2006,6. [5] Microsoft Corporation. Microsoft Developer Network Library[DB/DK].Microsoft Corporation,2001

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    基于VFW的AVI视频文件压缩与解压缩方法研究3500字_文件压缩与解压缩》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.