VS2010 C++学习(5):基于DirectShow视频预览录像程序

合集下载

MFC+DirectShow摄像头简单视频浏览

MFC+DirectShow摄像头简单视频浏览

MFC+DirectShow摄像头简单视频浏览1 安装摄像头驱动2 引用DirectShow库,包含DirectShow头文件#pragma comment(lib,"Strmiids.lib")#pragma comment(lib,"quartz.lib")#include "dshow.h"3 初始化com环境::CoInitialize(NULL);4 定义一个过滤器引脚查询函数,并实现之定义IPin *findpin(IBaseFilter *pFilter,PIN_DIRECTION dir);实现,假定工程为MFC Dialog Based类型,主对话框类为VDlg IPin *VDlg::findpin(IBaseFilter *pFilter,PIN_DIRECTION dir) {IEnumPins *pEnumPins=NULL;IPin *pRetPin=NULL;PIN_DIRECTION pDir;pFilter->EnumPins(&pEnumPins);while(pEnumPins->Next(1,&pRetPin,NULL)==S_OK){pRectPin->QueryDirection(&pDir);if(pDir==dir){return pRetPin;}}return 0;}5 预览实现void VDlg::vPreview(){ICaptureGraphBuilder *pBuilder=NULL;::CoCreateInstance(CLSID_CaptureGraphBuilder2,NULL,CLSCTX_INPROC_SERV ER,IID_ICaptureGraphBuilder2,(void **)&pBuilder);::CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IG raphBuilder,(void **)&pGraph);pBuilder->SetFiltergraph(pGraph);ICreateDevEnum *pDevEnum=NULL;IEnumMoniker *pClsEnum=NULL;::CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC,IID_ICre ateDevEnum,(void **)&pDevEnum);pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pClsE num,0);if(pClsEnum->Next(1,&pMoniker,NULL)==S_OK){pMoniker->BindToObject(0,0,IID_IBaseFilter,(void **)&pSrc);pMoniker->Release();}pClsEnum->Release();pGraph->AddFilter(pSrc,L"AVI");::CoCreateInstance(CLSID_VideoRenderer,NULL,CLSCTX_ALL,IID_IBaseFi lter,(void **)&pPreview);if(pPreview){pGraph->AddFilter(pPreview,L"PREVIEW");IPin *pPinOut,*pPinIn;pPinOut=findpin(pSrc,PINDIR_OUTPUT);pPinIn=findpin(pPreview,PINDIR_INPUT);pGraph->ConnectDirect(pPinOut,pPinIn,0);IVideoWindow *pWnd=NULL;pPreview->QueryInterface(IID_IVideowindow,(void **)&pWnd);if(pWnd){long ws;pWnd->put_Owner((long)m_hWnd);pWnd->get_WindowStyle(&ws);ws=ws &~ WS_CAPTION;ws=ws &~WS_DLGFRAME;ws=ws & WS_CHILD;pWnd->put_WindowStyle(ws);CRect rc;this->GetClientRect(rc);pWnd->put_Lef(5);pWnd->put_Top(5);pWnd->put_Width(rc.Width()-5); pWnd->put_Height(rc.Height()-5); }pMediaCtrl->Run();}}。

基于DirectShow的客户端实时视频流回放技术

基于DirectShow的客户端实时视频流回放技术

