实例425 简易视频程序 实例说明 利用普通的简易摄像头,通过C#语言即可开发成简易视频程序。本实例利用市场上购买的普通摄像头,利用VFW技术,实现单路视频监控系统。运行程序,窗体中将显示舰体摄像头采集的视频信息。如图13.9所示。 技术要点 本实例主要使用了VFW(Video for Windows)技术。VFW 是Microsoft公司为开发Windows平台下的视频应用程序提供的软件工具包,提供了一系列应用程序编程接口(API),用户可以通过这些接口很 方便地实现视频捕获、视频编辑及视频播放等通用功能,还可利用回调函数开发比较复杂的视频应用程序。该技术的特点是播放视频时不需要专用的硬件设备,而且 应用灵活,可以满足视频应用程序开发的需要。Windows操作系统自身就携带了VFW技术,系统安装时,会自动安装 VFW的相关组件。 VFW技术主要由六个功能模块组成,下面进行简单说明。 l AVICAP32.DLL:包含执行视频捕获的函数,给 AVI文件的I/O处理和视频,音频设备驱动程序提供一个高级接口。 l MSVIDEO.DLL:包含一套特殊的DrawDib函数,用来处理程序上的视频操作。 l MCIAVI.DRV:包括对 VFW的MCI命令解释器的驱动程序。 l AVIFILE.DLL:包含由标准多媒体I/O(mmio)函数提供的更高级的命令,用来访问.AVI文件。 l ICM:压缩管理器,用于管理的视频压缩/解压缩的编译码器。 l ACM:音频压缩管理器,提供与 ICM相似的服务,适用于波形音频。 其中13.4节所有的实例主要使用AVICAP32.DLL中的函数和 USER32.DLL中的函数,函数语法及结构如下。 (1)capCreateCaptureWindow函数 该函数用于创建一个视频捕捉窗口。语法如下: [DllImport("avicap32.dll")] public static extern IntPtr capCreateCaptureWindowA(byte[] lpszWindowName, int dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int nID); 参数说明如下。 l lpszWindowName:标识窗口的名称。 l dwStyle:标识窗口风格。 l x、y:标识窗口的左上角坐标。 l nWidth、nHeight:标识窗口的宽度和高度。 l hWnd:标识父窗口句柄。 l nID:标识窗口ID。 l 返回值:视频捕捉窗口句柄。 (2)SendMessage函数 用于向 Windows系统发送消息机制。 [DllImport("User32.dll")] private static extern bool SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam); 参数说明如下。 l hWnd:窗口...