理论教育 通道屏幕视频录制类设计成果

通道屏幕视频录制类设计成果

时间:2023-11-25 理论教育 版权反馈
【摘要】:通道屏幕视频录制主要是利用Windows 系统的vfw32.lib 库,继承通道订阅类的功能,在vpChannel::EVENT_POST_DRAW 事件中完成帧数据的提取。这些信息在类的构造函数中都进行了初始化,某些指针变量在析构函数中进行了处理。第五步,视频写入操作主要在下面这个事件响应函数中完成,其功能主要是锁定帧数据,抓取写入视频流,解锁,其代码如下:具体代码如图9.7.1所示。图9.7.1通道屏幕视频录制功能设计

通道屏幕视频录制类设计成果

通道屏幕视频录制主要是利用Windows 系统的vfw32.lib 库,继承通道订阅类的功能,在vpChannel::EVENT_POST_DRAW 事件中完成帧数据的提取。

通道屏幕视频录制类的设计,第一步需要使用系统的较多功能,需要引入以下几个头文件:

#include <windows.h>

#include <windowsx.h>

#include <memory.h>

#include <wingdi.h>

#include <mmsystem.h>

#include <vfw.h>

#include <GL/gl.h>

并导入vfw32 库:

//Automatically link in vfw32.lib

#pragma comment(lib,"vfw32.lib")

#pragma message("Will automatically link with " "vfw32.lib")

第二步,需要定义较多的私有变量,用于处理视频的相关信息:

依次包含状态、帧数目、视频宽度、视频高度、图像存储指针、操作锁、视频文件名、视频流指针、压缩视频流指针、视频流文字、BITMAP 信息头。这些信息在类的构造函数中都进行了初始化,某些指针变量在析构函数中进行了处理。(www.daowen.com)

第三步,在配置函数中配置相关功能:

int configure(const char* fileName,int fpsRate,bool compressionDialog,int winWidth,int winHeight);

所带5个函数依次为视频文件名、帧率、压缩与否对话框、宽度和高度,函数功能主要是调用 AVI 相关函数完成配置, AVIFileCreateStream 函数创建 AVI 视频流,AVIMakeCompressedStream 使用AVI 视频压缩流,AVIStreamSetFormat 设置视频流格式。

第四步,视频帧的抓取函数“captureFrame();”主要调用了glReadPixels 读取帧数据,使用AVIStreamWrite 把帧数据写入视频文件。

第五步,视频写入操作主要在下面这个事件响应函数中完成,其功能主要是锁定帧数据,抓取写入视频流,解锁,其代码如下:

具体代码如图9.7.1所示。

图9.7.1 通道屏幕视频录制功能设计

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