windows视频捕获DirectShowDirectSound API 高清PCI-E视频采集卡T620E
- 格式:wps
- 大小:48.00 KB
- 文档页数:6
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的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的
问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩
及播放,仅规定视频和音频该如何存储在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。
VFW给程序员提供.VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、
播放和编辑视频剪辑。现在用户不必专门安装VFW了,Windows95本身包括了Video for Windows1.1,当
用户在安装Windows时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。
VFW六个组成模块:
(1)AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一
个高级接口;
(2)MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作;
(3)MCIAVI.DRV:此驱动程序包括对VFW的MCI命令的解释器;
(4)AVIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问.AVI文件;
(5)压缩管理器(ICM):管理用于视频压缩-解压缩的编解码器(CODEC);
(6)音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。
Visual C++在支持VFW方面提供有vfw32.lib、 msacm32.lib 、winmm.lib等类似的库。特别是它提供
了功能强大、简单易行、类似于MCIWnd的窗口类AVICap。AVICap为应用程序提供了一个简单的、基于
消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。
AVICap编程简介
AVICap支持实时的视频流捕获和单帧捕获并提供对视频源的控制。虽然MCI也提供数字视频服务,
比如它为显示.AVI文件的视频提供了 avivideo命令集,为视频叠加提供了overlay命令集,但这些命令主
要是基于文件的操作,它不能满足实时地直接从视频缓存中取数据的要求,对于使用没有视频叠加能力的
捕获卡的PC机来说,用MCI提供的命令集是无法捕获视频流的。而AVICap在捕获视频方面具有一定的
优势,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视
频捕获到文件。
在视频捕获之前需要创建一个捕获窗,所有的捕获操作及其设置都以它为基础。用AVICap窗口类创
建的窗口(通过 capCreateCaptureWindow函数创建)被称为“捕获窗”,其窗口风格一般为WS_CHILD和
WS_VISIBLE。在概念上,捕获窗类似于标准控制(如按钮、列表框等)。捕获窗具有下列功能:
(1)将一视频流和音频流捕获到一个AVI文件中;
(2)动态地同视频和音频输入器件连接或断开;
(3)以Overlay或Preview模式对输入的视频流进行实时显示;
(4)在捕获时可指定所用的文件名并能将捕获文件的内容拷贝到另一个文件;
(5)设置捕获速率;
(6)显示控制视频源、视频格式、视频压缩的对话框;
(7)创建、保存或载入调色板;
(8)将图像和相关的调色板拷贝到剪贴板;
(9)将捕获的一个单帧图像保存为DIB格式的文件。
这里需要解释一下AVICap在显示视频时提供的两种模式:
(A)预览(Preview)模式:该模式使用CPU资源,视频帧先从捕获硬件传到系统内存,接着采用GDI函
数在捕获窗中显示。在物理上,这种模式需要通过VGA卡在监视器上显示。
(B)叠加(Overlay)模式:该模式使用硬件叠加进行视频显示,叠加视频的显示不经过VGA卡,叠加视
频的硬件将VGA的输出信号与其自身的输出信号合并,形成组合信号显示在计算机的监视器上。只有部
分视频捕获卡才具有视频叠加能力。
除了利用捕获窗的九个功能外,灵活编写AVICap提供的回调函数还可满足一些特殊需求,比如将宏
capCaptureSequenceNoFile同用capSetCallbackOnVideoStream登记的回调函数一起使用可使应用程序直接
使用视频和音频数据,在视频会议的应用程序中可利用这一点来获得视频帧,回调函数将捕获的图像传到
远端的计算机。应用程序可用捕获窗来登记回调函数(由用户编写,而由系统调用),以便在发生下列情况
时它能通知应用程序作出相应的反应:
(1)捕获窗状态改变;
(2)出错;
(3)视频帧和音频缓存可以使用 ;
(4)在捕获过程中,其它应用程序处于让步(Yield)地位。
与普通SDK编程一样,视频捕获编程也要用到涉及视频捕获的结构、宏、消息和函数。让编程人员感
到轻松的是,发送AVICap窗口消息所能完成的功能都能调用相应的宏来完成。例如,
SendMessage(hWndCap,WM_CAP_DRIVER_CONNECT,0,0L)与capDriverConnect(hWndCap,0)的作用相同,
都是将创建的捕获窗同视频输入器件连接起来。
在利用AVICap编程时,应该熟悉与视频捕获相关的结构,下面对常用的四个结构作一简要介绍,对
于前三个结构都有对应的函数来设置和获得结构包含的信息:
(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或其他压缩芯片来执行,则是硬压缩
玩电脑的人都知道,一台电脑想要正常运行,除了硬件和操作系统外,还需要一个重要的东西,那就是驱