基于DirectShow实现的视频捕捉与采集
前言
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。
DirectShow是基于COM的,为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。DirectShow提供了大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。
编程思路
为了更加容易建立视频捕捉应用程序,DirectShow提供了一个叫做Capture Graph Builder的对象,Capture Graph Builder提供IcaptureGraphBuilder2接口,该接口可以建立和控制Capture Graph。
建立视频捕捉程序,必须首先获取并初始化IcaptureGraphBuilder2接口,然后选择一个适当的视频捕捉设备。选择好设备后,为该设备创建Capturefilter,然后调用AddFilter把Capture filter添加到Filter Graph。如果仅仅希望用摄像头来进行实时监控的话,只需要在上面的基础上调用ICaptureGraphBuilder2::RenderStream就可以了
本程序在VS2010 PlatForm采用Micosoft 的DriectXShow9.0b SDK编写的一套实时视频捕捉,采集功能,并且还提供了视频和单帧图像参数设置界面,采集的视频流和单帧图像都写在文件中,之后使用OpenCV进行音视频的处理,当然这是我后期要做的事情,前面部分已经完成,前半部分开发使用了因为很多东西要查,需要学习DXShow如何设计filter graph manger 和filter graph 的创建以及pin 的连接,最后renderstream,产生视频流,之后,在视频流上捕捉单帧图像数据,加入图像头,写入文件进行保存到文件系统.
环境配置
首先保证已经正确安装了MicroSoft的DXSDK,请一定安装DriectXShow9.0b版本的SDK包,这里我将其安装了在C盘根目录下
打开VS2010项目,在项目属性中设置项目需要使用的项目需要包含的包含目录和库目录
具体步骤:
- 项目-项目名属性-配置属性-VC++目录-包含目录-“C:\DXSDK\Include”
- 项目-项目名属性-配置属性-VC++目录-包含目录-“C:\DXSDK\Lib”
http://www.biyezuopin.vip
软件效果
全局效果
视频格式设置
图像格式设置
基于DirectShow实现的视频捕捉与采集相关推荐
- DirectShow 09 - 音视频捕捉
音频捕捉: Audio Capture Filter 如果驱动支持WaveInXX函数族,则使用SDK WaveInXX 每个声卡都可以用filter来访问 每个输入设备可以作为一个Pin 声卡的输 ...
- DirectShow编程实现摄像头视频捕捉
前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布. DirectShow为多媒体流的捕捉和回放提供了强有力的支持.用Direc ...
- 基于DirectShow视频及图片捕获软件的开发(写的非常详细)在后几篇博客 我会更新
我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等.DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起 ...
- Directshow 视频捕捉入门篇 二
下面的代码来结束如何选择一个视频捕捉设备,就是我们平常说的摄像头 选择一个视频捕捉设备(Select capture device) 如何选择一个视频捕捉设备,可以采用系统设备枚举,详细资料参见Usi ...
- 基于GTK的USB视频采集程序
基于GTK的USB视频采集程序 查了几天的资料,今天终于将USB摄像头测试程序调试成功了.这个测试程序很简单,功能就是将USB摄像头采集的数据显示在屏幕上.写这个程序的目的是熟悉usb摄像头的一些基本 ...
- [转]DirectShow应用——视频捕捉WDM Vs VFW
本文转自:http://bbs.njupt.edu.cn/cgi-bin/bbsanc?path=/groups/computer.faq/MultiMedia/D52F2B929/D99113C57 ...
- Visual C++编程实现摄像头视频捕捉
摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例. 前言 DirectShow是微软公司提供的一 ...
- 基于FFmpeg的运动视频分析
本文来自英特尔资深软件工程师李忠,张华在LiveVideoStackCon 2018大会上的分享,由LiveVideoStack整理而成.分享中两位老师重点介绍了基于FFmpeg的运动视频分析技术架构 ...
- 基于Delphi的网上视频聊天软件
摘要:目前网上视频聊天软件.视频会议软件.可视IP电话软件随处可见,你是否想自己做一个玩玩?其实这类软件无非是视频加上网络而建成的.如果熟悉视频捕捉和网络传输技术,根本就难不倒你.微软为软件开发人员提 ...
- ECCV 2018论文解读 | DeepVS:基于深度学习的视频显著性方法
作者丨蒋铼 学校丨北京航空航天大学在校博士,大不列颠哥伦比亚大学联合培养博士 研究方向丨计算机视觉 本文概述了来自北京航空航天大学徐迈老师组 ECCV 2018 的工作 DeepVS: A Deep ...
最新文章
- 浅析Struts 体系结构与工作原理(图)
- Nature Communications∣开花过程中,拟南芥茎尖分生组织基因表达和组蛋白标记的时空动态
- 嵌入式目标检测--Fast YOLO: A Fast You Only Look Once System for Real-time Embedded Object Detection
- python在日常工作处理中的应用-Python在工作中的应用
- @Component注解解析
- 在Apache上隐藏服务器签名的方法
- 计算机软件与电子出版物,电子出版物出版和互联网出版.pdf
- jQuery复选框多选问题
- 文都计算机考研辅导班哪个好,考研辅导班哪个好,海文还是文都?
- java输入一串字符串反转_反转Java中的字符串
- ArcGIS几种数据格式
- javascript 字符串与数组之间的相互转换(join、split)与splice介绍
- VRay 2.0 for SketchUp高级室内渲染教程锌
- 踫撞检测 之一 — 关于分离轴理论的解释(Separating Axis Theorem (SAT) Explanation)(完整翻译)
- GET请求淘宝H5页面获取商品信息
- 湖南交通学院校友会小程序云开发解决方案
- 与蜂窝连接的无人机的空地干扰缓解
- 2017年全国大学生电子设计竞赛 单相用电器分析监测装置(k题)
- DNS服务解析与原理笔记
- b s html模板,【B/S】HTML~CSS初识
热门文章
- Hash算法及数字签名【六】
- 2020_TKDE_DiffNet++_A Neural Influence and Interest Diffusion Network for Social Recommendation
- 今日arXiv精选 | Interspeech/KDD/TACL/ICCV/CIKM
- 基于Java Web的酒店管理系统
- win搭建7java环境_WIN7java环境变量搭建方法
- 一元三次方程重根判别式_一元三次方程快速解法
- 机器人社社长事迹_新京报整版报道我校机器人学院校友刘鹏见义勇为等事迹
- M0内核单片机中断向量重映射
- 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用
- Linux加密框架中的算法和算法模式(二)