d, t ) e r lr  ̄ fe 等。过滤器通过向文件读写、 ei 修改数据和显示数据到输 出设备上来操作流媒体。为了完成整个 任务 。 必须要将所有的过滤器 F t 连接起来 , 3 ir l e 这 种过滤器组成了过滤器图表结构 , 如图 I 所示。
Die th w r cS o
术, 避开了复杂的视频流解压算法 , 具有较好的通用性和可移植性。
1 Drc hw 简 介 i t o eS
M ic hw的设计 目 SD eSo rt 标是: 隔离数据传输 、 硬件兼容、 流同步等底层处理, 使客户能够轻轻松松地创建 W n w 应用平台上的多媒体应用程序[。它对媒体数据的处理采用流媒体( uie a t ) i os d ¨ M l d 咖 的方式, t is m 在应用 中大大的减少了编程的复杂程度, 同时又可以自 动协商从数据源到应用的转换 , 口 流接 提供了统一的、 可以预测 的数据存取的控制方法, 这样应用程序在播放媒体数据时不需要考虑它最初的来源和格式。
V I 2 . o. 8N 1 o
Ma .2 o r 06
基 于 Drc hw的客户 端 i to eS 实 时视频 流 回放 技 术
刘 琼 , 慧灿 周
( 湖南文理学院 计算机科学系 。 湖南 常德 450 ) 103

要: 介绍 了Dr t o 术的原理并 以 M E i c hw技 eS P G一1视频流解 码回放为例 , 详细说 明了 Ft Gah的构建 与实现方法。 ir r l e p 文献标识码 : A 文章编号 :6 1 2 120 )1 0 1 3 17 —03 (060 —06 —0
维普资讯
在过滤器图表结构中, 源过滤器用来从数据源劳敢数据 , 并将数据传送到过滤器 图表中, 这里的数据

利用DirectShow实现视频文件播放

利用DirectShow实现视频文件播放

DirectShow 媒体文件回放总结收藏作者:Inkick1.概述DirectShow中媒体文件回放的过程也就是一个为媒体文件选择相应所需的Filter、构建Filter Graph、并对Filter Graph的状态进行维持、控制的过程。

这里所说的媒体文件,不仅仅是指音频、视频文件,同时也包括bmp、jpeg、gif等图形图像格式以及midi等数字化音乐序列。

因此,使用DirectShow进行媒体文件的回放需要经过以下的步骤:2.构建Filter GraphFilter Graph为Filter提供了一个容器,一个构建完整的Filter Graph也就是一个完整的Filter 连路,这个连路对于程序是透明的,可控制的。

而对于每一个媒体文件来说,Filter Graph 与媒体文件存在着对应的关系。

也就是说,一个Filter Graph只能实现一个(种)文件的回放。

在DirectShow中,Filter Graph是由接口对象IGraphBuilder实现的,我们可以调用Win32 API 函数CoCreateInstance()建立一个实体。

Filter Graph实体建立之后并不具有任何的Filter,因此不具有任何实际用途。

因此我们需要连接需要的Filter来完成FilterGraph的构建。

智能连接这个术语覆盖了一系列Filter Graph Manager用于构建所有或部份filter graph的算法。

任何时候,当Filter Graph Manager需要添加filter来完成graph时,它大致做以下几件事情:如果有一个filter存在于graph中,而且这个filter有至少一个没有连接的input pin,Filter Graph Manager试着去试用这个filter。

否则,Filter Graph Manager在已注册的filter中寻找连接时可以接受合适的媒体类型的filter。

基于Directshow的视频缩放的技术措施

基于Directshow的视频缩放的技术措施

基于Directshow的视频缩放的技术措施本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!在日常学习工作中经常会对各种视频文件进行分析,比如视频的剪切、缩放等,但是对于这些操作可能会用到专业的视频分析卡等硬件的支持。

针对硬件价值较高,微软提供了一套基于COM的流媒体处理开发包DirectShow。

在DirectShow中提供了完整的视频分析处理接口DES,负责对各类视频进行分析处理。

通过DES、Filter Graph可以对视频进行缩放处理,使视频的缩放脱离硬件的直接支持,适合于个人PC 机上的视频处理。

本文主要分析了3中视频缩放的方法,通过这些方法可以进一步加快视频缩放的速度和效率。

1 Directshow简介利用Directshow对视频进行缩放处理,必须对Directshow的架构,DES(Directshow Editing Services)以及Filter Graph Manager等知识有所了解。

Directshow的体系结构Directshow本质上就是基于COM组建的流媒体开发包,它为我们用户提供了一整套完整的视频处理接口。

该体系结构大致可分为3层:用户应用层、Directshow接口层、底部设备层。

Filter以及Filter Graph ManagerFilter其实就是一种叫做过滤器的COM组件,一共有三种类型的Filter:Source Filter、Transforill Filter、Rendering Filter。

它们都包含一个或多个Pin,Source Filter负责视频的采集,输入等;Transform Filter负责对视频进行格式转换、传输等;Rendering Filter负责视频文件的渲染,输出。

由于每一个Filter都有Pin针,我们可以根据不同的任务、需求,将各种Filter利用Pin针连接起来,就构成了一个Filter Graph。

基于DirectShow的视频采集和传播系统

基于DirectShow的视频采集和传播系统

基于DirectShow的数字视频采集与传输系统内容摘要:本文简单介绍了DirectShow技术,研究了利用DirectShow实现视频采集、压缩和网络传输技术。

并利用第三方提供的编解码器实现了MPEG-4视频数据的网络传输系统,在该系统中利用RTP 协议进行视频数据传输,同时实现了远端帧率的控制。

1 引言近年来,随着国民经济的发展,社会各个部门对于视频监视系统的需求越来越多。

但目前的很多监视系统都跟具体的硬件相关,必须要具体的采集卡的支持才能实现。

所以有必要开发一种具有通用性的视频监视系统,用普通的摄像头就能实现视频的采集。

基于DirectShow的开发能很灵活地控制音视频的效果,所以选择DirectShow这种可扩展性好的技术做开发对以后的应用升级很有帮助。

此外,为了实现流媒体传输控制的策略,流媒体的传输和回放也是应解决的问题之一。

由Microsoft提供的DirectShow技术基于组件对象模型技术,支持宽松的格式变化,提供高品质的多媒体流回放。

利用它可以在普通微机中实现流媒体的客户端处理,并可以提高系统的通用性和可扩展性。

对于视频数据的传输,压缩率是一个必须考虑到的因素。

MPEG-4是由ISO和IEC的MPEG组制定的一个关于活动图像和声音的编码国际标准。

它在基于内容的交互性、压缩率、通用访问能力等方面提供了一系列新的或改进的功能。

MPEG-4视频在提供较好的图像质量的同时拥有较高的压缩率,适合于作为传输的图像压缩标准。

2相关技术2.1 DirectShow技术简介DirectShow是Microsoft为开发高性能多媒体应用而开发的底层应用程序接口(API),它是DirectX家族的核心成员之一。

DirectShow自身是通过一种系统内置的或程序员开发的过滤器(Filter)来控制和处理多媒体数据的体系结构。

该体系结构定义了如何处理和控制过滤器内部及相互之间的多媒体数据流。

每个过滤器都有输入或输出针(Pin), 或两者都有。

基于DirectShow视频及图片捕获软件的开发

基于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的驱动,我们的软件对映美精相机的识别是如此的容易。

接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。

基于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类相关文件,点击下载。

基于VC++与DirectShow的视频监控及其实验平台

基于VC++与DirectShow的视频监控及其实验平台
Die t h w. r eS o Ke y wor :Die th w;Fie ;Vie ma e ds re s o lr t d i g o
1 引言
为 了满 足银行 、 通 、 交 电力 、 民小 区等要 害部 门和 居 社会领 域 的安 防需要 ,视频 监控技 术得 到迅速发 展 、 普 及。 早期 的监控 主要 由摄像机 、 视频矩 阵、 监视器 、 录像机 组成 , 过视频 线 、 通 控制 电缆 连接 , 只适用 于小范 围 内的
. Dr t W工作原 理 e h 上进行媒体 流处 理的多媒体 开发 包, Drc 开发包一 21 i cSo 与 i t eX 图 1显示 了 DrcSo i t w的 体 系结 构 图 ,ic hw e h Dr t o eS 起发 布。 是微软公司推 出的新一代基 于 C M组件对象模 O
收 稿 日期 :0 70 —0修 回 日期 :0 7 0— 8 20 — 7 1; 20 — 7 2 作 者简 介 : 彭海 云(9 2 )女 , 师 , 究方 向: 17 一 , 讲 研 计算机 应用 研 究。
Acv Mo i t e ve i C 0 口
应 用 程序

MC  ̄ E I ]
控件


