基于windows的几种视频采集方法的设计与实现

基于windows的几种视频采集方法的设计与实现

信息

臻l一

科学

基于Windows的几种视频采集方法设计与实现

李钦存王春明段海龙

(63895部队河南孟州454750)

[摘要】分别介绍在Windows操作系统下的三种实时视频数据采集的方法。即基于VFlr的实时视频采集,基于DirectShow的实时视频采集和基于视频卡附带软件开发工具箱(SDK)的实时视频采集,并给出实现的核心代码。

[关键词]视频采集VFWDirectShow

SDK

中图分类号:TP391

文献标识码:A文章编号:1671--7597(2008)1110087--02

随着计算机网络和多媒体计算的迅猛发展,许多应用系统,如可视电CapSetCallbackOnStatus(hWnd,(FARPROC)StatusCallbackProc:

话系统、电视会议系统、远程I监控系统等要求能够实时获取视频信息;同//在采集窗口发生改变时被调用

样,若想进行图像处理也必须进行视频流捕获和单帧图像采集。因此,如CapSetCalIbackOnFrame(hWnd,(FARPROC)FrameCallbackProc):何实时获取视频数据使成为麻用中的垂要环节和关键前提[2]。

//在每采集完一帧时调用

一、基于VFW的实时视频数据采集

capDriverConnect(hWnd。O)://窗口与驱动设备相连接

VFW(Video

For

Windows)是Microsoft推出的关于数字视频的一个软

capOverlay(hWnd,TRUE);11将显示设置成Overlay模式,开始捕获视件包,该软件包能使应用程序数字化并播放从传统模拟视频源得到的视频频流

剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数capCaptureSequenceNoFile(hWnd):据量大的问题,需要对数据进行压缩。软件包引进了一种,qAVI的文件标}

准,该标准未规定如何对视频进行捕获。压缩仪规定视频和音频该如何存设置调用函数:

储在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。LRESULT

CALLBACK

FrameCallbackProc(删D

hWnd,LPVIDEOHDR

V聃给程序员提9t,vBx和AVICap窗口类的高级编程工具。使程序员能通过发IpVHdr)

送消息或’发|苘!属性来捕获、播放和编辑视频剪辑。Windows98以上系统都自{

动安装配置视频所需的组件,如设备驱动程序,视频压缩程序等[3]。

//采集到的视频数据放在VIDEOHDR数据块结构中

vFW上要由以F6个模块组成:

//这样就可以在这里捕获每帧的视频数据作进一步的处理。如显示AVICAP.DLL:处理视频捕获。为AVI文件输入输出和视频、音频设备在新的窗口或者发送到远端计算机,或//进行相应的图像处理。

驱动程序提供一个编程接u。

MSVIDEO.DLL:用DrawDib函数处理屏幕卜的视频操作。‘LRESULT

CALLBACKErrorCal1backProc(HWND

hWnd,int

MCIAVI.DRV:包含对VFW的MCI命令的解释器。

nErrID.LPSTRlpErrorText)

AVIFILE.DLL:支持由标准多媒体I/O函数提供的更高的命令来访问{//在这里作相应的处理}

AVI文件。

LRESULT

CALLBACK

StatusCallbackPrOC(H骱4D

hWnd,int

nID,LPSTR

ICM:压缩管理器,管理用于视频压缩/解压的编码器。

IpStatusText)

ACM:音频压缩管理器,管理用于波形音频压缩/解压的编解码器。{//在这里作相应的处理}

在这里介绍采用窗口类AVICap实现视频捕获的方法。AVlCap支持实时二、基于DirectShow的实时视频数据采集的视频流捕获和单帧捕获并提供对视频源的控制。它能直接访问视频缓冲’DirectShow是微软根据对来自许创建说频捕获窗fj

区,小需要生成中间文件,实时性很强,效率很高[4]。同时,它也可将视多不同的媒体资源的流视频和音频的需上

频捕获到文件。视频数据的实时采集j#要是通过调用AYlCap32.d11创建要,开发的一个解决办法,它设计提供注册系统回调函数

AVICAP窗口类,由AVICAP窗口类中的消息、宏雨数、结构以及回调函数来完

所有高质量的视频回放以及捕获特性。成。唧的视频采集功能函数主要包括捕获视频流至AVI文件

DirectShow还提供了广泛的支持结构获取捕获窗【1的参数设置

(capCaptureSequence)、捕获视频流至缓存(capCaptureSequenceNoFile)、模型。这种模型可以将新的媒体类型轻上

捕获视频流的具体帧至AVI文件(cap-CaptureSingleFrame)、本地预览松地添加到自己的结构中。

(capPreview/capOverlay)和捕获单帧预览(capGrabFrame/cap—GrabFrameNDirectShow是一种基于COM技术的I

与视频采集设备连接

—oStop)等。VFW还提供了回调函数,允许应用程序精确控制视频流的捕上

多媒体编程接口。它给出了一种全新的获、检测错误、监控状态变化,以及在捕获两帧数据的空隙和每捕获新帧多媒体数据处理模型,并封装了采集、I捕获图像到缓存或文件并进行相应处理

时对实时视频数据进行处理。具体的采集流程如图l所示。

压缩和解压缩等一系列算法,为视频监上

采集的核心代码【5]:

控、视频会议等多媒体应用系统的开发l中止视频捕获并断开与采集设备的连接

提供了良好的平台[1]。

图1

VFW实现视频捕获的流程

HWND

hWnd=capCreateCaptureWindow(“视频捕获窗口”,

DirectShow是位于DirectX(DirectDraw,DirectSound,Direct3D等)WS_CHILDWS

VISIBLE,//设置指定窗口的风格

基础之上的媒体层。它主要提供播放本地文件或Internet服务器l:的多媒Rect.1eft,Rect.top,Rect.Right—Rect.1eft,Rect.bottom-

体数据,以及从视频采集譬等硬件设备中捕获多媒体流的功能。它能够播Rect.top,//设置显式帧窗口的大小

放多种压缩格式的视音频文件(或流),包括肝EG,QuickTime,AVI,WAV以NULL,NULL)://创建捕获窗口并将获取的句柄赋予hWnd及基于VFW和WI)M的视音频捕获流。DirectShow的实质是以“过滤器(//注册系统【旦】调函数

Filters)”组件为核心的模块化系统。用各种过滤器构造成不同的过滤器CapSetCallbackOnError(hWnd.(FARPROC)ErrorCalIbackProc:

图表(FilterGraph)就可以完成回放采集等不同任务,一个称为“过滤7/在采集过程中出错时被调用

器图表管理器”(FilterGraphManager)的组件负责Filter之间的连接

叵圃

万方数据

你可能喜欢

  • 图像采集
  • 视频技术
  • 视频播放
  • ARM视频采集
  • 视频采集卡
  • RTP协议
  • USB摄像头

基于windows的几种视频采集方法的设计与实现相关文档

最新文档

返回顶部