DirectShow视频采集系统

来源 :商场现代化 | 被引量 : 0次 | 上传用户:aacpc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 目前,多媒体技术飞速发展,各行业对多媒体技术的应用也越来越广泛,传统的视频采集技术存在着一定的局限性,不能很好的应用于当前的视频系统。本文提出了一种基于DirectShow的视频采集系统,克服现状。本文采用的一种基于DirectShow的视频采集系统支持多种格式的视频文件的捕捉和回放,也支持使用Windows驱动模型(WDM)设备或过去的VFW设备。在开发过程中是基于组件对象模型(COM),通过编写COM客户程序来实现视频的采集回放等功能。在具体实现过程中通过编写Filter来实现各功能模块,最后把各功能模块通过Filter Graph组建起来。
  [关键词] DirectShow 视频采集 COM
  
  一、引言
  
  随着多媒体技术的不断发展,与之相关的软件与硬件层出不穷,现在与多媒体视频会议(Video Conference)、视频对话相关的软硬件正成为人们关注的热点应用。而在这些应用中无不涉及视频数据的采集。
  传统的视频采集技术存在诸多的局限性,无法很好地应用于当前的各类视频系统。针对这一现状,本文提出了一种先进的基于DirectShow的视频采集系统。该系统充分利用DirectShow与WDM视频采集卡的良好集成特性,采用组件对象模型的系统架构,克服了传统视频采集技术的不足,在实际应用中取得了满意的效果。
  
  二、DirectShow技术
  
  微软DirectShow是微软windows平台上的流式媒体体系结构。DirectShow提供媒体流的高质量的捕捉与回放。它支持多种格式,包括高级流格式,活动图片专家组格式,音频-视频交叉格式,第三层mpeg格式(mp3)和wav文件格式。他也支持使用windows驱动模型设备或老的windows视频设备的捕捉。DirectShow与其他DirectX技术集成于一体,自动感觉和使用视频和音频硬件加速,同时也支持没有硬件加速的系统。
  DirectShow简化了媒体回放,格式转换和捕捉任务。它是基于控件对象模型(com)的。要写DirectShow应用,就必须理解com客户编程。就绝大多数应用而言,不必实现com对象。DirectShow提供了你需要的控件。(如果要通过写自己的控件来扩展DirectShow的功能,必须把他们作为com对象来实现。)
  1.COM技术
  在DirectShow技术当中,一般也把COM组件叫做Filter,它一般分成三类:源过滤器(Source filter)、转换过滤器(Transform filter)、提交过滤器(Rendering filter),用来处理流媒体数据。Filter带有输入、输出针角(pin),或二者兼而有之。Filter通过向文件读写、修改数据和显示数据到输出设备上来操作流媒体。为了完成整个任务,必须要将所有的Filter连接起来,这三种Filter组成了过滤器图表管理器(Filter graph manager)。
  源过滤器、转换过滤器、提交过滤器分别完成数据提供、数据格式转换(压缩编码等)和数据渲染和回放功能。所以,为了实现在WIN32系统下的视频采集,我们首先要构造出一个适当的过滤器图表,然后通过应用程序对过滤器图表的管理来完成视频采集的功能。
  2.DirectShow技术
  在一般的软件开发工具中(比如VB,VC)都可以直接调用windows系统下的MCI控制接口)函数或者媒体播放控件(WMP等),设定相关的文件名等属性就可以实现视频的捕捉或回放。随着多媒体技术的迅速发展,各种压缩算法在该领域的应用,MCI技术越来越显的力不从心,最明显的是它不支持可变比特率的压缩算法,对于处理DVD等近年出现的多种新的媒体格式已显得无能为力。随后,微软又适时推出了建立在DirectX之上的DirectShow技术,它也是一种API(应用程序接口),每个DirectX部件都是用户可调用的API的总和,通过它应用程序可以直接访问计算机的硬件。支持来自本地或网络的各种视频、音频压缩格式的媒体文件的解码和回放,可以从设备上捕捉多媒体流,也可以处理各种压缩算法处理的流媒体。这些格式包括:MPEG的音频和视频标准、音频和视频交互标准(AVI)、WAVE、MIDI和高级流格式ASF。
  DirectShow的基本原理是多媒体数据在过滤器图表中流动,通过过滤器图表中各过滤器(Filter)实现在功能,最终实现多媒体数据在提交过滤器中的显示和回放。
  (1)国内研究状况。目前,国内研究此类项目已经相对成熟,主要用C++编程工具对其进行开发。一般用Filter来完成各种功能。Filter是一种进程内的COM组件。DirectShow SDK提供了一套基类源代码,这些源代码可以大大降低开发Filter的难度。
  DirectShow位于应用层中,它使用Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块是Filter;各个Filter 在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。源过滤器主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等,然后将数据往下传输;转换过滤器主要负责数据的格式转换、传输;提交过滤器主要负责数据的最终去向,最终可以将数据送给声卡、显卡进行多媒体的演示,也可以输出到文件进行存储。
  (2)国外研究状况。与国内相同,许多国外的软件设计师也是利用Filter来实现各种功能。DirectShow最初是为C++应用程序设计的(也可以使用C语言)使用微软的Visual Basic语言,可以访问DirectShow API的一个很大的子集,但对VB的支持并不完全,如使用微软的JScript,DirectShow也支持基于script的DVD应用程序。使用Borland Delphi书写DirectShow应用程序也是可能的,但是,微软的软件开发包(SDK)文档没有关于该部分的参考资料。
  
  三、基于DirectShow的视频采集系统
  
  基于DirectShow的视频采集系统主要设计目的是简化建立基于Windows平台的数字媒体应用程序的设计任务。并使它无需涉及数据传输,硬件通用性,媒体同步等等诸多复杂问题。为了完成所需的音视频流的处理,DirectShow应用了DirectDraw和DirectSound技术。这些技术可以有效率将数据图像和音频还原(render)到用户的显卡和声卡上去。DirectShow通过压缩媒体流上的时间标记(time-stamped)来实现媒体同步重放。为了能够处理不同可能出现的数据源、数据格式以及硬件系统,DirectShow采用了一种标准化结构体系。
  在DirectShow标准结构体系中,DirectShow过滤器与控制、多样化的设备、本地文件系統、TV调频和视频捕获卡、VFW编码器、视频显示卡(通过DirectDraw)和显卡进行交互。DirectShow也为几种文件格式提供本地压缩和解压过滤器。
  1.系统构架
  对本视频采集系统,可以简单的把系统流程概括成如下两点:USB摄像头:视频捕获→视频处理转换→视频存储;本地视频:视频文件打开显示→视频压缩转换等处理→视频存储
  2.系统实现
  开发DirectShow应用程序,一般有三个阶段:第一阶段,创建一个Filter Graph Manager组件;第二阶段,根据实际的应用,创建一条完整的Filter链路。比如播放一个本地文件(在这个阶段,构建Filter链路之前,为了证明构思中的Filter链路是切实可行的,首先要在GraphEdit中验证,然后再以GraphEdit中的Filter链路为模型在程序中实现);第三阶段,调用Filter Graph Manager上(或者直接在某个Filter上)的各个接口方法进行控制,并且完成Filter Graph Manager与应用程序的事件交互。
  (1)具体应用设计。前面讲到了源过滤器、转换过濾器、提交过滤器的简单功能,它们分别完成数据提供、数据格式转换(压缩编码等)和数据渲染和回放功能。所以,为了实现在WIN32系统下的视频采集,我们首先要构造出一个适当的过滤器图表,然后通过应用程序对过滤器图表的管理来完成视频采集的功能。
  这里我们一般需要2个~3个过滤器,这几个过滤器分别是:
  a.Video Capture Filter 采集设备Filter
  b.Smart Tee Filter 将没有Preview引脚Filter的Capture引脚分为两支数据流(可选)
  c.Video Venderer 视频渲染及回放Filter
  通过上面3个过滤器,我们可以构造出一个完整的视频采集过滤器图表(如图)
  图表构造出来后,接下来就剩下具体的实现了,我们只需依次构造每个Filter,然后将各信Filter的Pin按序相连即可完成图表的构造。最后,我们通过应用程序向图表发送命令(通过图表管理器完成)来控制整个视频采集流程。
  (2)视频捕捉。如何从视频设备进行视频捕捉?在所设计的系统中,有个功能就是从USB摄像头中捕获视频,换句话说就是从视频设备中进行视频捕捉。基于DirectShow的视频采集系统中就要充分利用DirectShow本身的功能进行设计。
  在DirectShow的filter中,有一类Capture Filter,它一般代表的是捕捉卡等硬件设备,其实它就是DirectShow与设备的Driver之间的接口。因为Filter通过DeviceIoctl函数实现交互,使得应用程序员可以通过DirectShow的Filter直接与捕捉设备的Driver进行通信。
  我们只需将Capture Filter加入Filter Graph中,在通过其提供的接口函数就可以捕捉我们需要的视频或音频数据。
  另外,如何在媒体播放过程中捕捉视频?Sample Grabber Filter是Transform filter的一种,它提供了一些接口能够检索(retrieve)在Filter Graph中传递的数据样本(samples),从而实现对播放过程中数据流的控制。比如通过IsampleGrabber::GetCurrentBuffer就可以得到当前的图像帧,进而将其保存为文件或者显示在指定的地方。在陆其明老师编写的《DirectShow开发指南》一书中,也有详细介绍图片的抓取,有种简单的方法就是使用IBasicVideo::GetCurrentImage接口的方法。
  3.实验结果及分析
  本系统采用COM编程技术,利用VC++编程语言,实现了视频采集储存等功能,在实际运用中简单方便。它能进行视频的采集存储等一些功能,同时也支持AVI,MPEG等格式的视频的播放,大致分成几个功能块:
  (1)本地视频播放:可以选择本地AVI和MPEG格式的视频进行播放,并对其某一桢画面进行捕获与存储。
  (2)USB摄像头捕获视频:通过USB摄像头,进行视频的采集,并可以自定义对所捕获到的视频进行保存。
  (3)图像存储:可以对所捕获或播放的视频中的某一桢画面进行存储。
  (4)渲染功能:通过Filter对视频进行色调的处理渲染。
  当然,本系统还存在一定的问题,需要进一步的改进,在今后会做更深的研究,弥补现在的不足之处。
  
  四、结束语
  
  多媒体技术已经越来越被人们所重视,在传统的视频采集技术存在的局限性也越来越明显,无法很好地应用于当前的各类视频系统,因此先进的视频系统必定会取而代之。
  本文所提出的一种基于DirectShow的视频采集系统,充分利用DirectShow与WDM视频采集卡的良好集成特性,采用组件对象模型的系统架构,克服了传统视频采集技术的不足,在以后的应用当中必将取得重要地位。
  
  参考文献:
  [1]陈淑珍陈窖:基于COM技术的多媒体监控系统的设计与实现[J].武汉大学学报,2001.47(3):377~380
  [2]陆其明:DirectShow实务精选[M].北京科海电子出版社,2004.7
  [3]陆其明:DirectShow开发指南[M].清华大学出版社,2003
  [4]魏立诚朱桂林:基于DirectShow的视频采集系统的设计与实现[J].计算机工程,2005.7
  [5]文坤高胜法:DirectShow程序设计原理及应用[J].计算机系统应用,2006.3
  [6]武兆雪夏靖波:基于DirectShow的多媒体流捕获[J].2006
  
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
[摘要] 将HU理论应用于企业经营管理实践中,有助于企业利润基数的确定更加优化合理。  [关键词] HU理论 利润考核 联合基数确定法 应用    杭州多元贸易有限公司营销部下辖三个业务科,每年根据利润额考核各业务科业绩。现行考核方法是:首先确定公司利润额总目标,其次根据各业务科占用公司资源多寡及其划分的市场区域现状,将总利润分解至各业务科,确定各科的利润基数(分解过程形式上属于硬性分摊,没有正式
期刊
[摘要] 本文采用SWOT分析的方法对奇瑞选择伊朗这样消费能力有限的市场,作为产业资本输出海外市场的战略进行分析。从其优势、劣势、机会和威胁四个方面综合评论这一战略的可行性。  [关键词] 奇瑞 伊朗 SWOT    一、绪论    2004年6月,伊朗汽车消费者协会主席马苏德?德黑兰奇宣布,一款由中国和伊朗合作生产,面向低收入阶层的轿车获得生产许可。这次上汽集团奇瑞汽车有限公司与伊朗SKT公司的
期刊
[摘要] 对第三方物流企业的评价体系的建立对合理评估企业结构,核心竞争力和生存能力有着重要的意义。本文从评价指标的选择和评价算法以及实际操作过程中评价系统与3pl企业子网实现跨网络数据交换的两个方面着手,讨论了一种基于Web Service技术的3pl评价体系。  [关键词] 第三方物流 评价 Web Service    一、概述    第三方物流是在业务外包的环境下产生的。在经济全球化的背景下
期刊
[摘要] VI战略作为企业形象的建立,主要体现在视觉上,谈到VI就必须谈到设计和意识。商场的VI设计,不光是指单纯的美术设计,而是广泛意义上的设计。设计是重要的,那么意识就更重要,具有超前意识的人在设计的时候自然会想的更多,看得更远。设计出来的作品当然能贴切主题,取得成功。  [关键词] VI 设计与意识 视觉传达 灵感    商场作为一个营销场所,提供给各类厂家、经销商一个经营环境,所面临的不单
期刊
[摘要] 品牌竞争是未来旅游业竞争的必然趋势。本文在分析重庆旅游品牌化发展现状与问题的基础上,在主题、名称、标志、商标化等方面对重庆旅游品牌形象进行了创新设计,提出了塑造并发展重庆旅游品牌的策略和途径。  [关键词] 重庆市 旅游品牌 创新设计    在日趋激烈的旅游市场竞争中,品牌竞争已成必然趋势。要在激烈市场竞争中立于不败,重庆旅游必须以品牌化发展来增强其核心竞争力,提升旅游地整体形象。  一
期刊
[摘要] 随着移动商务的迅速发展,移动用户面临的带宽限制和信息贫乏问题也日益凸显。Web使用挖掘通过对用户访问Web时在服务器留下的访问记录进行挖掘,在海量Web日志数据中自动、快速地发现用户访问序列模式。通过模式分析向移动用户推荐其感兴趣的内容。论文在比较几种常用序列模式挖掘算法的基础上,着重对PrefixSpan算法进行了研究和优化。  [关键词] 移动商务 Web使用挖掘 PrefixSpa
期刊
[摘要] 作為金手铐的MBO在国外能发光,为什么在中国却遇寒流,本文从中西方MBO的要素分析,挖掘中国MBO失利的深层原因。  [关键词] MBO 中国版MBO MBO要素    一、MBO在中国回顾  MBO诞生于西方,译为“管理层收购”,是目标公司的管理层利用借贷资本购买公司股份或分支机构,进而改变公司的所有权结构、控制权结构和资本结构的收购活动。在我国,20世纪90年代以前,MBO还是一个只
期刊
近一段时间以来,人们一直在寻找EDI的替代方案,希望能够找到一种使全球不同规模的公司都能受益的简单、便宜的交换标准商务文档的方法。在这样的背景下,ebXML电子商务标准倡议组织在奥兰多再次聚会。该倡议是由联合国贸易简化和电子商务团体以及结构化信息标准促进机构共同发起的,其目的是制定一个全球化的电子商务标准,为中、小规模的企业和发展中国家进入电子商务市场扫除障碍。  一、什么是ebXML  ebXM
期刊
[摘要] 随着计算机技术和网络技术的迅猛发展,电子商务己经成为当今社会经济发展的主流。它改变了传统商务的活动模式;缩短了供应链上供应商与最终消费者之间的距离,降低了交易成本,提高了经营效率。然而随着电子商务应用范围的扩大和应用领域的深入,传统的电子商务技术(如 B/S 技术)及其支撑环境面临着巨大的挑战,客户和商家之间的频繁交互使得网络带宽严重浪费、系统负荷增加,造成了系统效率的降低以及网络资源的
期刊
[摘要] SWOT定性分析方法目前被广泛应用于企业的战略研究,但是其分析结果过于概念化,主观性强,难以准确把握。本文在定性分析的基础上,构造了一个用于企业战略定位的SWOT模型,并结合X航空货运代理公司的实际情况,运用SWOT分析模型判断其战略地位,并提出相应的发展战略。  [关键词] SWOT 航空货运代理 战略管理 模糊综合评判    一、引言  企业战略是对企业长远发展的全局性谋划,企业的管
期刊