监控。 随着数字 视频压 缩编码 技术的 日益成熟 、 多媒体计 算机性能的提高和 网络带 宽的增大 ,使 多媒体数据 的远 程传 输变成可能 ,这些 多媒 体数据具有 图像清晰 、可记
具有代 码量少 、 通用性 强 、 时性好 的特 点 , 实 来进 行实 时 的视频监控 。
I体 端 媒 源
媒 目端 体 的
图 1 Di cS o 的 体 系结 图 r thw e
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VS2010C++学习(5):基于DirectShow的视频预览录像程序学习VC++编制的基于DirectShow视频捕获程序,主要练习基于DirectShow程序的应用。

一、主要内容:1.基于DirectShow视频预览;2.基于DirectShow视频录像;二、设计实现:(一)、安装DirectShow首先我们安装DirectShow SDK,由于现在directShow没有和direcxtx一起发布,而是和windows sdk打包发布了,可以到官网下载最新的windows sdk开发包。

一个可用的下载地址为/07/hh/DXSDK_Feb10.rar 然后安装好windows SDK。

安装完DirectShow SDK的目录为C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow。

(二)、开发环境配置开发环境的配置主要有两个工作要做:一是在使用Directshow SDK开发自己的程序时需要的DirectShow的有关静态库的配置,二是visual C++开发环境的配置。

