windows视频捕获DirectShowDirectSound API 高清PCI-E视频采集卡T620E
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
windows视频捕获DirectShow/DirectSound API 高清PCI-E视频采集卡T620E
根据使用的驱动程序的不同来分类,目前市场上大致有两种视频采集卡:VFW (Video for Windows)视频卡和WDM (Windows Driver Model)视频卡。
在windows 里面实现视频捕获,微软提供了两个SDK库,一个是avicap,一个是directshow。
Video for Windows简介
VFW是Microsoft 1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。
VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。
它引进了一种叫A VI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,在A VI文件中交替存储视频帧和与之相匹配的音频数据。
VFW给程序员提供.VBX和A VICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。
现在用户不必专门安装VFW了,Windows95本身包括了Video for Windows1.1,当用户在安装Windows时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。
VFW六个组成模块:
(1)A VICAP.DLL:包含了执行视频捕获的函数,它给A VI文件I/O和视频、音频设备驱动程序提供一个高级接口;
(2)MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作;
(3)MCIA VI.DRV:此驱动程序包括对VFW的MCI命令的解释器;
(4)A VIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问.A VI文件;
(5)压缩管理器(ICM):管理用于视频压缩-解压缩的编解码器(CODEC);
(6)音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。
Visual C++在支持VFW方面提供有vfw32.lib、msacm32.lib 、winmm.lib等类似的库。
特别是它提供了功能强大、简单易行、类似于MCIWnd的窗口类A VICap。
A VICap为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。
A VICap编程简介
A VICap支持实时的视频流捕获和单帧捕获并提供对视频源的控制。
虽然MCI也提供数字视频服务,比如它为显示.A VI文件的视频提供了avivideo命令集,为视频叠加提供了overlay命令集,但这些命令主要是基于文件的操作,它不能满足实时地直接从视频缓存中取数据的要求,对于使用没有视频叠加能力的捕获卡的PC机来说,用MCI提供的命令集是无法捕获视频流的。
而A VICap在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。
同时,它也可将数字视频捕获到文件。
在视频捕获之前需要创建一个捕获窗,所有的捕获操作及其设置都以它为基础。
用A VICap窗口类创建的窗口(通过capCreateCaptureWindow函数创建)被称为“捕获窗”,其窗口风格一般为WS_CHILD和WS_VISIBLE。
在概念上,捕获窗类似于标准控制(如按钮、列表框等)。
捕获窗具有下列功能:
(1)将一视频流和音频流捕获到一个A VI文件中;
(2)动态地同视频和音频输入器件连接或断开;
(3)以Overlay或Preview模式对输入的视频流进行实时显示;
(4)在捕获时可指定所用的文件名并能将捕获文件的内容拷贝到另一个文件;
(5)设置捕获速率;
(6)显示控制视频源、视频格式、视频压缩的对话框;
(7)创建、保存或载入调色板;
(8)将图像和相关的调色板拷贝到剪贴板;
(9)将捕获的一个单帧图像保存为DIB格式的文件。
这里需要解释一下A VICap在显示视频时提供的两种模式:
(A)预览(Preview)模式:该模式使用CPU资源,视频帧先从捕获硬件传到系统内存,接着采用GDI函
数在捕获窗中显示。
在物理上,这种模式需要通过VGA卡在监视器上显示。
(B)叠加(Overlay)模式:该模式使用硬件叠加进行视频显示,叠加视频的显示不经过VGA卡,叠加视频的硬件将VGA的输出信号与其自身的输出信号合并,形成组合信号显示在计算机的监视器上。
只有部分视频捕获卡才具有视频叠加能力。
除了利用捕获窗的九个功能外,灵活编写A VICap提供的回调函数还可满足一些特殊需求,比如将宏capCaptureSequenceNoFile同用capSetCallbackOnVideoStream登记的回调函数一起使用可使应用程序直接使用视频和音频数据,在视频会议的应用程序中可利用这一点来获得视频帧,回调函数将捕获的图像传到远端的计算机。
应用程序可用捕获窗来登记回调函数(由用户编写,而由系统调用),以便在发生下列情况时它能通知应用程序作出相应的反应:
(1)捕获窗状态改变;
(2)出错;
(3)视频帧和音频缓存可以使用;
(4)在捕获过程中,其它应用程序处于让步(Yield)地位。
与普通SDK编程一样,视频捕获编程也要用到涉及视频捕获的结构、宏、消息和函数。
让编程人员感到轻松的是,发送A VICap窗口消息所能完成的功能都能调用相应的宏来完成。
例如,SendMessage(hWndCap,WM_CAP_DRIVER_CONNECT,0,0L)与capDriverConnect(hWndCap,0)的作用相同,都是将创建的捕获窗同视频输入器件连接起来。
在利用A VICap编程时,应该熟悉与视频捕获相关的结构,下面对常用的四个结构作一简要介绍,对于前三个结构都有对应的函数来设置和获得结构包含的信息:
(1)CAPSTATUS:定义了捕获窗口的当前状态,如图像的宽、高等;
(2)CAPDRIVERCAPS:定义了捕获驱动器的能力,如有无视频叠加能力、有无控制视频源、视频格式的对话框等;
(3)CAPTUREPARMS:包含控制视频流捕获过程的参数,如捕获帧频、指定键盘或鼠标键以终止捕获、捕获时间限制等;
(4)VIDEOHDR:定义了视频数据块的头信息,在编写回调函数时常用到其数据成员lpData(指向数据缓存的指针)和dwBufferLength(数据缓存的大小)。
视频(Video)是多幅静止图像(图像帧)与连续的音频信息在时间轴上同步运动的混合媒体,多帧图像随时间变化而产生运动感,因此视频也被称为运动图像。
视频采集就是将视频源的模拟信号通过处理转变成数字信号(即0和1),并将这些数字信息存储在电脑硬盘上的过程。
这种模拟/数字转变是通过视频采集卡上的采集芯片进行的。
动态视频运动图像
视频(video)是多幅静止图像(图像帧)与连续的音频信息在时间轴上同步运动的混合媒体,多帧图像随时间变化而产生运动感,因此视频也被称为运动图像。
视频采集就是将视频源的模拟信号通过处理转变成数字信号(即0和1),并将这些数字信息存储在电脑硬盘上的过程。
这种模拟/数字转变是通过视频采集卡上的采集芯片进行的。
视频采集卡的工作原理
视频采集卡是一个安装在计算机扩展槽上的一个硬卡。
它可以汇集多种视频源的信息,如电视、影碟、录像机和摄像机的视频信息,对被捕捉和采集到的画面进行数字化、冻结、存储、输出及其他处理操作,如编辑、修整、裁剪、按比例绘制、像素显示调整、缩放功能等。
同三维专业视频卡为多媒体视频处理提供了强有力的硬件支持。
视频采集的过程
采集视频的过程主要包括如下几个步骤:
设置音频和视频源,把视频源外设的视像输出与采集卡相连、音频输出与MPC声卡相连。
准备好MPC系统环境,如硬盘的优化、显示设置、关闭其他进程等。
启动采集程序,预览采集信号,设置采集参数。
启动信号源,然后进行采集。
播放采集的数据,如果丢帧严重可修改采集参数或进一步优化采集环境,然后重新采集。
由于信号源是不间断地送往采集卡的视频输入端口的,同三维视频建议可根据需要,对采集的原始数据进行简单的编辑。
如剪切掉起始和结尾处无用的视频序列,剪切掉中间部分无用的视频序列等,以减少数据所占的硬盘空间。
视频图像采集的方法
视频图像采集的方法一般可以分为:自动图像采集和基于处理的图像采集。
1)自动图像采集,采用专用图像采集芯片,自动完成图像的采集、帧存储器地址生成以及图像数据的刷新;除了要对采集模式进行设定外,主处理器不参与采集过程;
2)基于处理的图像采集,采用通用视频A/D转换器实现图像的采集,不能完成图像的自动采集,整个采集过程在CPU的控制下完成,由CPU启动A/D转换,将数据存入帧存储器。
其特点是数据采集占用CPU 的时间,对处理器的速度要求高,但电路简单、成本低、易于实现,能够满足某些图像采集系统的需要;
基于处理的图像采集系统信号采集部分主要是将信号转化成数字信号传给系统,处理部分通常是一个高性能的CPU。
它/不仅仪要完成对数据的运算、处理和存储,还要实现对整个系统的控制,特别是I/O部分的控制,以达到系统整体的要求,存储部分主要存储两个部分的内容:一是系统的程序;二是生物特征模板。
存储空间的大小也主要取决于这两个部分的要求。
I/O输入输出接口部分主要是完成系统功能要求。
在不同的应用领域对I/O的要求也不一样。
通信接口部分,在网络应用领域,就要求系统具有网络通信的功能。
20世纪90年代以后,可编程逻辑器件的广泛应用于视频图像采集,非压缩方案的硬件平台有DSP或ASIC或FPGA。
视频采集系统是视频采集功能的FPGA(现场可编程门阵列)前端系统,是视频图像处理、应用的前项通道。
在视频图像处理市场中的一些DSP和其它的ASSP器件,除了以极低的功耗和成本提供高性能之外,FPGA定义为可编程的,这提供了超越ASIC和ASSP的显着优点。
DSP器件可以处理高端DSP中的1080p 60HDR流水线的视频图像数据,但成本和功耗高得令人望而却步,并且在经济上无法负担。
FPGA由于其固有的并行性,非常适合承担随着分辨率增加的高清、高动态范围视频图像信号处理而产生的增加的负载。
硬压卡和软压卡硬压缩和软压缩
硬压缩就是通过板卡自带的DSP或者ASIC芯片进行压缩,
软压缩就是通过计算机的CPU进行压缩
由于硬压卡无需使用计算机的CPU等资源就能完成压缩,在计算机性能普遍较差的2005年以前,硬压卡一直占据着压缩卡市场的统治地位。
但2005年以后,随着计算机性能的不断提高,软压卡的市场在不断扩大,目前的软压卡已完全超越硬压卡占据了市场统治地位
软压缩与硬压缩的区别主要在于压缩程序由谁执行,如果压缩程序由计算机的CPU来执行,就是软压缩,如果压缩程序由嵌在板卡上的DSP或其他压缩芯片来执行,则是硬压缩
玩电脑的人都知道,一台电脑想要正常运行,除了硬件和操作系统外,还需要一个重要的东西,那就是驱动。
这里就延伸一下,给大家简述一下什么是视频采集卡驱动。
视频采集卡驱动程序
根据使用的驱动程序的不同来分类,目前市场上大致有两种视频采集卡:VFW (Video for Windows)视频卡和WDM (Windows Driver Model)视频卡。
采用VFW的一般都是些以前生产的卡;市面上的视频采集卡,一般都是采用了WDM驱动程序。
另外,视频采集卡的接口,可以是以PCI或AGP的方式插入PC机箱,也可以直接以USB接口(USB视频采集卡)的方式外挂;还有就是通过1394接口(DV1394卡)与PC机相连的数
码摄像机等等
所谓驱动程序,只是一段代码,一段包含了硬件信息的代码,它是连接操作系统与硬件的纽带。
每类硬件都有自己独有的功能,相应的就会有实现此类功能所需要的语言或称为指令,但系统不可能认识所有的这些东西,所以驱动程序就充当了翻译的角色
根据使用的驱动程序的不同来分类,目前市场上大致有两种视频采集卡:VFW (Video for Windows)视频卡和WDM (Windows Driver Model)视频卡。
VFW:/caijika/caijika_1327.html
WDM:/gaoqing/gaoqing_1329.html
采用VFW的一般都是些以前生产的卡;市面上的视频采集卡,一般都是采用了WDM驱动程序。
另外,视频采集卡的接口,可以是以PCI或AGP的方式插入PC机箱,也可以直接以USB接口(USB视频采集卡)的方式外挂;还有就是通过1394接口(DV1394卡)与PC机相连的数码摄像机等等。
VFW是一种趋于废弃的驱动模型,而后者是前者的替代模型;Microsoft 的Visual C++自从4.0版就开始支持Video for Windows(简称VFW),这给视频捕获编程带来了很大的方便。
由于VFW SDK只有VC和VB 版,没有Delphi版,DirectShow使用了一个标识为CLSID_VfwCapture的Filter来支持VFW卡。
跟WDM 卡相比,VFW卡实现的功能要简单得多。
一般要将驱动程序内的设置对话框显示给用户。
WDM支持USB、IEEE 1394、ACPI等全新的硬件标准。
而且以往在两个平台上同时运行时需要编写两个截然不同的驱动程序,现在只需要编写一个WDM驱动程序就可以了。
对于流媒体应用程序,WDM 在核心态提供了快速反应的接口来处理I/O流。
WDM的流接口是通过标准的WDM类接口提供出的。
WDM还支持更多新的特性,比如直接支持电视接收、视频会议、1394接口的设备、桌面摄像机、多条视频流(Line-21或Closed-Caption等)同时输出等等。
WDM采集卡,设置Capture输出的图像格式、图像的对比度、亮度、色度、饱和度等,都是通过IAMStreamConfig、IAMVideoProcAmp等接口来实现,当然,在GraphEdit中可以通过Filter的Property Page 来设置,
使用DirectShow(DirectShow是美国微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM的流媒体处理的开发包,与DirectX开发包一起发布)来处理一般的视频捕捉问题,是相对比较简单的。
这当然得益于DirectShow这一整套先进的应用架构。
DirectShow提供了大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。
如视频会议软件等都需要加入视频捕捉功能,那么必须首先获取并初始化IcaptureGraphBuilder2接口,然后选择一个适当的视频捕捉设备。
选择好设备后,为该设备创建Capture filter,然后调用AddFilter把Capture filter 添加到Filter Graph。
目前很多视频会议软件、直播软件等都是在DirectShow标准上开发的,DirectShow提供了一个叫做Capture Graph Builder的对象,Capture Graph Builder提供IcaptureGraphBuilder2接口,建立视频捕捉应用程序更加容易。
DirectShow是一种开发包,广泛应用于视频编辑、录播、直播等行业。
支持大量视频格式,如Asf、Mpeg、Avi、Dv、Mp3、Wave等等,并能直接播放DVD。
视频采集卡开发工具
SDK:Direct Show 、VC、VB、Delphi。
驱动:WDM、VFW、DirectX、OpenCV、Matlab、LabView、Halcon、MIL。
视频捕捉卡通常也是以一个(Capture) Filter的形式出现的。
处理视频捕捉,我们同样是使用Filter Graph,同样是操作Filter;控制起来,就似于操作媒体文件的播放。
当然,这主要是从应用程序控制层面上来说的;视频捕捉的应用场合比较多,视频捕捉本身的一些处理还是有它的特殊性的,而且牵涉面比较广。
DirectX:/faq/faq_1388.html
DirectShow:/vga/vga_856.html
视频采集卡安装驱动过程
如果新增加的USB视频采集卡等类似的硬件设备不支持即插即用,那么一般情况下都有安装驱动,安装新设备的过程为:
(1)按照所购买设备的说明来设置开关和跳线。
(2)正确地将新设备按规定的要求插入主板扩展槽中。
(3)安装随新设备所配的驱动程序。
(4)重新引导系统。
换种说法,即插即用是因为你的电脑已经支持怎么样使用该设备,不用再建立通信信道接受命令。
图像采集卡的工作模式
通常说的视频采集卡也就是动态图像采集卡,现在的采集卡已经广泛应用于各个行业,如多媒体,工程监控等等,同三维VGA视频信号采集卡就是采集处理VGA信号的高清图像采集卡。
为了更完整的实现清晰的图像效果,你要知道图像采集卡的工作模式是什么,下文将为你讲解。
(1)PLL(Phase Lock Loop)模式:相机向采集卡提供A/D 转换的时钟信号,此时钟信号来自相机输出的Video 信号,HS 和VS 同步信号可以有三种来源:composite video,composite sync,separate sync;
(2)XTAL 模式:图像采集卡给相机提供时钟信号以及HD/VD 信号,并用提供的时钟信号作为A/D 转换的时钟,但同步信号仍可用相机输出的HS/VS;
(3)VScan 模式:由相机向分别卡提供Pixel Clock 信号、HS 和VS 信号。
经过以上三点的分析,相信大家对图像采集卡的工作模式有了一定的认识。
在视频处理方面,图像采集卡整合了模数转换、视频解码、尺寸控制等处理功能,视频捕获是指由专用的视频采集卡捕获声频和视频信息,然后将其进行数据化。
随着数字信息的不断发展,普通视频信号所携带的信息量在无法与VGA视频相比时,各种视频显示系统系统工程里面采用VGA视频信号已近成为一个共识,而且很多行业对VGA信号的采集需求不断提升,面对市场的迫切需求,同三维视频新研发的PCI-E高清VGA信号实时采集压缩卡,它可以把输入的VGA 模拟信号实时采集压缩,即在一台显示器上同时显示另外一台设备的VGA数据,不用再增加额外的设备,既能保证信号的连续实时,又能保证清晰不失真,从而完美解决了VGA信号的实时采集压缩这一难题。
同三维PCI-E高清VGA信号采集卡能直接采集VGA信号,可以把输入的VGA视频信号实时采集压缩,并能立即在一台显示器上同时显示另外一台甚至多台设备的VGA数据,不用增加额外的设备,可以把输入的VGA模拟信号实时采集压缩,既能保证信号的连续实时,又能保证清晰不失真,从而完美解决了VGA 信号的实时采集压缩这一难题。
而且PCI-E高清VGA信号采集卡不同于PCI采集卡,不用担心CPU消耗过度、音视频信号不同步、信号采集效果、速度、质量等问题,也不用担心信号采集卡的兼容性、扩展性。
微软A VStream标准驱动,兼容Windows下DirectShow/DirectSound API,PCI-E高清视频采集卡T620E
几何尺寸147mm x 108mm
主机接口PCI-Express x4, Half size, 480MB/s 传输带宽
输入接口两个DVI-I 接口
最大采样率RGB/分量:170MHz HDMI/DVI:225MHz
板载内存每通道128MB DDR2,工作频率为160 Mhz,位宽32bit VGA输入格式640x400-1920x1080,像素率低于170MHz即可
分量输入格式480i、576i、480p,576p,720p,1080i,1080p
DVI输入格式符合DVI 1.0标准,单连接
HDMI输入格式符合HDMI 1.3 标准,支持36bit DeepColor
输出图像格式大小:40x30-1920x1080,帧率:1-100 fps,色彩:YUY2, UYVY, RGB24, RGB32, I420
操作系统支持Windows® XP Professional, Windows® Server 2003, Windows Vista®, Windows® Server 2008 and Windows® 7 (x86)
功耗<= 15W
工作温度范围0-50 摄氏度
保存温度范围-20-70 摄氏度
相对湿度范围5%-90%
请注意:
1. 实际输出帧率受PCI-Express 接口传输带宽限制,可能低于设定值。
T620E高分辨率双路VGA信号采集卡采用微软A VStream标准驱动,兼容Windows下DirectShow/DirectSound API,可支持大部分Windows上的多媒体视频软件或流媒体软件兼容使用DirectShow接口的各种音视频采集软件和使用DirectSound接口的音频采集软件,如:Windows Media Encoder
Adobe Flash Media Live Encoder
Real Producer Plus
VideoLAN for Windows。