实例透析:在Delphi中开发视频捕获程序

VFW是VideoforWindows的简称,是微软公司为视频软件开发人员专门推出的关于数字视频的软件包来对视频处理进行支持。


    VFW是VideoforWindows的简称,是微软公司为视频软件开发人员专门推出的关于数字视频的软件包来对视频处理进行支持。VFW提供的接口可以支持大多数的视频采集卡,所以为视频捕捉提供了标准的接口,从而大大降低了视频软件在Windows下的开发难度。现在我们就来掌握下如何利用VFW技术外加简易摄像头实现一个简单的单路视频监控系统,实例涉及到的摄像头既可为市场上出售的普通摄像头,也可为电脑笔记本自带摄像头。

  VFW是VideoforWindows的简称,是微软公司为视频软件开发人员专门推出的关于数字视频的软件包来对视频处理进行支持。VFW提供的接口可以支持大多数的视频采集卡,所以为视频捕捉提供了标准的接口,从而大大降低了视频软件在Windows下的开发难度。现在我们就来掌握下如何利用VFW技术外加简易摄像头实现一个简单的单路视频监控系统,实例涉及到的摄像头既可为市场上出售的普通摄像头,也可为电脑笔记本自带摄像头。

    视频捕捉与实时处理技术是目前视频处理系统中难点技术之一,能否准确捕捉指定的视频图像,进而实现精确地数据分析与处理,关系到整个视频系统的成败。显然,这个系统的重要之处是实时捕捉视频图像。为此,采用VFW技术,它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个重要思想是播放时不需要专用硬件。为了解决数字视频数据量大的问题,需要对数据进行压缩,而VFW引进了AVI的文件标准。该标准未规定如何对视频进行捕捉、压缩及播放,仅规定视频和音频该如何存储在硬盘上及在AVI文件中交替存储视频帧和与之相匹配的音频数据。但VFW可使程序员通过发送消息或设置属性来捕捉、播放和编辑视频剪辑。

    VFW主要由6个模块组成,下面做一下简单的说明:

    AVICAP.DLL包含执行视频捕捉的函数,它给AVI文件的I/O处理和视频、音频设备驱动程序提供一个高级接口。

    MSVIDEO.DLL包含一套非凡的DrawDib函数,用来处理屏幕上的视频操作。

    MCIAVI.DRV包括对VFW的MCI命令解释器的驱动程序。

    AVIFILE.DLL包含由标准多媒体I/O(mmio)函数提供的更高的命令,用来访问.AVI文件。

    ICM压缩治理器,用于治理的视频压缩/解压缩的编译码器(Codec)。

    ACM音频压缩治理器,提供与ICM相似的服务,适用于波形音频。

    接下来让我们了解一下视频捕捉程序开发的过程,视频捕获是指由专用的视频采集卡捕获声频和视频信息,然后将其进行数据化处理,再经过软件的压缩进行处理,这时就可对这些数据进行保存、回放、传输等各种操作。在VFW技术中,使用AVICap窗口类来开发视频捕捉程序,AVICap类支持实时视频流捕捉和单帧捕捉,并提供对视频源的控制。AVICap窗口类能直接访问视频缓冲区,而不需要生成中间文件,因而实时性很强,效率也很高。

    开发视频捕捉程序主要分以下四个步骤:

    (1)创建一个AVICap类的捕捉窗口

    在进行视频捕捉之前必需要先创建一个“捕捉窗口”,并应以此为基础进行所有的捕捉及设置操作。“捕捉窗口”可用AVICap窗口类的“CapCreateCaptureWindow”函数来创建,其窗口风格可设置为WSCHILD和WS_VISIBLE参数,例如:

    hWndC:=CapCreateCaptureWindowA(’MyOwnCaptureWindow’,

    WS_CHILDorWS_VISIBLE,//窗口样式

    Panel1.Left,//X坐标

    Panel1.Top,//Y坐标

    panel1.Width,//窗口宽

    panel1.Height,//窗口高

    Form1.Handle,//窗口句柄

    0);//一般为0

    “捕捉窗口”类似于一个标准组件,其主要功能为:

    1.将视频流和音频流数字化,然后存储在硬盘或其他存储介质上,实现录象功能;

    2.动态的在一个捕获窗口与一个捕获设备之间连接或断接;

    3.以Overlay或Preview模式对输入的视频流进行实时显示;Overlay该模式为部分采集设备所具有的能力,可以通过CAPDRIVERVAPS结构中的fHasOverlay域来判断设备是否具备该模式。在Overlay模式下所捕获的视频数据的显示不需要占用系统资源,显示速度快,同时不影响系统的其他任务。该模式所支持的视频采集格式为YUV格式,通过capOverlay宏完成;在Preview模式下显示要占用CPU资源,视频砧由系统调用GDI函数在捕获窗口中显示。Previews模式显示速度慢,所支持的视频采集格式为RGB格式,通过capPreview宏实现。所以一般采用overlay模式显示的图像要比preview流畅;

    4.实现动态视频流截图,一帧一帧地获得视频数据。

    (2)使捕捉窗口与其设备驱动程序相关联

    单独定义的捕捉窗是不能工作的,它须与一个设备相关联才能取得视频信号,通过如下代码就可以使捕捉窗口与其设备驱动程序相关联:

    SendMessage(hWndC,WM_CAP_DRIVER_CONNECT,0,0);

    另外使用函数CapDriverConnect也可实现捕捉窗口与其设备驱动程序相关联。例如:

    CapDriverConnect(hWndC,0);

    (3)基本的捕获设置

    基本的捕获设置包括:设置捕获速度(每秒捕获多少帧),是否同时捕获声频,捕获缓冲,允许最大丢失多少帧,是否使用DOS内存,以及用键盘的哪个键或鼠标的哪个键来终止捕获等等。这些基本的设置都可以使用TcaptureParms结构来描述,你可以使用capCaptureGetSetup函数来得到当前的设置,然后改变此结构的成员变量,再使用capCaptureSetSetup函数设置新的设置,之后还可以用CapPreviewScale、CapPreviewRate设置预览的比例与速度,也可以直接使用设备的默认值。

    (4)打开预览

    利用函数CapOverlay可选择是否采用叠加模式预览,以使系统资源占用小,视频显示速度加快。然后用CapPreview启动预览功能,这时就可以在屏幕上看到来自摄像机的图像了。

    通过以上四步就可以建立一个基本的视频捕捉程序,但假如想自己处理从设备捕捉到的视频数据,则要使用捕捉窗回调函数来处理,比如一帧一帧地获得视频数据或以流的方式获得视频数据等。

