DirectShow : AVI文件操作 -- C++ 类

本文介绍了一个使用DirectShow库在C++中操作AVI文件的类AVICodec。该类提供了播放AVI文件和获取指定帧RGB24格式数据的功能。初始化时,它打开并渲染文件,通过IMediaDet接口获取帧率、长度等信息,同时提供了抓取图像和释放内存的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DirectShow  AVI 文件操作

最近在做一个“运动物体分割”的课题,在课题中要处理视频文件,首先考虑最简单的视频格式:AVI格式,由于AVI格式是微软推出的,所以在Windows下操作比较容易,这里我用DirectShow读写AVI视频文件,并把所有操作封装成一个类:AVICodec。下面是类的定义:

class AVICodec
{
public:
 AVICodec(){size = -1;}
 AVICodec(LPCWSTR avifile);
 void release();
 int init_getframe();
 char* getframe(unsigned int index);
 int getFrame(unsigned int index);
 int getFrameEnd();
 void play();
private:
 IGraphBuilder *pGraph;
 IMediaControl *pControl;
 IMediaEvent   *pEvent;
 IMediaDet   *pDet;

 AM_MEDIA_TYPE amMediaType;
public:
 BITMAPINFOHEADER *pbih;
 double fps, length;
 unsigned int nFrame;
 long size;
 bool is_begin;
 char * pBuffer;
private:
 char * buf;
};

这个类目前实现两个功能:

  1. 播放AVI文件 &
本人搜集的5款视频编码信息查看工具 AVIcodec_1.2.0.113 光是看扩展名是无法知道影片的正确的编码格式的,特别像DivX这样的高品质、高压缩比的影片格式出现后。除了原本未压缩的AVI影片外,目前使用这样的扩展名格式影就还有DivX、XviD等等,而使用AVIcodec来检测影片的正确压缩格式是较简单的方法,让你知道目前计算机上还少装了什么样的影音编码器。 当然,AVIcodec 也提供了已安装编码器的检测功能,让你知道目前在计算机上已经安装了什么样的编码器。使用AVIcodec 侦测影片格式的方法相当简单,只要在AVIcodec 中加载要检测的影片,即可在窗口中看到完整的影片信息,包括编码方式、影片品质、档案大小等等,当然,影片无法正常的原因也就一目了然。 ------------------------------------------------------------------------ GSpot_2.70 GSpot 能帮你检查多媒体文件所需的 codec,以及关于文件的详细数据,如文件中影 / 音数据所占的比例,文件是如何制成的(影 / 音)等等。 ------------------------------------------------------------------------ InstalledCodec_1.15 不论你是采用幻想影音这打包式的编解码器还是自己单独下载安装,都要清楚已经安装了哪些,InstalledCodec就是专门用于这个用途的软件。但是光查看怎么行,对于某个引起冲突的解码器我们还能采取措施将其禁用,保证它们之间的兼容性 ------------------------------------------------------------------------ MediaInfo_0.7.30 MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码,许可协议:GNU GPL/LGPL)。 MediaInfo可以获得多媒体文件的哪些信息? 内容信息:标题,作者,专辑名,音轨号,日期,总时间……    视频:编码器,长宽比,帧频率,比特率……    音频:编码器,采样率,声道数,语言,比特率……    文本:语言和字幕   段落:段落数,列表    DivX, XviD, H263, H.263, H264, x264, ASP, AVC, iTunes, MPEG-1, MPEG1, MPEG-2, MPEG2, MPEG-4, MPEG4, MP4, M4A, M4V, QuickTime, RealVideo, RealAudio, RA, RM, MSMPEG4v1, MSMPEG4v2, MSMPEG4v3, VOB, DVD, WMA, VMW, ASF, 3GP, 3GPP, 3GP2 MediaInfo支持哪些文件格式? 视频:MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)... (编码器:DivX, XviD, MSMPEG4, ASP, H.264, AVC...)    音频:OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...    字幕:SRT, SSA, ASS, SAMI... multiplexer, demuxer, mixer, muxer, video decoder, audio decoder, PAL, NTSC MediaInfo有哪些主要功能和特点?   支持众多视频和音频文件格式   多种查看方式:文本,表格,树形图,网页……   自定义查看方式   信息导出:文本,CSV,HTML……   三种发布版本:图形界面,命令行,DLL(动态链接库)   与Windows资源管理器整合:拖放,右键菜单   国际化:有多种界面语言供选择   (软件界面)轻松实现本地化 (需要志愿者翻译语言文件) ------------------------------------------------------------------------ VideoInspector 2.2.4.123 好用的影音编码检测工具,可以检测出本机播放某影片缺少哪些视频编码器、音频编码器。透过它,你可以知道为什么视频文件会没有声音或不能正常播放,它将会帮助你安装所需要的解码软件,同时它还能检查你的系统中哪几种编码可用,支持批量检测,并可导出检测结果。对于喜爱在网上下载电影欣赏的网友来说,Vide
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值