VC++实现视频捕获编程
2010-07-20 20:45:00 来源:WEB开发网在桌面视频会议、可视电话等多媒体应用中,获得数字视频是一个关键的前提。在VideoforWindows(VFW)出现之前,捕获数字视频是一项极其复杂的工作。Microsoft的VisualC++自从4.0版就开始支持VideoforWindows(简称VFW),这给视频捕获编程带来了很大的方便。关于多媒体应用开发,市面流行资料中介绍较多的是MCI(媒体控制接口),而本文着重介绍的是如何使用VisualC++提供的AVICap窗口类进行视频捕获以及其中涉及到的概念和关键问题。
一、VideoforWindows简介
VFW是Microsoft1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。
VFW给程序员提供.VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或
设置属性来捕获、播放和编辑视频剪辑。现在用户不必专门安装VFW了,Windows95本身包括了VideoforWindows1.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相似的服务,不同的是它适于波形音频。
VisualC++在支持VFW方面提供有vfw32.lib、msacm32.lib、winmm.lib等类似的库。特别是它提供了功能强大、简单易行、类似于MCIWnd的窗口类AVICapAVICap
为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。
更多精彩
赞助商链接