1)生成DirectShow SDK开发库使用DirectShow SDK开发用户自己的程序需要几个静态链接库:quartz.lib、strmbasd.lib、STRMBASE.lib和strmiids.lib。

中间两个lib需要用户自己编译生成,而其他两个微软已经提供。

下表列出了使用DirectShow SDK开发程序所有要使用的库。

2)更改添加的include内容:C:\Program Files\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses;C:\Program Files\Microsoft SDKs\Windows\v7.1\Include;添加过程如下。

选择“Ex005属性”→“选项”→“VC++目录”→“包含目录”,将上面的2个Include内容添加进去。

3)更改添加lib路径要添加的lib内容:C:\Program Files\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib;添加过程和Include内容相似,选择“Ex005属性”→“选项”→“VC++目录”→“库文件”选项。

4)添加链接库支持C:\Program Files\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug;C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib;5)小贴士DirectShow中的例子,在编译的过程中经常会出现这样的错误:Error1error C2061:syntax error:identifier'CAMSchedule'c:/program files/microsoftsdks/windows/v6.0/samples/multimedia/directshow/baseclasses/refclock.h80这主要是因为在不同SDK的目录里包含了多个schedule.h file和refclock.h因此需要在“Ex005属性”→“选项”→“VC++目录”→“包含目录”中调整include的顺序,将samples/multimedia/directshow/baseclasses放到其他的sdk之前即可(三)、DirectShow视频采集方案流媒体处理技术以其复杂性和技术性一直受到人们的关注。

随着网络技术的不断发展,流媒体在网络上得到了广泛地应用。

如何能够简单、有效地进行流媒体处理,已成为一个焦点问题。

为此,Microsoft推出了DirectShow,DirectShow 是Microsoft推出的基于Windows平台的流媒体处理开发包,它与DirectX一起发布。

DirectShow对流媒体的捕捉、回放提供了强大的支持。

1)DirectShow系统结构分析DirectShow主要由过滤器(Filter Graph)图表构成。

过滤图表中包含了各种Filter,这些Filter能够按一定顺序连接在一起,构成一条流水线。

从功能的角度划分,Filter大体可以分为3类,●Source Filters;主要负责获取数据,可以是一个文件、一个采集卡、声卡或数码相机等。

●Transform Filters;负责数据的转换、传输。

例如各种码器、解码器等。

●Rendering Filters。

负责数据的最终去向,例如将数据传送到声卡、显卡或存储为文件。

在开发DirectShow应用程序时,通常需要设计一个过滤图表(Filter Graph),向过滤图表中添加相应的过滤器,最后连接过滤器的引脚就完成了功能的设计。

