没有合适的资源?快使用搜索试试~ 我知道了~
首页使用VC进行VFW视频捕获笔记
资源详情
资源评论
资源推荐

视频捕获笔记
目 录
一. 视频捕获快速入门
二.基本的捕获设置
1.设置捕获速度
2.设置终止捕获
3.捕获的时间限制
三.关于捕获窗口
1.创建一个 AVICAP 捕获窗口
2.将一个捕获窗口连接至捕获设备
3.父窗口与子窗口的交互
4.捕获窗口的状态
四.视频捕获驱动和音频驱动
1.视频捕获驱动的性能
2.视频对话框
3.PREVIEW 和 OVERLAY 模式
4.视频格式
5.视频捕获设置
6.声频格式
五.使用视频捕获
1.创建捕获窗口(CREATING A CAPTURE WINDOW)
2.连接到捕获驱动(CONNECTING TO A CAPTURE DRIVER)

3. 列 举 所 有 已 安 装 的 捕 获 驱 动 (ENUMERATING INSTALLED CAPTURE
DRIVERS)
4.得到捕获驱动的性能(OBTAINING THE CAPABILITIES OF A CAPTURE
DRIVER)
5. 得 到 捕 获 窗 口 的 状 态 (OBTAINING THE STATUS OF A CAPTURE
WINDOW)
6.显示对话框设置视频特征(DISPLAYING DIALOG BOXES TO SET VIDEO
CHARACTERISTICS)
7.得到和设置视频格式(OBTAINING AND SETTING THE VIDEO FORMAT)
8. 预览视频(PREVIEWING VIDEO)
9.将视频设置为 OVERLAY 模式(ENABLING VIDEO OVERLAY)
10.命名捕获文件(NAMING THE CAPTURE FILE)
11.格式化声频捕获(FORMATTING AUDIO CAPTURE)
12.改变视频捕获设置(CHANGING A VIDEO CAPTURE SETTING)
13.捕获数据(CAPTURING DATA)
14.增加一个信息块(ADDING AN INFORMATION CHUNK)
15.在程序中加入一个回调函数(ADDING CALLBACK FUNCTIONS TO AN
APPLICATION)
16.创建一个状态回调函数(CREATING A STATUS CALLBACK FUNCTION)
17. 创 建 一 个 错 误 回 调 函 数 ( CREATING AN ERROR CALLBACK
FUNCTION)
18.创建一个框架回调函数(CREATING A FRAME CALLBACK FUNCTION)
六.将四个标准对话框改成函数调用形式
AUDIOFORMAT 对话框
VIDEOFORMAT 对话框
VIDEOSOURCE 对话框

VIDEO COMPRESSION 对话框
前 言
视频捕获是指由专用的视频采集卡捕获声频和视频信息,然后将其进行数据化处
理,再经过软件的压缩进行处理,这时就可对这些数据进行保存、回放、传输等
各种操作。
Windows 专门提供了 Video for Windows 来对视频处理进行支持,提供的接口
可以被大多数的视频采集卡支持,并有多种视频压缩驱动供选择(当然视频压缩
可以自己开发),采集卡支持摄像头,TV等多种输入。
一. 视频捕获快速入门
视频捕捉将一个视频流和音频流数字化, 然后存储在硬盘或其他存储介质上.
一个 AVICap 视窗口句柄描述了声频与视频流的细节, 这样就使你的应用程序从
AVI 文件格式, 声频视频缓冲管理, 低层声频视频驱动访问等等解脱出来, AVICap
为应用程序提供了一个灵活的介面, 你可以仅仅使用如下几行代码就可以将视频
捕捉加入你的程序:
hWndC = capCreateCaptureWindow ( "My Own Capture Window",
WS_CHILD | WS_VISIBLE , 0, 0, 160, 120, hwndParent, nID);
SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0 /* wIndex */,
0L);
SendMessage (hWndC, WM_CAP_SEQUENCE, 0, 0L);
一个宏其实也是使用 SendMessage, 只不过提供给程序一个更易读的代码而已,
下面的这些示例就是使用宏的方法将视频捕捉加入程序:
hWndC = capCreateCaptureWindow ( "My Own Capture Window",
WS_CHILD | WS_VISIBLE , 0, 0, 160, 120, hwndParent, nID);
capDriverConnect (hWndC, 0);
capCaptureSequence (hWndC);