实例透析:在Delphi中开发视频捕获程序

该文观点仅代表作者,本站仅提供信息存储空间服务,转载请注明出处。若需了解详细的安防行业方案,或有其它建议反馈,欢迎联系我们

(0)
小安小安

相关推荐

  • 怎么查看视频监控好坏(怎么查看视频监控好坏呢)

    怎么查看视频监控好坏 1. 视频质量 视频质量是评估视频监控好坏的重要指标之一。首先,需要检查视频的清晰度和细节表现。清晰度高的视频能够提供更清晰的图像,细节表现好的视频能够更准确…

    2023年8月13日
  • 公共安全视频监控联网平台边界安全设备建设解决方案

    本项目坚持以依规建设、整合资源、联网共享、规范应用、分级保障、安全可控为设计原则,形成党委领导、政府主动、综治牵头、公安负责。

    2024年1月17日
  • 云上“天眼”掌控全局丨千方高速公路视频云联网平台

    千方高速公路视频云联网平台满足部级视频联网应用需求,通过云服务实现高速公路沿线设备资源汇总、视频调阅、视频控制、视频共享等服务,加快推进“可视、可测、可控、可服务”的高速公路运行监测体系建设,不断提升服务能力和监管水平,更好地满足出行需求。

    2024年2月14日
  • 视频监控需要什么基础知识(视频监控主要监控什么)

    视频监控需要什么基础知识 视频监控是一种通过摄像机和相关设备对特定区域进行实时监视和录像的技术。要理解和应用视频监控技术,需要掌握一些基础知识。本文将介绍视频监控所需的基础知识。 …

    2023年8月13日
  • 华为发布全新视频解决方案Huawei Envision

    华为数字业务产品线总裁宋孝龙在发布中指出:“电信运营商将视频作为增值业务的视频1.0时代已经离我们远去,越来越多的运营商将视频作为基础业务,发展战略从“以数据网络为中心”转变为“以视频网络为中心”,并将视频业务从针对个人用户的娱乐视频,逐步拓展到比如通讯视频、安防和城市监控等行业视频,以及UGC(用户原创内容)视频。

    2024年1月29日
  • 车子监控视频怎么看(车的监控怎么查看)

    车子监控视频怎么看 1. 视频清晰度 车子监控视频的第一个要素是清晰度。清晰度决定了我们能否清楚地看到视频中的细节。当我们观看车子监控视频时,应该注意视频是否清晰,能否辨认出车辆的…

    2023年8月12日