DirectShow基础编程 采集视频数据
2010-04-26 10:43
525 查看
视频数据采集大致可以分为四个步骤:
1、创建Capture Graph Builder 和Filter Graph Manager,将两者关联。
2、创建Filter,并添加到Graph中。
3、根据媒体类型等信息连接Filter。
4、运行Graph。
1、创建Capture Graph Builder 和Filter Graph Manager,将两者关联。
2、创建Filter,并添加到Graph中。
3、根据媒体类型等信息连接Filter。
4、运行Graph。
CComPtr<ICaptureGraphBuilder2> pCapture; CComPtr<IGraphBuilder> pGB; CComPtr<IMediaControl> pMC; CComPtr<IMediaEvent> pME; CComPtr<IBaseFilter> pSource; CComPtr<IBaseFilter> pRender; CComPtr<IBaseFilter> pDecompressor; ///1、创建Capture Graph Builder 和Filter Graph Manager,将两者关联/// CoCreateInstance( CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pCapture.p ); CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGB.p); pCapture->SetFiltergraph(pGB); ///2、创建Filter,并添加到Graph中//////////////////////////////////// //第一步,寻找采集设备,创建Source Filter //在FindCapture函数中实现 //可以通过系统枚举器枚举、Filter Mapper、CLSID等三种方式找到 FindCapture(pSource); //第二步,创建Render Filter //类CMyRender实现Render Filter //这个类可以实现为将视频数据写入进程共享空间供其他进程使用 //也可以实现为将视频数据写入文件,等等 CMyRender* pMyRender = new CMyRender(); pRender = pMyRender; //第三步,创建Translate Filter //这是DirectShow提供的一个接口 //如果视频数据是YUV等格式,则需要使用这个类 CoCreateInstance( CLSID_AVIDec, NULL, CLSCTX_INPROC, IID_IBaseFilter, (void **) &(pDecompressor.p)); //第四步,把三个Filter添加到Graph中 pGB->AddFilter(pSource,L"Video Capture"); pGB->AddFilter(pDecompressor,L"Color Format Convert"); pGB->AddFilter(pRender,L"Video Receive"); ///3、根据媒体类型等信息连接Filter//////////////////////////////////// //ConnectFilter函数用来连接GraphBuild中的两个Filter,这个函数需要实现 //VideoType是数据类型,通过其他方式获得 if(VideoType == VF_RGB24) { ConnectFilter(pCapture,pSource,pRender); } else if(VideoType == VF_YUV2) { ConnectFilter(pCapture,pSource,pDecompressor); ConnectFilter(pCapture,pDecompressor,pRender); } ///4、运行Graph//////////////////////////////////////////////////////////// pGB.QueryInterface(&pMC); pGB.QueryInterface(&pME); pMC->Run();
相关文章推荐
- directshow和vfw采集并转发视频数据的接口
- 摘录DirectShow数据,视频采集
- 提取DirectShow中视频采集的数据 分类: DirectX 2014-09-29 14:41 481人阅读 评论(0) 收藏
- directshow 采集音视频数据
- PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
- 提取DirectShow中视频采集的数据
- DirectShow&DirectSound采集音频视频数据 vs2013
- 提取DirectShow中视频采集的数据
- Directshow 采集音视频数据H264+AAC+rtmp效果还不错
- PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
- postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
- 提取DirectShow中视频采集的数据
- Directshow采集到的视频BYTE数据转成IplImage数据并保存出去
- C#基础视频教程2 常见数据类型和属性方法
- DirectShow基础编程 最简单transform filter 编写步骤
- 九章算法 基础算法 强化算法 系统设计 大数据 安卓 leetcode 高清视频
- java编程基础之集合中嵌套集合时数据的读取
- 音视频数据压缩及编解码基础
- CC2530基础实验之传感器采集数据发送至上位机
- 没有编程基础的小白可以学习大数据吗?