用DirectShow实现视频捕捉
基于DirectShow的DV视频实时采集系统的实现
基于DirectShow的DV视频实时采集系统的实现
薛勇
【期刊名称】《电脑知识与技术》
【年(卷),期】2009(005)024
【摘要】随着计逄机(技)术和视频编码技术的发展,现在DV摄像机已越来越多地进入了大众生活,特别是在教育教学中得到了广泛的应用,迫切需要把DV摄像机中的DV数据采集到计算机中进行浏览和处理为此,笔者在Visual C++6.0环境下,运用DirectShow编程技术,编写了一个DV视频实时采集系统,可以实现DV视频的回放和数据的采集,具有良好的实时性、可扩展性.
【总页数】3页(P6768-6770)
【作者】薛勇
【作者单位】江苏技术师范学院,信息与教育技术中心,江苏,常州,213001
【正文语种】中文
【中图分类】TP37
【相关文献】
1.基于DirectShow RTMP协议的视频采集传输系统的设计与实现 [J], 孙盼;康维新
2.基于ADV7180的视频图像实时采集系统的设计 [J], 蔺志强;孟令军;彭晴晴
3.基于DVB信号的实时采集编码系统设计与实现 [J], 陈华凌;张仁政
4.基于DirectShow的网络视频点播系统的设计与实现 [J], 雷文礼;任新成;张栋;高瑛
5.基于 DirectShow 和 WPF 的实时视频图像采集与处理系统设计与实现 [J], 武凤翔
因版权原因,仅展示原文概要,查看原文内容请购买。
用DirectShow实现视频捕捉
3 视频捕捉的整体框架与思路
2、Capture Filter有两个pin,分别是Capture和Preview。从图3 可以看出,它们和其他的Filter连接在一起,分成两路。 Capture->AVI Mux->File Writer这条分支是用来存储多媒体 文件;Preview->Video Renderer这条分之是用来视频显示。 建立了Capture Filter以后,还得建立AVI Mux Filter、File Writer、Video Renderer这些Filter。使用 ICaptureGraphBuilder接口依次连接到Filter Graph中,最终形 成一个完整的Filter Graph Manager。要实现视频捕捉到文件, 可用ICaptureGraphBuilder::RenderStream方法,指定相应的 输出文件路径等参数即可。要实现视频捕捉,也可以用 ICaptureGraphBuilder::RenderStream方法,通过设置 RenderStream不同的参数实现它不一样的功能。
Filter
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE,
1 DirectShow的介绍
在DirectShow系统之上,我们看到的,即是我们的应用程序 (Application)。应用程序要按照一定的意图建立起相应的Filter Graph,然后通过Filter Graph Manager来控制整个的数据处理过程。 DirectShow能在Filter Graph运行的时候接收到各种事件,并通过消息 的方式发送到我们的应用程序。这样,就实现了应用程序DirectShow
WS_CLIPCHILDREN); //设定窗口大小 CRect rectClient; GetClientRect(hWnd,rectClient); m_pVW->SetWindowPosition(0, 0, 320, 240); //设定可视 hr=m_pVW->put_Visible(OATRUE);
基于DirectShow视频及图片捕获软件的开发
我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等。
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。
DirectShow为多媒体流的捕捉和回放提供了强有力的支持。
运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。
它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。
另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。
更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。
笔者使用visual studio 2005 来开发了基于DirectShow的视频捕获软件,并用开发的软件对映美精相机进行了测试。
本软件不但可以实现对相机的视频捕获,而且还可以抓取图像帧。
软件运行时自动搜索所连接的相机,预览后可以对相机参数进行设置。
下面是软件的主界面。
预览视频后可以对视频格式和图像参数进行设置。
开始预览时,捕获的视频是黑白的,我们将颜色空间设置为UYVY即可捕获彩色视频。
下面是捕获的一帧图像,图像质量虽然没有映美精自带的软件效果好,但已经实现了所需各项基本功能,接下来的工作将会进一步提高软件性能。
另外我们还可以捕获视频,点击“捕获视频”按钮,输入要保持的文件名,注意要以.avi后缀结尾,点确定就开始捕获视频。
从我们开发的软件可以看到,映美精的相机能够很好的支持DirectShow的驱动,我们的软件对映美精相机的识别是如此的容易。
接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。
C++摄像头视频捕捉程序
Visual C++编程实现摄像头视频捕捉摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例。
前言DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。
DirectShow为多媒体流的捕捉和回放提供了强有力的支持。
用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。
DirectShow是基于COM的,为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。
DirectShow提供了大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。
编程思路为了更加容易建立视频捕捉应用程序,DirectShow提供了一个叫做Capture Graph Builder的对象,Capture Graph Builder提供IcaptureGraphBuilder2接口,该接口可以建立和控制Capture Graph。
建立视频捕捉程序,必须首先获取并初始化IcaptureGraphBuilder2接口,然后选择一个适当的视频捕捉设备。
选择好设备后,为该设备创建Capture filter,然后调用AddFilter 把Capture filter添加到Filter Graph。
如果仅仅希望用摄像头来进行实时监控的话,只需要在上面的基础上调用ICaptureGraphBuilder2::RenderStream就可以了:ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder//省略初始化部分代码IBaseFilter *pCap; // Video capture filter.//省略初始化和添加到Filter Graph部分代码pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pCap, NULL, NULL);DirectShow提供了一个捕捉静态图像的方法:使用Sample Grabber filter。
DirectShow视频采集方案
流媒体处理技术以其复杂性和技术性一直受到人们的关注。随着网络技术的不断发展,流媒体在网络上得到了广泛地应用。如何能够简单、有效地进行流媒体处理,已成为一个焦点问题。为此,Microsoft推出了DirectShow,DirectShow是Microsoft推出的基于Windows平台的流媒体处理开发包,它与DirectX一起发布。DirectShow对流媒体的捕捉、回放提供了强大的支持,使用它还可以在基于WDM驱动的采集卡上进行数据捕捉。本节将介绍有关DirectShow的相关知识。
while (pEnumPins->Next(1,&pOutpin,NULL)==S_OK)
{
pOutpin->QueryDirection(&pDir);
if (pDir==dir)
{
return pOutpin;
}
}
return 0;
}
用户可以按下面的方式获得某个过滤器的输入、输出引脚。
IPin * pComOut,*pComIn ;
在开发DirectShow应用程序时,通常需要设计一个过滤图表(Filter Graph),向过滤图表中添加相应的过滤器,最后连接过滤器的引脚就完成了功能的设计。例如,实现一个简单的视频预览功能,需要向过滤图表中添加一个视频捕捉源过滤器和一个Video Renderer过滤器,将视频捕捉源过滤器的输出引脚与Video Renderer过滤器的输入引脚相连就可以了。而在程序中只需要按照设计过滤图表的捕捉添加过滤器并连接过滤器引脚就可以了。在连接过滤器引脚时需要注意:只能是输出过滤器引脚与输入过滤器引脚相连,两个输出过滤器或两个输入过滤器引脚是不能相连的。
为了在程序中使用DirectShow,需要单独安装DirectX,当前DirectX的最新版本为9.0,即DirectX9.0,用户可以从Microsoft的官方网站上免费下载。在安装DirectX之后,程序中需要引用“dshow.h”头文件,并导入“Strmiids.lib”库文件和“quartz.lib”库文件才可以使用DirectShow。代码如下:
基于DirectShow的多线程视频采集系统
立体视觉系统是拟人机器人的重要组成部分 ,是近年来
在 Widws n o 平台上处理各种格式的媒体文件 的回放、音视频 采集等高性能要求的多媒体应 用, 提供 了完整的解决方案 。 】
Di cS o 是基于 C M 的应 用系统 ,其核心是被称 为过滤 r th w e O 器的插件模块 。如图 1 所示 ,中央部分是 Di cS o r th w系统 , e 位于 应用层中。过滤器在过滤器图表中配置 ,通过过 滤器 图 表管理器 检查 过滤器之 间的连接 ,并且控制过滤器之 间的数 据流动。 过滤器可以大致分 为 3类 :源过滤器 ,负责获取数据 ; 转换过滤器 , 负责数据的格 式转换 , 然后将数据继 续往下传 ;
维普资讯
第 3 卷 第 2 期 2 0
正2 3
・
计Leabharlann 算机工程
20 年 1 06 0月
Oc o e 0 6 tb r 2 0
2D
Co p t rEn i e r n m u e gn e ig
多媒 体技 术 及应 用 ・
文章编号:l o 32( o) -o2— 3 文献标识码: 0 — 48 o6 o一2l 0 0 2 2 A
X ON Ch o L y n , I N X a fn I G a , U Qio g T A ioa g
( p rme t fE e to i g n eig, u a i est, h n h i2 0 3 De at n lcr ncEn ie rn F d nUn v ri S a g a 0 43 ) o y
的一个 研究热点 。如何 同步采集机器人 “ 左右眼”的图像 信 息 ,是实现机器 人拟人视觉 的前提条件 。目前常 用视频采集
Directshow音视频采集
音视频采集主要内容:●Directshow的概述和系统组成●Directshow中的音视频同步机制●Directshow应用程序开发流程●Directshow实现音视频的采集程序●Fliter的开发(RTP实时传输和H.264编解码)整个系统的设计:一、Directshow概述和系统组成1.DirectShow介绍DirectShow是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。
它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV 文件,同时支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。
DirectShow 整合了其它的DirectX技术,能自动地侦测并使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。
DirectShow是建立在组件对象模型(COM)上的,因此编写DirectShow应用时,必须具备COM客户端程序编写的知识。
对于大部分的应用,需要实现自己的COM对象,DirectShow提供了大部分你需要的DirectShow组件,但是假如需要编写自己的DirectShow组件(RTP传输Fliter以及H.264编解码Fliter),还需要具备编写COM组件的知识。
2.DirectShow系统组成如图所示,最大一块就是DirectShow系统,虚线以下是Ring 0(内核模式)特权级别的硬件设备,虚线以上是Ring 3(用户模式)特权级别的应用层。
Dshow系统位于应用层中。
它使用一种叫做Fliter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块叫做Fliter,一组Fliter按一定的顺序连接成一条“流水线”协同工作,就组成一个Fliter Graph。
3.Fliter Graph和Fliter每个Fliter与一个或多个其它的Fliter相连,其中的连接点也是一个COM对象,称作Pin,Fliter使用Pin将数据从一个Fliter转移到另一个,图中的箭头指示了数据流动的方向。
基于DirectShow的P2P网络视频采集、传输与播放系统(DOC)
软件技术课程设计实验报告(基于DirectShow的P2P网络视频采集、传输与播放系统)一.概述DirectShow是一个windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。
它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3和WAV文件。
同时DirectShow支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。
DirectShow整合了其它的DirectX技术,能自动地侦测并使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。
DirectShow大大简化了媒体回放、格式转换和采集工作。
但与此同时,它也为用户自定义的解决方案提供了底层流控制框架,从而使用户可以自行创建支持新的文件格式或其它用途的DirectShow组件。
DirectShow的主要功能是提供对多媒体流的捉捕与回放。
这种多媒体流既可以来自本地磁盘文件,也可以来自网络上的远程服务器。
也就是说,它提供了一种“在线播放”的功能,在远程数据尚未完全传输到本地机器上的同时,本地应用程序可不必等待数据完全传输完毕再进行播放,可以一边传输,一边播放。
这就为网络化的视频采集数据的实时解码显示提供一个方便的开发平台。
点对点技术(peer-to-peer,简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。
P2P网络通常用于通过连接来连接节点。
这类网络可以用于多种用途,各种文件共享软件已经得到了广泛的使用。
P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。
二.需求分析2.1 开发要求1.熟悉、掌握vs2010开发工具,以及DirectShow SDK9.0软件开发包。
2.熟悉了解Socket网络编程;3.开发基于DirectShow的应用软件,要求能够完成P2P的网络视频采集、视频传输、视频播放的功能。
4.基本功能:实现采集视频、传输视频、实现异地播放采集视频。
基于DirectShow的多摄像头视频采集
基于DirectShow的多摄像头视频采集1.为什么使用DirectShow笔者使用的是两个USB摄像头,单摄像头视频采集使用OpenCV的VideoCapture类没有问题,但是双摄像头就有问题,一个正常,另外一个采集不到信息,显示一片灰色。
网上有种解决方法是逆序打开摄像头,结果两个窗口是可以采集到视频信息,但是竟然是同一个摄像头的视频信息,无奈的只能使用DirectShow采集多摄像头视频信息。
先看看什么是DirectShow:DirectShow 是 DirectX 的组件之一, DirectX 软件开发包是 Microsoft 提供的一套在 Windows平台上开发高性能图形、声音、输入、输出和网络游戏的编程接口。
这其中,DirectShow提供了应用程序从适当的硬件中捕捉和预览音、视频的能力。
数据源包括: VCR、 Camera、 TV Tuner、 Microphone 或其他的数据源。
应用程序可以立刻显示捕捉的数据(预览),或是保存到一个文件中。
摄像头采集信息常用的软件AMCap就是基于DirectShow SDK编写的。
查阅一下官方文档,感觉好难的样子,难道要新学一门“快过时”的技术吗?幸好于仕琪老师写了一个CCameraDS类,可直接返回IplImage,使用方便。
2.在VS2010中配置DirectShow并采集双目摄像头视频下载DirectShow相关文件,我已经共享在百度云盘,点击下载。
解压以后copy到D:\opencv里(放在这里为了管理方便)在解决资源管理器中的项目名称处右键\属性\配置属性\VC++目录,引用目录中添加DirectShow的include文件夹,我添加的是D:\opencv\DirectShow\Include在引用目录下面有一个库目录,添加DirectShow的Lib文件夹,我添加的是D:\opencv\DirectShow\Lib;下载CCameraDS类相关文件,点击下载。
directshow采集多媒体音视频同步
随着计算机网络和多媒体技术的发展,多媒体应用如视频会议、远程监控、远程教育、可视电话、医疗视频会诊等迅速兴起,视频和音频捕获成为多媒体应用中的关键环节和重要前提。
目前采用较多的基于设备软件开发工具箱(SDK)的捕获方式存在成本较高、灵活性和扩展性较差等问题,难以满足用户需求和网络环境的变化。
微软公司推出的多媒体开发软件包———DirectShow成为解决这些问题的一个有力工具。
DirectShow提供高质量的多媒体数据流的捕获和回放功能,广泛支持多种媒体格式,包括ASF、MPEG、A VI、DV、MP3和W A V等。
同时DirectShow对VFW具有良好的兼容性,并具有其无法比拟的优势,包括支持大量多媒体数据捕获的同时可通过网络传播和播放,支持视频与音频在捕获和播放中的完全同步,支持来自不同媒体源数据捕获的合成等。
本文着重介绍如何利用Visual C++实现基于DirectShow的视频和音频捕获以及其中涉及到的关键问题,以供工程人员和开发人员参考使用。
DirectShow的原理1、DirectShow的体系结构。
应用程序与DirectShow组件以及DirectShow所支持的软硬件之间的关系如图1所示。
DirectShow使用模块化的架构,系统中的基础模块称为过滤器(Filter)。
过滤器作为软件的组件,可完成单一的数据流处理功能。
按照功能,过滤器大致分为3类:源过滤器(Source Filter)、转换过滤器(Transform Filter)和表现过滤器(Rendering Filter)。
源过滤器负责从媒体源获取数据;转换过滤器负责数据的格式转换、传输,如数据流分离/合成、编码/解码等;表现过滤器负责数据的最终去向,将数据送往显卡和声卡进行播放,或输出到文件进行存储。
过滤器之间通过引脚(Pin)进行有序连接,组合而成过滤器图(Filter Graph),用以实现组合的一系列功能。
应用程序创建过滤器图管理器(Filter Graph Manager),负责过滤器图的组织和连接功能并控制数据在其中的流动。
基于DirectShow技术实现视频采集
基于DirectShow技术实现视频采集
郭昊
【期刊名称】《火控雷达技术》
【年(卷),期】2008(037)002
【摘要】介绍DirectShow技术的基本概念,提出了基于DirectShow技术采集视频数据的软件设计方案,文中详细叙述了软件开发的实现框架.
【总页数】4页(P97-100)
【作者】郭昊
【作者单位】西安电子工程研究所,西安,710100
【正文语种】中文
【中图分类】TP274+.2
【相关文献】
1.基于DirectShow RTMP协议的视频采集传输系统的设计与实现 [J], 孙盼;康维新
2.基于DirectShow的视频采集的实现 [J], 邵敏敏;胡碧金;赵琳
3.基于DirectShow技术的视频采集方案的实现 [J], 虢莉敏;陈宁;刘宏刚;张向东
4.基于DirectShow的视频采集系统的设计与实现 [J], 魏立诚;朱桂林
5.基于DirectShow的视频采集与压缩存储的实现 [J], 张明杰
因版权原因,仅展示原文概要,查看原文内容请购买。
浅谈DirectShow技术捕获视频流中帧图像
浅谈DirectShow 技术捕获视频流中帧图像肖长健(江苏联合职业技术学院盐城生物工程分院,江苏 盐城 224731)摘 要:利用微软公司提供 DirectShow 接口技术,实现了多媒体文件或视频流中视频帧图像的捕获,并提取出有用的图 像帧信息。
关键词:DirectS how 技术;filter ;视频流;视频帧图像捕获Brief T alk on Capturing Images from Video Streams by DirectShow TechnologyXIAO Chan g-ji an(Yancheng Biology Engineering High School, Jiangsu Union Technical Institute, Yancheng, Jiangsu 224731, China )Abstract : Making use of DirectShow interface technology provided by Microsoft C orporation, the capturing video images from multimedia files or video streams is realized, and useful image frames information is extracted. Key words :DirectShow technolog y ;filter ;video streams ;video images capture0 引言本文以 Direct Show 技术为基础,通过对媒体文件或多媒体 流中的视频流的处理,从多媒体文件视频流中捕获视频帧图像,提取出所需要的最好、最有价值的图像帧信息。
利用 Direct Sho w 技术从视频流中捕获帧图像,捕获精度可达到 1 帧。
1 DirectShowD ir ec t X M e d i a 是微软公司发布的专用于开发多媒体应用的 程 序 接 口 ,包 括 D ir ec t A n i m a ti on 、D ir ec t Sho w 、M e d i a P l a y e rC on tr o l 、D ir ec t X T r a n s f o r m 和D ir ec t 3D R e t a i n e d M od e 。
基于DirectShow的P2P网络视频采集传输与播放系统
软件技术课程设计实验报告基于 DirectShow 的 P2P 网络视频采集、传输与播放系统)一. 概述DirectShow 是一个windows 平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。
它支持多种多样的媒体文件格式,包括ASF、MPEG、AVI、MP3 和WAV 文件。
同时DirectShow 支持使用WDM 驱动或早期的VFW 驱动来进行多媒体流的采集。
DirectShow 整合了其它的DirectX 技术,能自动地侦测并使用可利用的音视频硬件加速,也能支持没有硬件加速的系统。
DirectShow 大大简化了媒体回放、格式转换和采集工作。
但与此同时,它也为用户自定义的解决方案提供了底层流控制框架,从而使用户可以自行创建支持新的文件格式或其它用途的DirectShow 组件。
DirectShow 的主要功能是提供对多媒体流的捉捕与回放。
这种多媒体流既可以来自本地磁盘文件,也可以来自网络上的远程服务器。
也就是说,它提供了一种“在线播放”的功能,在远程数据尚未完全传输到本地机器上的同时,本地应用程序可不必等待数据完全传输完毕再进行播放,可以一边传输,一边播放。
这就为网络化的视频采集数据的实时解码显示提供一个方便的开发平台。
点对点技术(peer-to-peer ,简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。
P2P 网络通常用于通过连接来连接节点。
这类网络可以用于多种用途,各种文件共享软件已经得到了广泛的使用。
P2P 技术也被使用在类似VoIP 等实时媒体业务的数据通信中。
二. 需求分析2.1 开发要求1. 熟悉、掌握vs2010 开发工具,以及DirectShow SDK9.0 软件开发包。
2. 熟悉了解Socket 网络编程;3. 开发基于DirectShow 的应用软件,要求能够完成P2P 的网络视频采集、视频传输、视频播放的功能。
基于VFW和Directshow的视频捕捉技术研究
基于VFW和Directshow的视频捕捉技术研究作者:高余胜来源:《知识文库》2018年第08期随着计算机技术的飞速发展越来越多的需求要软件来实现视频采集,而且也要获得较好的图像效果。
在这种情况下,Windows平台专门开发了满足这种需求的信息处理和集成技术,也为数字视频信息的实时捕捉提供了多种实现技术,其中主要有VFW技术和Directshow技术。
文章将主要介绍VFW和Directshow技术,并简要介绍了运用该技术实现视频捕捉的技术研究。
近年来Internet不断发展,人们希望通过网络可以传输更多的视频信息或者视频信号,而实现视频传输的核心问题便是多媒体信息的压缩及传输技术。
传统意义上的视频处理系统以模拟设备为主,其结构是一种单功能、单向、集总方式的信息采集系统,因此传统设备尽管发展到很高的水平,但其局限性依然存在,已无太大发展空间。
面对越来越高质量的需求,视频字数化的发展将是必由之路。
实时数字视频处理系统具有传统模拟处理系统无法比拟的优点,而且符合当前字数化、网络化和智能化的发展趋势,所以基于VFW和Directshow的视频捕捉技术的数字视频处理正在逐步取代传统视频处理技术并广泛应用于多媒体发展中。
1 VFW视频捕捉技术VFW(Video for Windows)即视窗操作系统下载视频是Microsoft公司为适应社会发展需求而推出的关于数字视频的一个软件开发包,而AVI(Audio VideoInterleave)文件标准是VFW技术的核心。
VFW的优势在于简单直观,能较快捷地运用回调函数、宏等函数完成实时的视频捕捉和单帧捕获并提供对视频源的控制。
此外,AVICap类能直接访问视频缓冲区,而不需要生成中间文件,实时性和效率较高。
实现VFW视频捕捉技术的流程可以设计为:创建视频捕获窗口、捕获窗口与视频捕获驱动链接、视频捕获参数的设置、设置捕获窗口的显示模式、注册系统回调函数、捕获图像到缓存或文件并进行相应处理、捕获结束。
基于DirectShow的DV视频实时采集系统的实现
基于DirectShow的DV视频实时采集系统的实现作者:薛勇来源:《电脑知识与技术》2009年第24期摘要:随着计算机技术和视频编码技术的发展,现在DV摄像机已越来越多地进入了大众生活,特别是在教育教学中得到了广泛的应用,迫切需要把DV摄像机中的DV数据采集到计算机中进行浏览和处理,为此,笔者在Visual C++ 6.0环境下,运用DirectShow编程技术,编写了一个DV视频实时采集系统,可以实现DV视频的回放和数据的采集,具有良好的实时性、可扩展性。
关键词:DV;DirectShow;AVI中图分类号:TP37文献标识码:A文章编号:1009-3044(2009)24-6768-03Realization of Real-time Digital Video Collecting System Based on DirectShowXUE Yong(Information and Technology Education Center, Jiangsu Teachers University of Technology, Changzhou 213001, China)Abstract: With the development of computer technology and video encoding technology, DV vidicons have been more and more popular in people's daily lives; therefore, it is urgent that the DV data be transferred from DV vidicons to the computer to be browed and processed. For this reason, a real-time DV video collecting system is to be built with DirectShow under Visual C++ 6.0, whose purpose is to realize DV playback and data collecting. The system has a good characteristic of being real time and extendable.Key words: DV; DirectShow; AVI1 DV技术综述DV(Digital Video)是一种专门用来在专用盒式录像带上记录和播放数字视频的压缩格式标准,它是由日本索尼,松下十多个国际性大公司于1996年联合推出,并由国际电信联盟(ITU)批准使用。
directshow的中文资料之设备列举和捕捉接口
directshow的中文资料之设备列举和捕捉接口第一篇:directshow的中文资料之设备列举和捕捉接口directshow的中文资料之设备列举和捕捉接口这篇解释和示例如何通过DirectShow的接口去初始化和访问系统的硬件设备。
代表性的,DirectShow应用程序使用下面类型的硬件。
音/视频捕捉卡音频或视频回放卡音频或视频压缩或解压卡(象MPEG解码器)下面将以AV设备作参考。
如何列举设备包括在DirectShow SDK中的接口,类,和例子提供了音/视频捕捉和回放的功能。
因为文件源过滤器和filter graph manager处理了内在的工作,所有,添加捕捉功能到一个应用程序中,只需添加很少的代码。
你可以通过列举系统硬件设备和得到设备列表完成特别的任务(例如:所有的视频捕捉卡的列表)。
DirectShow自动为win32和Video for Windows 设备实例化过滤器。
要AV设备工作,首先,你必须检测当前系统存在的设备。
ICreateDevEnum接口建立指定类型的列表。
提供你需要的检测和设置硬件的功能。
访问一个指定的设备有三步,详细的说明和代码如下:建立系统硬件设备的列表首先,申明一个列表指针,然后通过CoCreateInstance 建立。
CLSID_SystemDeviceEnum是我们想建立对象的类型,IID_ICreateDevEnum是接口的GUID。
ICreateDevEnum *pCreateDevEnum;CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum,(void**)&pCreate DevEnum);其次,建立一个特别类型的硬件设备的列表(例如视频捕捉卡)申明一个IEnumMoniker接口,并把他传给ICreateDevEnum::CreateClassEnumerator 方法。
基于DirectShow的多路视频采集系统
图1 DirectShow架构DirectShow系统使用一种叫做过滤器图表(FilterGraph)的结构模型,对整个多媒体数据流的处理过程进行统一管理,参与数据处理的功能模块叫做过滤器(Filter),每个Filter通过引脚(Pin)在Filter Graph中按照一定的顺序连接成一条“流水线”协同工作[3]。
依照功能来划分,Filter可以划分为三类:Source Filters、陶崇峻(1974-),男,辽宁丹东人,本科,网络工程师。
研究方向:信息安全、银行卡技术与风险。
图2 多路视频采集系统演示效果图3 系统结构TCHAR szCaptureFile[_MAX_PATH]; //捕获到文件的存储路径WORD wCapFileSize; //捕捉文件的大小IVideoWindow *pVW; //视频显示的指针,利用该指针将视频显示在界面上double FrameRate; //用户设定的帧速率,即每秒帧数int iNumVCapDevices; //现有视频捕捉设备数量BOOL fPreviewGraphBuilt; //是否已建立了预filter graph的布尔变量首先,需要在GraphEdit中添加视频捕捉器件,系统将捕捉器件的Filter添加到可视化界面中的方法是:h r=g c a p.p F g->A d d F i l t e r(g c a p.p V C a p,g c a p. wachFriendlyName);为了显示视频图像,需要一个视频预览的Filter,这样就添加了一个视频渲染器(Video Renderer)的Filter。
从图4中可以看出,每个Filter的框架上都内嵌了小矩形方块,这些小矩形方块就代表每个Filter的Pin,位于左边的是输入Pin,位于右边的是输出Pin。
若要让整个Filter链路运行起来,首先要把上游Filter的输出Pin与下游Filter的输入Pin连接起来,在连接的过程中,需要协商能够共同使用的多媒体格式,若没有相同的多媒体格式可用,连接将会出错[10]。
DirectShow在视频捕获中的应用
#T 6 7 / # $ ’ / 5 < , % 8 % / 9‘ 5 , 7 < 9 0 1 % Y5 8. , < 1 5 9 7 < 9 + , 7/ % ,8 9 , 7 . M 5 7 2 5 .% -b 5 2 % Y 8Z & . 9 / % , M’ c 9 3M M . K 7 8 9 1 7 9 . 8 K% / < , 7 . 9 5 9 , 7 . M 5 7 2 5 . . & 5 < . 9 5 % 8M % , 7 7 / / 5 < 5 7 9 X 5 8 % & . 9 5 & 5 < . 9 5 % 8 / , % M 38 3M Z Z : 3. Z Z $ $ . , 2 Y . , 72 5 / / 7 , 7 < 7 8. 28 < 1 , % 5 e . 9 5 % ’ c 9 5 8 5 9 , % 2 + < 7 25 9 1 7 < % M & 7 V 5 9 5 7 8% /2 . 9 .9 , . 8 % , 9 8 1 : Z Z . 8Y 7 & & . 88 % M 7% 9 1 7 , 9 1 5 8 . , 9 5 < & 71 % Y9 %< . 9 + , 76 5 2 7 %2 . 9 . / , % M.4 0 O< . M 7 , .Y 5 9 1‘ 5 , 7 < 9 0 1 % Y$ Z $ $ 9 7 < 1 5 + 7 8 5 < & + 2 5 , 7 6 5 7 Y$ 6 5 2 7 % < % M , 7 8 8 5 % . 2Y , 5 9 5 5 2 7 %2 . 9 . 5 9 % / 5 & 7 ’ 0 % M 7 5 M % , 9 . 9 [ 3Z Z 36 Z < % 2 7 / , . M 7 9 9 % 5 M & 7 M 7 9 9 1 7 8 7 9 . 8 K 8 5 -T 5 < , % 8 % / 9$ 5 8 + . &Djj’ ( 7 9 5 8 . & 8 %Z , % 6 5 2 7 2 ’ 3 Z #$ % 8 " ) # 4 7 5 2 7 %D . 9 + , 7 ‘ 5 , 7 < 9 0 1 % Y% D GT Z 1+ 9 7 , 7 9的 普 及 和 多 媒 体 技 术 的 发 展 $ !! 随着c 基于 c 如在线直播 & 视频 会 9 7 , 7 9的多媒体应用 $ 议& 远程教育 & 远程医疗 & 网络电话 & 网络监控等如 雨后春笋般涌出 ’ 在这些应用中 $ 视频捕获是一项 重要的基础工作 ’ 就软件实现来说 $ 目前要实现计