VC419 局域网的视频聊天室系统VC+

1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
本文介绍了采用Microsoft Visual C++ 6.0编程开发视频聊天系统的一套比较常用的解决方案。文字聊天采用TCP模式;语音视频聊天采用UDP模式,在客户端之间点对点的进行。在该方案中,通过函数库VFW来实现视频捕获、影像压缩以及影像播放。微软公司提供的专门用于视频捕获开发的工具包VFW,为在Windows操作系统中实现视频捕获提供了标准的接口,从而大大降低了程序的开发难度。在视频传输方面,则通过组建视频帧,将位图形式的视频帧压缩成帧格式的Mpeg4流,传输到客户端后,解压并显示影像。同时,在本方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转的文字聊天、点对点的语音视频聊天。
〖本文来自:计算机毕业网 〗
目 录
论文总页数:24页 内容来自think58 [资料来源:http://think58.com]
1 引言 1
1.1 课题背景 1
1.2 国内外研究现状 1
2 理论知识介绍 1
2.1 VFW简介 1
2.2 线程的实现方法 4
3 需求分析 5
3.1 软硬件环境 5
3.2 需求分析 5
4 系统结构 7
4.1 硬件结构 7
4.2 软件结构 7
4.2.1 功能需求 7
4.2.2 系统功能模块图 8
4.3 系统各模块流程图 8
5 系统的详细设计 10
5.1 文字聊天 10
5.1.1 TCP套接字的运用 10
5.1.2 文字聊天实现 11
5.2 语音视频聊天 13
5.2.1 UDP套接字的运用 13
5.2.2 视频的捕获 14
5.2.3 捕获窗口 16
5.2.4 视频捕获驱动 18
5.2.5 语音录制 18
5.2.6 语音回放 19
5.2.7 视音频的传输 20
结 论 21
参考文献 22
致 谢 23
声 明 24 copyright think58 [资料来源:www.THINK58.com]
VFW是Microsoft 1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在AVI文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。用户不必专门安装VFW,在安装Windows时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。
VFW主要由以下六个模块组成:
(1) AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件、I/O和视频音频设备驱动程序提供一个高级接口;
(2) MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作;
(3) MCIAVI.DRV:此驱动程序包括对VFW的MCI命令的解释器; 本文来自think58
void CChatClientDlg::OnChatBtSend() //发送信息按键
{
if( !m_bConnect)
{
SetMessageBox("请连接服务器!\r\n");
return ;
}
CString str;
CString szUserName;
CMesg msg;
GetDlgItemText(IDC_MESSAGE,str);
GetDlgItemText(IDC_USERNAME,szUserName);
if( str.GetLength() <= 0 )
{
SetMessageBox("请输入想要发送的信息!\r\n");
return ;
}
if ( szUserName.GetLength() <= 0)
{
SetMessageBox("请选择说话对象!\r\n");
return ;
}
//消息封装
msg.m_szCommand.Format("Message");
msg.m_szRecObject.Format(szUserName);
msg.m_szText.Format(str);
m_csClient->SendM(&msg);
AddReceiver(szUserName , true);
AddChatMessage(str);
}〖本文来自:计算机毕业网 〗
在聊天两个客户端的信息情况如图8和图9。
think58 [资料来源:http://think58.com]
[资料来源:http://THINK58.com]
基本的捕获设置包括设置捕获速度(每秒捕获多少帧)、是否同时捕获声频、捕获缓冲、允许最大丢失多少帧和是否使用DOS内存,以及使用键盘的哪个键或鼠标的哪个键来终止捕获等内容,这些设置使用CAPTUREPARAMS结构来描述,capCaptureGetSetup宏来得到当前的设置,然后改变此结构的成员变量,再使用capCaptureSetSetup宏设置新的设置。
设置捕获速度,通过使用capCaptureGetSetup宏来得到当前的捕捉速度,将当前的捕捉速度保存在CAPTUREPARAMS结构的dwRequestMicroSecPerFrame成员变量中,也可以通过设置此变量来改变当前设置值。
设置终止捕获,同样通过使用capCaptureGetSetup宏来得到当前的设置,当前按键设置保存在CAPTUREPARAMS结构的vKeyAbort成员中,鼠标设置保存在fAbortLeftMouse和fAbortRightMouse成员中,通过修改可以设置新的热健或者鼠标左右键,修改完成后,使用capCaptureSetSetup宏来进行更新。
捕获的时间限制,用CAPTUREPARAMS结构中的fLimitEnabled表示捕获是否有时间的限制,wTimeLimit用来设置指示捕获最大的持续时间,其单位为秒。使用capCaptureGetSetup宏来得到当前的设置值。 [资料来源:http://www.THINK58.com]
参考文献
[1] 谢希仁.计算机网络[M].北京:电子工业出版社,2004。
[2] W. Richard Stevens.TCP/IP详解[M].北京:机械工业出版社,2005。
[3] 张炯.Unix网络编程[M].北京:清华大学出版社,2002。
[4] 求是科技,王正军.Visual C++ 6.0从入门到精通[M].北京:人民邮电出版社,2006。
[5] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006。
[6] 陈坚,陈伟.Visual C++ 网络高级编程[M].北京:人民邮电出版社,2001。
[7] 吴志军.Visual C++视频会议开发技术与实例[M].北京:人民邮电出版社,2006。
think58好,好think58
[版权所有:http://think58.com]