用DirectShow实现视频捕捉

合集下载

基于DirectShow的DV视频实时采集系统的实现

基于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视频及图片捕获软件的开发

基于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++摄像头视频捕捉程序

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视频采集方案

DirectShow视频采集方案
2.3 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的多线程视频采集系统

基于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的无线音视频采集与传输系统的研究
通 信 技 术
勰字 术 f 技 数

基于 D r S o i c h w的无线音视频采集与传输系统 et 的研究
郑 晓 曦 刘 维
( 邑大学计算机 学院 广东江门 592) 五 200
摘 要 : 中 , 对 基 f3 G线 网络 的视 频 会议 系统 的应 用 , 用Dieth w 架构 , 计音 视频 数 据 的采 集 、 文 针 -G: 采 rcS o 设 编码 、 网络 传输 、 解码 及 回放 的解 决方 案 , 并根 据RT / CP i P RT D, K原理 , 实现 音视 频 的 同步 实时传 输 。 此基 础 上 实现 了无 线音 视频 采 集与 传输 系统 。 在
D rcS o iet h w是Mirsf 了能够简单 、 效地 进行流媒体处 coot 为 有 理 而 推 出 的一 个基 于Wid ws 台 的流 媒 体 处理 开发 包 。 no 平 它对 流 媒 体 的捕 捉 、 回放提供 了强 大的 支持 , 使用 它还 可 以在 基于w DM ( n o e i d1 Wid wsD vc Mo a) e 驱动的各种采集卡上进行数据捕 捉。 基 于它 的优 点我们采用D rcS o ieth w进行视 频采集。 Di cS o r th w主要 由过 滤器 图表 ( ie rp ) e F trG a h 构成 , l 过滤器 图 表 中包含 了各种F l r这些F trg ie , t l ie ̄够按 一定顺序连接在一起 , 构 成一 条流水线 , 最后交 由Fl rGrp n g r i e a h Ma a e统一控制 。 t 过滤器 根据 功能不同分 为三类_:1 l() I 源过滤器(o reFle) S uc i r, t 它 引入 数据到过滤器 图表 中, 数据 来源可 以是文件 、 网络、 照相机 等。 获取 的数据传输至 下一 级过滤器 。2变 换过滤器( a so m () Trn f r F le s, itr )主要 负责数据 的格 式转换 。3 渲染过滤器 ( n e i g () Re d rn Fl r, ie)渲染 过滤器在过滤器 图表里处 于最 后一级 , t 实 现 . D rcS o i th w采用wD e M驱动模型进行 视频捕捉 。 M是 纯3 WD 2 位模型 , 对于不同的设备具有统一 的结构 , 最重 要的是D rc h w i t o eS 与WDM的紧密结合 , 系统 核心提 供了基于WD 在 M的驱动程序 的 过 滤 器 和 接 口 ,大 大 提 高 了 视 频 捕 获 的速 度 和 质 量 。 由 DrcS o i t h w对视频捕获、 e 回放提供 了强大 的支持 , 大大增强 了系统 对不同硬件的通用性和适应性。 因此, i cS o 发环境中 , 在D r th w开 e 通

基于DirectShow的多摄像头视频采集

基于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的通用音视频采集方案

基于DirectShow的通用音视频采集方案

采集设备 的 Fl r ie 创建成 功后 ,需 要把它加入 到 Fl r rp t ie a h中去 tG 才能工作 , 为此还需要创建采集用 的 CpueFl r rp 。不 同的采集 a tr ie ah t G 卡需要创建不 同的 C pue ie rp 。 atr lr ah 典型 的采集设备有一个 Peiw Ft G rv e 的输出 Pn和一个 C pue 出 Pn i atr 输 i,前者主要用于视频 图像 的预览 , 后 者主要用于视频数据 的采集. 这种设 备多数 P I U B接 口接入计 算 C 或(S ) 机 。构 建 的 Fl r rp 图 1 示 : ie Ga h如 t 所
f n o s 驱动模 型 的采集设备 的 采集 。Dr t o o Wi w ) r d i c hw系统使 用一种 eS Flr rp ie ah的模型来管理整个数据流的处理过程 ,参与数据处理 的各 tG 个功能模块 叫做 Flr ie,各个 Fl r Fh r rp t ie 在 ie Ga h中按一定的顺序连接 t 形成一条具有特定功能的链 路。 ie 分为 3 ,o reFl r 主要负责 Fl r t 类 S uc ies t 数据 的输入 , 据源可以是文件 , tme 计算机里 的采集卡 , 数 Ie t n 数字摄像 机等 。Tas r Fl r 主要 负责数据格式的转换 , rnf m ie o ts 例如数据流的分离合 成, 解码编码等。R n e n i r主要负责将数据送给声卡 , ed r g F t s i l e 显卡进 行 多媒体 的演示 , 或者输出到文件进行存储 。上述 Fl r连接在一起 , ies t 交
科技信息
计 算机 与 网络
基 于 D rcS o 硇 通 用 音 顽频 采 集方 案 i th w e