当你创建了一个 AVICap 类的捕捉窗口并将它连接到一个视频驱动时, 此捕捉窗
口即可以开始捕捉数据, 你的程序可以简单的发送 WM_CAP_SEQUENCE 消息
(或者使用 capCaptureSequence 宏)来开始捕捉.
如 果 是 缺 省 的 设 置 , WM_CAP_SEQUENCE 会 开 始 捕 捉 视 频 音 频 流 到
CAPTURE.AVI 文件中, 直到下面的某一事件发生为止:
用户按下了 ESC 键或者一个鼠标键
你的应用程序终止或异常中断捕捉操作
磁盘已满
在一个应用程序里, 你可以发送 WM_CAP_STOP 消息来终止捕捉数据(或者使用
capCaptureStop 宏 ), 你 也 可 以 发 送 WM_CAP_ABORT 消 息 ( 或 者 使 用
capCaptureAbort 宏)来终止.
二.基本的捕获设置
基本的捕获设置包括:设置捕获速度(每秒捕获多少帧),是否同时捕获声频,
捕获缓冲,允许最大丢失多少帧,是否使用DOS内存,以及用键盘的哪个键或
鼠标的哪个键来终止捕获等等。这些基本的设置都可以使用CAPTUREPA
RAMS结构来描述,你可以使用 capCaptureGetSetup 宏来得到当前的设置,
然后改变此结构的成员变量,再使用 capCaptureSetSetup 宏设置新的设置。
例如:
1.设置捕获速度:
捕 捉 速 度 是 指 捕 捉 任 务 每 秒 钟 捕 获 的 帧 数 , 你 可 以 发 送
WM_CAP_GET_SEQUENCE_SETUP 消 息 ( 或 者 使 用 capCaptureGetSetup
宏)来得到当前的捕捉速度, 当前的捕捉速度保存在 CAPTUREPARAMS 结构的
dwRequestMicroSecPerFrame 成员变量中, 你可以通过设置此变量来改变当
前 设 置 , 单 位 是 每 毫 秒 连 续 的 帧 数 , 你 可 以 发 送
WM_CAP_SET_SEQUENCE_SETUP 消息(或者使用 capCaptureSetSetup 宏),
dwRequestMicroSecPerFrame 的值是 66667, 相当于每秒 15 帧.
2.设置终止捕获
你可以允许用户按下某键或某组合键或者鼠标的左右键来终止一个捕获任务, 如
果是实时的捕获, 则捕获的文件将会被丢弃; 如果是单步捕获, 在终止之前所捕获

的内容将会被保存.
你 可 以 通 过 发 送 WM_CAP_GETQUENCE_SETUP 消 息 ( 或 者 使 用
capCaptureGetSetup 宏 ) 来 得 到 当 前 的 设 置 , 当 前 的 按 键 设 置 保 存 在
CAPTUREPARAMS 的 vKeyAbort 成 员 中 , 当 前 的 鼠 标 设 置 保 存 在
fAbortLeftMouse 和 fAbortRightMouse 成员中. 你可以设置新的按键或按键
组 合 , 或 者 鼠 标 左 右 键 , 当 你 修 改 的 CAPTUREPARAMS 后 , 应 该 发 送
WM_CAP_SET_SEQUENCE_SETUP 消 息 来 进 行 更 新 ( 或 者 使 用
capCaptureSetSetup 宏). 缺省的按键是 VK_ESCAPE. 你必须在指定按键之前
使 用 RegisterHotKey 函 数 , 鼠 标 缺 省 的 值 是 fAbortLeftMouse 和
fAbortRightMouse 都为 TRUE.
3.捕获的时间限制
CAPTUREPARAMS 结 构 中 的 fLimitEnabled 指 示 是 否 有 时 间 限 度 ,
wTimeLimit 指示最大的持续时间, 单位为秒.
得 到 fLimitEnabled 和 wTimeLimit 的 值 可 以 发 送
WM_CAP_GET_SEQUENCE_SETUP 消 息 ( 或 使 用 capCatureGetSetup 宏 ),
当设置了这些成员变量后, 应该发送消息 WM_CAP_SET_SEQUENCE_SETUP
消息(或 capCaptureSetSetup 宏)来更新 CAPTUREPARAMS 结构.
三.关于捕获窗口
在捕获之前必须创建一个捕获窗口(capture window),在发送消息或使用宏
的过程中都需要使用此窗口。
1.创建一个 AVICap 捕获窗口
你可以使用 capCreateCaptureWindow 函数来创建一个 AVICap 捕获窗口, 此
函数将会返回一个句柄, 此句柄以后在发送消息时要用.
你可以在一个程序里创建一个或多个捕获窗口, 然后给每一个窗口连接不同的捕
获设置.
2.将一个捕获窗口连接至捕获设备
你可以动态的在一个捕获窗口与一个捕获设备之前连接或断接 , 你可以发送
WM_CAP_DRIVER_CONNECT 消息来使一个捕获窗口与一个捕获设备连接或关
联. 当连接上以后, 你就可以通过捕获窗口向捕获设备发送各种消息.
如 果 你 的 系 统 里 装 有 多 个 捕 获 设 备 , 你 可 以 在 发 送
剩余22页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论2