例如,实现一个简单的视频预览功能,需要向过滤图表中添加一个视频捕捉源过滤器和一个Video Renderer过滤器,将视频捕捉源过滤器的输出引脚与Video Renderer过滤器的输入引脚相连就可以了。

而在程序中只需要按照设计过滤图表的捕捉添加过滤器并连接过滤器引脚就可以了。

在连接过滤器引脚时需要注意:只能是输出过滤器引脚与输入过滤器引脚相连,两个输出过滤器或两个输入过滤器引脚是不能相连的。

2)Filter图表设计为了方便用户设计过滤图表,DirectX提供了一个Graph Edit工具。

位于C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\graphedt.exe。

点击运行。

演示如何使用Graph Edit工具设计过滤图表,过滤图表的功能是实现视频的预览功能。

具体步骤如下:(1)单击“Graph/Insert Filters”菜单项打开“添加过滤器”窗口,选择一个视频捕捉源过滤器。

选择“Video Renderer”最终去向过滤器,连接,如图1。

图2宽屏haali视频分离器单击工具栏中的“>”按钮运行过滤图表,将显示一个视频预览窗口。

3)枚举系统设备使用Graph Edit工具,用户可以非常方便地获得与某一系统设备相关的过滤器。

但是,在程序中该如何获得这些过滤器呢?用户可以采用枚举的方式列举系统中安装的设备。

以列举系统中的视频捕捉设备为例,(1)首先定义一个设备列举接口ICreateDevEnum的一个指针;(2)调用CoCreateInstance方法创建ICreateDevEnum实例。

(3)然后定义一个列举监视器IEnumMoniker的一个指针;(4)调用ICreateDevEnum实例的CreateClassEnumerator方法创建IEnumMoniker实例。

(5)最后以循环的方式调用IEnumMoniker实例的Next方法遍历系统设备;(6)调用IEnumMoniker实例的BindToObject方法将系统设备绑定到过滤器上。

在上面的描述中,ICreateDevEnum实例的CreateClassEnumerator方法的第一个参数确定枚举的系统设备。

例如,第一个参数为CLSID_VideoInputDeviceCategory,表示将要枚举系统中的视频捕捉卡,为CLSID_VideoCompressorCategory,表示枚举系统中的视频压缩器。

下面的代码演示了如何枚举系统中的视频捕捉卡。

//枚举视频设备;值=CLSID_VideoInputDeviceCategory//音频设备的值=CLSID_AudioInputDeviceCategory;ICreateDevEnum*pDevEnum=NULL;CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC,IID_ICreateDevEnum,(void**)&pDevEnum);IEnumMoniker*pClassEnum=NULL;pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pClassEnum,0);ULONG cFetched;while(pClassEnum->Next(1,&pMoniker,&cFetched)==S_OK){pMoniker->BindToObject(0,0,IID_IBaseFilter,(void**)&pSrc);pMoniker->Release();break;}pClassEnum->Release();而下面的代码则用于判断系统中是否安装了指定的视频压缩器。

ICreateDevEnum*pDevEnum=NULL;CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC,IID_ICreateDevEnum,(void**)&pDevEnum);IEnumMoniker*pClassEnum=NULL;//列举视频压缩设备;值=CLSID_VideoCompressorCategorypDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory,&pClassEnum,0);while(pClassEnum->Next(1,&pMoniker,&cFetched)==S_OK){IPropertyBag*pProp=NULL;pMoniker->BindToStorage(0,0,IID_IPropertyBag,(void**)&pProp);VARIANT varName;varName.vt=VT_BSTR;pProp->Read(L"FriendlyName",&varName,0);CString str=varName.bstrVal;if(str.Find("Microsoft Video1",0)!=-1){pMoniker->BindToObject(0,0,IID_IBaseFilter,(void**)&pCompress);pMoniker->Release();break;}VariantClear(&varName);}pClassEnum->Release();4)查找Filter Pin过滤器引脚每一个过滤器(Filter)至少应有一个引脚(Pin),或者是输入引脚或者是输出引脚。

相关文档
最新文档