directshow采集多媒体音视频同步

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技术捕获视频流中帧图像

浅谈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 的 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的视频捕捉技术研究

基于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视频实时采集系统的实现

基于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的多线程视频采集系统
2多线程视囊采集系统程序实现
2.1熏坑倚介 系统实现如图3所示。
■3基于DlreetShow盼多矗租税■采集
本系统目标是用于辅助机器人双目视觉系统的开发,必 须选用相同型号的2个摄像头,对于不同型号的摄像头其方 法相同。这2个摄像头具有相同的友好名字,因此本系统根 据摄像头的现实名字构建源过滤器,同时获得对应的友好名 字,并在友好名字末尾添加“(o)”、“(I)”,显示给用户进行 机器人“左右服”的设定。
过滤器可以大致分为3类:源过滤器,负责获取数据; 转换过滤器,负责数据的格式转换,然后将数据继续往F传; 输出滤波器,负责数据的最终去向,多媒体输出或输出到文 件存储。
视频采集设备根据采用的驱动类型不同可以分为2种: VFW(Video for Windows)和WDM(Windows Driver Model), WDM是VFW的替代模型。WDM可以通过COM接口 IAMCrossbar、IAMStreamConfig和1AMVideoProcAmp编程 实现输入端子选择,显示质量控制,而VFW只能将驱动程 序定制的设置对话框直接显示给用户选择,不适合做实时连 续的视频采集。DirectShow支持WDM驱动模式。
设置过滤器图管理器对象指针:
mBuilder·>SetFiltergraph(mGraph);
然后就可以创建预览和采集过滤器图: mBuilder一>RenderStream(&PIN CATEGORY—PREVIEW&MEDI
ATYPE—.Video,mFilterO.NULL,NULL); mBuilder一>SetOutputFileName(&MEDIASUB'rYPE_Avi.L”D:、、3
采集设备有友好名字和显示名字2个基本属性,友好名 字形式如“USB PC CAM-168”,用于显示给用户识别设备, 同种型号的友好名字是一样的;显示名字为字符串,用户很 难理解,但显示名字唯一地标识了每一个设备。 1.2 DlreetShow一量开发过程

directshow的中文资料之设备列举和捕捉接口

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的多路视频采集系统

基于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在视频捕获中的应用

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的多媒体应用 $ 议& 远程教育 & 远程医疗 & 网络电话 & 网络监控等如 雨后春笋般涌出 ’ 在这些应用中 $ 视频捕获是一项 重要的基础工作 ’ 就软件实现来说 $ 目前要实现计

浅谈DirectShow技术捕获视频流中帧图像

浅谈DirectShow技术捕获视频流中帧图像

浅谈DirectShow技术捕获视频流中帧图像
肖长健
【期刊名称】《计算机时代》
【年(卷),期】2009(000)011
【摘要】利用微软公司提供DirectShow接口技术,实现了多媒体文件或视频流中视频帧图像的捕获,并提取出有用的图像帧信息.
【总页数】3页(P66-68)
【作者】肖长健
【作者单位】江苏联合职业技术学院盐城生物工程分院,江苏,盐城,224731
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于DirectShow的视频图像处理技术在远程实验系统中的应用 [J], 奚克凡;邵奇可;俞立
2.基于DirectShow图像处理技术在枪管内壁检测系统中的应用 [J], 张稳;王晨升;杨光;陈亮
3.利用DirectShow技术从视频流中捕获帧图像 [J], 高升;刘红军
4.利用DirectShow技术实时捕捉视频流中的图像帧 [J], 胡涛;刘睿;张志刚
5.DirectShow技术在Windows CE系统中的图像采集实现 [J], 王辉;陈浩明;王小英
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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);
4 视频捕捉的具体实现
2 存储文件
IBaseFilter
*pRender;
IFileSinkFilter *pSink;
pRender为multiplexer filter,pSink为file writer filter.
调用下面这个函数之后就会返回两个指针分别指向IBaseFilter和IFileSinkFilter接口,并将两个 Filter(multiplexer filter,pSink为file writer filter)加入到Filter Graph中去。
4 视频捕捉的具体实现
1 初始化COM库 HRESULT hr =CoInitialize(NULL)
2 Create the Filter Graph Manager ICaptureGraphBuilder *pBuilder = NULL; HRESULT hr = CoCreateInstance(CLSID_CaptureGr
pM->BindToObject(0,0,IID_IBaseFilter, (void**)&pBf); pM.Release(); } else { return false; }
4 视频捕捉的具体实现
//将设备添加到graph hr = m_pGraph->AddFilter(pBf, L"Video Capture"); 接下来分别是视频和存储文件这两个分支 1 视频: hr=m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,pBf,NULL,NULL); 这5个参数的意义分别为(从第一个开始): 1:指出Capture Filter中pin的属性,如果是Preview那么就是
IVideoWindow *m_pVW; hr = pBuilder->FindInterface(&PIN_CATEGORY_PREVIEW, &pBf, IID_IVideoWindow, (void **)& m_pVW);
4 视频捕捉的具体实现
//设定视频窗口 //设定视频窗口为主窗口的一个子窗口 hr=m_pVW->put_Owner((OAHWND)hWnd); //设定窗口样式 m_pVW->put_WindowStyle(WS_CHILD |
4 视频捕捉的具体实现
接着在调用BindToObject()以后,可以将设备标识生成一个 DirectShow Filter,将其加到Filter Graph中就可以参与工作 了。 CComPtr pM=NULL;
ULONG cFetched; CComPtr pBf=NULL; if(pEm->Next(1,&pMቤተ መጻሕፍቲ ባይዱ&cFetched)==S_OK) {
hr = pBuilder->SetOutputFileName(&guid,
wach, &pRender, &pSink);
注意:其中guid为两种形式:
MEDIASUBTYPE_Avi和MEDIASUBTYPE_Asf
如果是前者,pRender为AVI Mux Filter,如果是后者,pRender为WM ASF Writer
PIN_CATEGORY_PREVIEW 2:指出Media的类型,对于video参数用MEDIATYPE_Video。 3:是一个指向capture filter's IBaseFilter 接口的指针。 4,5:他们可以为空,通常是用来传输数据。如果第5个为空,则表示将采用
Video Renderer作为默认的renderer。
aphBuilder, NULL, CLSCTX_INPROC, IID_ICaptur eGraphBuilder, (void **)&pBuilder);
4 视频捕捉的具体实现
3 获得当前的Filter Graph IGraphBuilder *pFg; hr = pBuilder->GetFiltergraph(&pFg);
4 视频捕捉的具体实现
下面就主要设置Video Renderer Filter用来播放video.Filter Interfaces: IVideoWindow.获得访问Video Preview Window的接口指针 video preview window是一个独立的窗口。如果你想改变默认的行为,先 调用 ICaptureGraphBuilder::FindInterface获得IVideoWindow 接口。第二 个参数通过pBf指定,描述video capture filter,第三个参数是想得到的接 口(IVideoWindow),最后的是返回的接口。当你得到IVideoWindow接口 后,你可以调用IVideoWindow的方法象 put_Owner, put_WindowStyle, or SetWindowPosition 去获得 video preview window的handle,设置窗口属性,或把他放到想要的位置。
用DirectShow实现视频捕捉
内容
1 DirectShow的介绍 2 Filter概述以及连接 3 视频捕捉的整体框架与思路 4 视频捕捉的具体实现 5 关于MJPEG 6 其他
1 DirectShow的介绍
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理 的开发包,与DirectX开发包一起发布。 那么,DirectShow能够做些什么呢?且看,DirectShow为多媒体流的 捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便 地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期 处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、 Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而 易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、 DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以 及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是 一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。
4连接设备 还要创建系统枚举器组件对象 CComPtr pCde=NULL CComPtr pEm =NULL hr=CoCreateInstance (CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, IID_ICreateDevEnum, (void **) &pCde); 然后使用接口方法CreateClassEnumerator ()为指定的Filter注册类型目录创建一 个枚举器,并获得IenumMoniker接口 pCde->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEm, 0);
1 DirectShow的介绍
1、 DirectShow的体系结构如图1所示。
1 DirectShow的介绍
DirectShow位于应用层中。它使用一种叫Filter Graph的模 型来管理整个数据流的处理过程;参与数据处理的各个功 能模块叫Filter;各个Filter 在Filter Graph中按一定的顺序 连接成一条“流水线”协同工作。按照功能来分,Filter大 致分为三类:Source Filters、Transform Filters和 Rendering Filters。Source Filters主要负责取得数据,数 据源可以是文件、因特网、或者计算机里的采集卡、数字 摄像机等,然后将数据往下传输;Transform Fitlers主要 负责数据的格式转换、传输;Rendering Filtes主要负责数 据的最终去向,我们可以将数据送给声卡、显卡进行多媒 体的演示,也可以输出到文件进行存储。
相关文档
最新文档