摘 要:随着全球经济一体化的迅速发展,各大企业纷纷在世界各地建立分支机构,如何加强各分支机构之间的联系和对企业决策作出迅速反应成为了一个难题。为此,介绍了以VC++.NET为开发平台,应用面向对象程序设计语言C++和关系型数据库SQL Server 2000开发的远程视频会议软件。软件利用VC++中的ADO数据库对象实现对SQL Server 2000数据库的数据访问、存储和管理,同时软件使用Microsoft提供的VFW数字视频软件包来捕获、播放和编辑视频。软件通过摄像头进行图像的摄录,以记录形式保存在数据库中,通过数据库中的记录的管理实现对会议信息的管理。
关键词:视频会议;VC++.NET;SQL Server 2000;ADO;VFW 1 引言 收稿日期:
当今社会,信息和技术快速发展,对于企业来说,机遇稍纵即逝。而对于大型的在全国甚至世界具有很多分支机构的企业,如何加强彼此之间的信息共享,对各分支机构进行统一的通知、调整使各分支机构能够同时按照企业的整体规规划和安排进行行动成为了一个难题,因此,我们以VC++.NET为开发平台,SQL Server 2000为后台数据库,采用C++念想对象高级程序设计语言开发了一种现代化的基于VC++.NET的视频会议管理软件。该软件通过对录像对会议的全程进行跟踪和记录,把会议记录的图像信息存储到数据库中,通过管理软件对数据库中记录进行管理,实现了通过管理系统对会议的全程图像信息进行管理的目标。该软件采用Microsoft公司的VC++.NET进行开发。VC++.NET具有以下特点:以C++语言为基础,生成的可执行文件小,效率高;具有强大的调试功能;具有强大的硬件控制功能和较强的底层控制能力;具有丰富的帮助文档MSDN;对Windows系统新技术具有很好的支持。 2总体设计通过对用户的需求分析,设计了系统的框架。视频会议管理软件由视频管理、综合设置、会议管理、系统维护和系统帮助组成。设计各部分的具体功能如下:
(1)视频管理模块:该模块包括视频采集和结束采集。
(2)综合设置模块:该模块由视频格式设定、综合设定、图像截取、视频压缩和录像5部分组成。
(3)会议管理模块:该模块包括会议记录和会议查询。
(4)系统维护模块:该模块包括数据备份、数据恢复、系统初始化和自动运行4部分。
(5)系统帮助模块:该模块包括视频简介和帮助内容。
系统的结构框图见图1。
图1 系统结构图
fig.1 Structure of system 3软件设计 3.1 数据库设计系统采用SQL Server 2000数据库,系统的数据库名为DB_Video。SQL Server 2000的数据库创建有两种方式,一种是利用企业管理器,另一种是在SQL Server 2000的查询分析器中使用Transact-SQL语句来创建[1]。这里,采用第二种方法。数据库DB_Video的创建过程如下:
CREATE DATABASE DB_Video
USE DB_Video
这样,便创建了DB_Video数据库。然后,使用CREATE TABLE语句创建DB_Video数据库中的会议信息表(tb_conference)和登录信息表(tb_login)。两个表的结构分别见表1和表2。
表1 会议信息表
Table 1 Information of conference 数据名称 字段名 字段类型 字段大小 会议主题 subject varchar 30 主持人 compere varchar 30 成员 member text 16 时间 timedate datatime 8 表2 登录信息表
Table 2 Information of login 数据名称 字段名 字段类型 字段大小 操作员名称 m_name varchar 30 操作员密码 m_password varchar 30 操作员级别 m_level int 4 3.2 构建数据库框架系统采用单文档/视图结构框架。设计步骤如下:
< >打开VC++.NET,依次选择菜单“file-new”,打开new窗口。选择“projects”选项卡。在new窗口中选择“MFC AppWizard(exe)”选项,在“project name”编辑框中输入项目名称“Video”,单击“OK”按钮进入MFC AppWizard-Step1窗口。选择“Single document”选项,表示创建的是单文档/视图结构应用程序,单击“Finish”按钮创建应用程序框架。p_Con.CreateInstance(_uuidof(Command));
p_Record.CreateInstance(_uuidof(Recordset));
}
catch()
{
return false;
}
return true;
} 3.4 视频采集视频采集用于在程序中显示摄像头捕捉的信息。本系统采用Microsift公司的VFW数字视频软件包。VFW提供了VBX和AVICap窗口类的高级编程工具,可方便我们通过发送消息和设置属性来捕获、播放和编辑视频。运行效果如图2。
图2 视频会议管理系统
Fig.2 The system of video conference management
系统对视频的控制是通过类CCapture_Main实现的[3]。在类CCapture_Main中定义变量m_display,通过调用变量m_dispaly的EnablePreviewVideo()方法进行视频采集。具体代码为:
void CMainFrame::OnSetDisplay()
{
m_showed=true;
CRect m_rectview;
this->GetClientRect(m_rect);
CWnd* tempview=m_splitter.GetPane(0,0);
tempview->GetClientRect(m_rectview);
m_display.EnablePreviewVideo(m_hWnd,
m_rectview.right+10,m_rect.top+60,
m_rect.right,m_rect.bottom);
} 3.5 视频录像视频录像用于将摄像头捕捉到的信息以AVI格式保存到磁盘中。AVI文件格式是一种RIFF指定的应用程序,用来对音频/视频流进行捕捉。
视频录像是通过函数OnCapture()实现的。主要是通过其m_display对象的CaptureAVI方法进行录像。实现代码为:
void CMainFrame::OnCapture()
{
CString Filter;
CString Filename;
Filter="AVI Files(*.avi)︱*avi︱";
CFileDialog FileDlg(FALSE,
"avi",NULL,OFN_HIDEREADONLY︱
OFN_OVERWRITEPROMPT,Filter,this);
if(FileDlg.DoModal()==IDOK)
{
Filename=FileDlg.GetPathName();
m_display.CaptureAVI(Filename,4.0,
30,10);
}
} 3.6 会议记录会议记录用与记录会议的主题、主持人、参加成员、时间等信息。
会议记录的功能是通过类CConference实现的。它通过函数InfoIsNull()判断用户输入的信息是否为空,若为空,返回TRUE,否则返回FALSE,然后使用Connection对象的Execute方法执行SQL语句来保存信息到数据库中[4]。部分代码为:
sql.Format("insert into tb_conference
values(‘%s’, ‘%s’, ‘%s’, %s’)
",c_sub,c_compere,c_member,c_time);
try
{
dataManage.p_Con->Execute((bstr_t)sql,
NULL,adCmdText);
AfxMessageBox("操作成功",MB_OK︱MB_ICONINFORMATION);