330 likes | 636 Views
ASIPP. 阶段性工作汇报. DirectShow 技术相关及应用. 报告主题:. 舒 双 宝. 报告人:. 罗家融 研究员. 导 师:. 中国科学院等离子体物理研究所. 2008 年 3 月 21 日. ASIPP. 内容简介:. 1 引言 2 DirectShow 简单介绍 3 DirectShow 相关应用 *利用 Graph Edit 实现音频文件的互相转化 *视频流的字符叠加 Filter 构建 *视频采集与图象抓取 4 总结与计划. ASIPP. 内容简介:.
E N D
ASIPP 阶段性工作汇报 DirectShow技术相关及应用 报告主题: 舒 双 宝 报告人: 罗家融 研究员 导 师: 中国科学院等离子体物理研究所 2008年3月21日
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
引言 ASIPP 上一报告回顾
引言 ASIPP 上一报告回顾
引言 ASIPP 问题与解答 • 本程序开发是VC环境,程序采用天敏公司SDK2000采集卡,使用厂商提供的和硬件相应的开发包来进行开发,但是这种方式所开发的程序和硬件相关,当替换硬件时要改动相应的程序,局限性很大。 • 问题是:我们怎样才能使这个程序更具有一般通用性呢,在个人电脑有视频采集设备就可以应用此采集程序呢,因为开发人员事先并不知道系统采用什么样的采集设备,不能对设备有依赖性. • 答案是采用DirectShow 技术。
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加 Filter构建 *视频采集与图象抓取 4总结与计划
DirectShow简单介绍 ASIPP DirectShow概述 • DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、MPEG、AVI、DV、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。 • 要想在VC + +使用Directshow 中实现视频捕获,首先必须安装Microsoft Direct SDK ,并根据安装的SDK目录配置正确的VC 开发环境。
DirectShow简单介绍 ASIPP 三个基本概念 • (1)过滤器(Filter ) DirectShow基本的构建模块是一个叫做过建器(Filter)的软件组件。DirectShow 将多媒体数据的处理分为若干步骤,每一步由一个过滤器来完成,对多媒体流执行一个简单的操作,并接收输人和产生输出。按照功能来分,Filter 大致分为三类:Source Filters、Transform filters和Rendering Filters. Source Filters 主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等;Transform filters主要负责数据的格式转换、传输;Rendering Filters主要负责数据的最终去向,我们可以将数据送给声卡、显卡进行多媒体演示,也可以输出到文件进行存储。 • (2)过滤器图(Filter Graph) 在应用程序中,为了执行一个给定的任务,需要将若干个过滤器连接起来,一个过滤器的输出成为另一个过滤器的输入,这样连接在一起的一组过滤器称为过滤器图(Filter Graph)。过滤器图也掌握着每一步该使用哪一个过滤器及这些过滤器之间是如何连接。这样,多媒体数据流就在过滤器图上,从源过滤器经由中间过滤器移动到目的过滤器,从而实现了特定的任务。 • (3)过滤器图管理器(Filter Graph Manager) 过滤器经过过滤器图的管理是由一个更高一级组件来完成的,即过滤器图管理器(Filter Graph Manager),它了解所有可利用的过滤器,并能根据媒体文件的类型自动选择所需要的过滤器,通过过滤器图来控制数据流。过滤器管理器也传送事件通知到应用程序,这样应用程序能对事件进行响应。另外,过滤器图管理器还简化了构建过滤器图的过程。
DirectShow简单介绍 ASIPP DirectShow系统框图
DirectShow简单介绍 ASIPP DirectShow主要COM接口 DirectShow是建立在组件对象模型(COM)基础之上的,所有的功能都是通过COM接口来执行和实现的。 下面列举一些重要的COM接口: • IGraphBuilder接口:构建过滤器管理的接口,建立和管理一系列的过滤器; • IMediaControl接口:控制多媒体流在过滤器图中的流动,如流的启动和停止; • IMediaEvent接口:捕获多媒体流回放中的事件; • IVideoWindow接口:控制视频窗口的属性; • IMediaSeeking接口:用于媒体流的定位; • IBaseSeeking接口:可定义一个具体的过滤器指针; • IPin接口:管理两个过滤器间的针脚,从而连接过滤器。
DirectShow简单介绍 ASIPP Graph Edit 工具 • Graph Edit其实它是一个可视化的DirectShow Filter Graph Builder,也就是可以可视化地将DirectShow滤镜连接在一起运行的软件。Graph Editor其实是基于DirectX中的DirectShow的。自从DirectShow成为DirectX中的一个标准组成部分之后,微软便将Windows中一切与多媒体处理相关的东西都使用DirectShow技术来实现。按照通用性的原则,每一个处理过程都会被设计为一个独立的插件,添加到系统中,在处理媒体的时候再按需要进行调用。Graph Edit实现的便是将原本大家见不到的插件连接调用以可视化的形式显示出来。换句话说,其实就是将我们本来要写程序才能实现的操作用菜单,鼠标等等的操作来实现了。 • 它有标准的Windows用户界面
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
媒体文件的相互转化 ASIPP WMA文件的播放
媒体文件的相互转化 ASIPP WMA转化为WAV文件
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
字符叠加Filter的构建 ASIPP 视频流的字符叠加Filter • 很多实现特定功能的Filter都是需要自己来创建的,创建Filter 的过程包括:Filter 的注册、媒体类型、连接、数据传送(推模式和拉模式)、状态转换(暂停,运行,停止)、媒体定位的实现等。 • 在正式使用Filter前,都要对Filter进行注册. • 在此开发了一个”字符叠加Filter”。这个Filter的总体需求是:在视频流指定的一个时间段内叠加一段字符,要求能够做到实时叠加,我们所叠加的内容是视频播放的本地时间。这个Filter是Trans-In-Place Filter, 注册名为HQ Title Overlay Std.,
字符叠加Filter的构建 ASIPP Filter设计时主要注意以下几个方面: • 选择一种Filter模型:这个Filter同时有输入和输出(即在输入的视频帧上叠加完字符后再输出到下一级Filter),因此我们的Filter是一个Transform Filter。由于输入和输出的类型一致,而且输入和输出Sample的数据大小不会变化,所以我们可以采用”就地”处理的Transform Filter。 • 定义输入和输出:我们的Filter 需要一个输入Pin和一个输出Pin。并且输出Pin的媒体类型与输入Pin保持一致。 • 接口定义:接口方法应该包括设置字符的内容、设置字体的各种属性、选择字体、符号的叠加效果、设置叠加位置、设置字符存在的时间段等。 • 其他一些特殊需求:我们的Filter处理的Sample是一一对应的,而且不需要 另外使用线程,这是一个标准的Transform Filter。 • 我们开发好这个Filter后将其进行注册,然后就可以利用Graph Edit对其功能测试。
字符叠加Filter的构建 ASIPP 加入Filter播放视频Graph Edit图
字符叠加Filter的构建 ASIPP 播放效果图
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
视频采集与图像抓取 ASIPP 系统设计 • 本程序实现视频设备的自动获取,并选择视频设备进行视频预览和图片抓取。 • 因为在我的机器装有天敏公司SDK2000采集卡以及另外一个USB的摄像头,所以程序运行时即显示两个视频设备,供使用者选择使用。
视频采集与图像抓取 ASIPP 系统设计主要部分 利用DirectShow 编程之前,首先确保正确安装了摄像头(CCD )和视频捕获卡以及驱动,或者存在USB 接口的摄像头。 一经安装,DirectShow就能检测得到,在系统中用一个过滤器来表示,我们只要对该过滤器进行操作就相当与对此硬件进行操作. • 采集设备枚举 • 采集设备创建 • 视频预览 • 热插拔的支持 • BMP文件保存
视频采集与图像抓取 ASIPP 采集设备枚举 DirectShow对硬件的支持是通过特定包装的Filter来实现的,参与工作的基本单元是Filter。DirectShow使用特殊包装Filter对它们进行了包装——WDM驱动模型的采集设备使用WDM Video Capture Filter(实现文件为kswdmcap.ax)、VFW驱动模型的采集设备使用VFW Video Capture Filter(实现文件为qcap.dll)。只要采集设备正确安装,DirectShow就能把它包装成一个Filter,并且在一定的类型目录下注册。换句话说,应用程序只要枚举特定的类型目录,就能知道系统中安装有多少个、以及何种类型的采集设备。
视频采集与图像抓取 ASIPP 采集设备创建 采集设备必须以Filter的形式才能参与到DirectShow中,进而与其他Filter协同工作。采集设备Filter的创建实质上也是一个系统枚举过程,当用户选定了一个音频或视频采集设备后,可以得到这个设备的友好名字或显示名字,然后就可以以这个名字为参数去创建它。具体实现时,就是枚举特定目录下的所有设备,取出它们的名字与参数进行比较,如果匹配则将当前设备标志绑定为一个Filter的形式。
视频采集与图像抓取 ASIPP 视频预览 • 采集设备成功创建后要想进一步预览采集设备输出的视频图像,则必须为它创建一个完整的Filter Graph。采集设备的种类有很多,按照驱动模型可以分为WDM设备和VFW设备,而按照接口方式可以分为PCI设备、AGP设备、USB设备、1394设备等,不同的采集设备构建的Filter Graph也有所不同。如何使用一种统一的方法为不同的采集设备创建不同的Filter Graph,这也是应用程序对各种采集设备的兼容性问题。 • DirectShow提供了一个专门的Capture Graph Builder组件来辅助这种Filter Graph的构建,使用方法也很简单,只需要创建这个组件并获得ICaptureGraphBuilder2接口,然后调用接口方法SetFiltergraph将IGraphBulder(Filter Graph Manager上的接口)设置给它,接着,就可以调用ICaptureGraphBuilder2的其他接口方法继续Filter Graph的构建了。
视频采集与图像抓取 ASIPP 热插拔的支持 • 一些采用支持热插拔接口(如USB、1394等)的采集卡上,在工作的时候可能会突然脱离系统,然后可能又马上重新接入,或者也有可能在应用程序启动之后才接入一个新的设备,在这些情况下,我们应该对此作出响应。 • 当一个正在使用的采集卡脱离系统时,Filter Graph Manager会向应用程序发出一个EC_DEVICE_LOST事件;而当这个设备重新接入系统时,Filter Graph Manager会再次发出一个EC_DEVICE_LOST事件。这两次事件通过事件的第2个参数IParam2来区分:0表示设备脱离系统,1表示设备又重新接入系统,但是实际上,设备脱离后再重新接入,采集卡Filter先前的状态不会保持下来,因此我们必须重建Filter Graph。 • 另外一种情况是,当我们的应用程序正在运行时,有一个全新的设备接入系统,但DirectShow在这种情况下并不会发送EC_DEVICE_LOST事件,我们必须依赖窗口消息WM_DEVICECHANGE来做出正确的响应。
视频采集与图像抓取 ASIPP BMP文件保存 对每个采样的Sample数据,将其保存为BMP文件,关于BMP文件格式在上一报告中以详细叙述,本报告不在缀述。
视频采集与图像抓取 ASIPP 测试结果 USB摄像头视频预览 天敏SDK2000视频预览
视频采集与图像抓取 ASIPP 测试结果 保存的BMP文件
ASIPP 内容简介: 1 引言 2 DirectShow简单介绍 3 DirectShow相关应用 *利用Graph Edit实现音频文件的互相转化 *视频流的字符叠加Filter构建 *视频采集与图象抓取 4总结与计划
结束语 ASIPP 总结 首先对DirectShow作一简单介绍;接着举例说明其Windows开发工具Graph Edit 进行音频文件的转化;编写一个DirectShow Filter,实现视频播放时字符的叠加; 编写一程序实现多个采集设备的选择使用并抓取图片。 本报告给出了一种基于DirectShow 的视频捕获的VC ++实现,由于DirectShow 对视频捕获设备的封装,对不同的捕获设备提供相同的基本接口,使系统对硬件的通用性和适应性也大大增强。 下一步计划 *基于模糊逻辑的信号与图象去噪处理 *基于独立分量分析的人脸特征提取
ASIPP 谢 谢 !