武汉理工大学 多媒体大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多媒体网络通信技术大作业
1、题目:基于局域网的可视对讲系统设计
2、系统开发环境与工具:
(1)、硬件环境:实验室局域网
(2)、软件环境:WindowsXP操作系统
(3)、开发工具:自己熟悉的面向对象的网络通信编程工具与平台,相关音频、视频编码与传输协议类库
3、要求与评分标准:
(1)要求:在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。
(2)评分标准
目录
摘要 (1)
1.软件开发工具 (2)
1.1 WIN32 SDK编程 (2)
1.2 TCP/IP协议及WINDOWS SOCKETS 网络编程接口 (3)
1.2.1 TCP/IP协议简介 (3)
1.2.2 Windows Socket 网络编程简介 (4)
1.3 VC++ 6.0 简介 (4)
1.4 Video for Windows简介 (5)
1.5 G729.dll的简介 (5)
1.6 LanMsgLibrary.dll的简介 (6)
2.系统原理分析 (7)
2.1系统原理概述 (7)
2.2关键技术分析 (7)
3.系统总体方案设计 (8)
3.1系统功能模块图 (8)
3.2 语音聊天过程分析 (9)
3.3视频聊天过程分析 (10)
4.系统具体设计 (11)
4.1 语音视频聊天的实现 (11)
4.2 视频的捕捉 (11)
4.3 窗口的捕捉 (14)
4.4 视频捕获驱动 (16)
4.5 语音录制 (16)
4.6 语音播放 (17)
4.7 视音频的传输 (19)
5.系统测试与评价 (20)
5.1 测试 (20)
5.2测试结果分析 (21)
6.心得体会 (22)
7.参考文献 (23)
摘要
随着互联网技术的飞速发展,基于网络的即时通信给人们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流,比如腾讯公司的QQ聊天软件。本次设计就是开发一个包括语音及视频交流等功能的聊天软件。
本设计的开发采用VC++编程语言进行本软件的开发。本文对开发环境和开发语言进行了简单介绍;对本设计所要开发的多功能聊天软件作了较为详细的需求分析,并给出了多功能聊天软件的设计方案,主要功能包括文字聊天、语音聊天及视频聊天等;本次设计主要实现的是多功能聊天软件的部分功能,即语音聊天、视频聊天等功能,主要实现用户注册、用户登录、用户之间语音、视频聊天功能;与另一位同学开发实现的文字聊天与文件传输模块集成在一起,构成一个实用的、功能完善的聊天软件,达到预期目标;通过运行、测试与分析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。
关键词:聊天软件;视频聊天;语音聊天;VC++
1.软件开发工具
1.1 WIN32 SDK编程
所谓的Win32开发,就是在C++语言的层面上,直接使用Win32 API (Application Programming Interface:系统开放出来,给程序员使用的接口。)开发Windows应用程序或者系统程序。
所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的Win32 SDK方式编程的基本思路或者说是一个框架。
一个Windows程序分为程序代码和UI(User Interface 用户界面)资源两大部分,两部分最后以RC编译程序编译为一个完整的EXE文件。
所谓UI资源是指功能菜单、对话框外貌、程序图标、光标形状等等。这些UI资源的实际内容借助各种工具产生,并以各种扩展名存在,如 .ico .bmp .cur 等等。程序员必须在一个所谓的资源描述档(.rc )中描述它们。RC编译器( RC.EXE )读取RC 文件的描述后将所有UI资源文件集中制作出一个.Res资源文件,再与程序代码结合在一起,这才是一个完整的 Windows可执行文件。
1.WinMain函数
main()函数是C++程序的进入点,而WinMain函数则是Windows程序的进入点。
2. Msg结构体
定义了一个Msg结构体,是Windows内设的一种数据格式, 在Windows程序中,消息是由MSG结构体来表示的。
3. 注册窗口
RegisterClass()完成注册窗口类的功能,设定窗口的属性:边框、颜色、标题、位置等等。
4. 创建窗口
CreateWindow函数可以用于创建父窗口、弹出窗口以及子窗口,在创建窗口时它可以确定窗口类、窗口标题、窗口风格、大小以及初始化位置。
5. 显示窗口
创建窗口后需要使用ShowWindow函数用于显示窗口。
6、刷新窗口
调用UpdateWindow函数来刷新窗口。
7. 消息循环
初始化工作完成后,WinMain进入所谓的消息循环,使用while循环,不断的GetMessage,再使用TranslateMessage将消息转化,用DispatchMessage将消息传递给窗口函数去处理。
8. 获取消息
GetMessage功能函数从消息队列中获取消息,如果消息队列中没有消息,此功能函数则会一直等得消息。
9. 转换消息
将特定的消息转换为不同的消息,例如消息队列中同时有WM_KEYDOWN和
WM_KEYUP消息时,意味着用户同时按下了键盘上的某几个键,此时TranslateMessage将其转换为一个WM_CHAR消息。
10. 将消息发送到回调函数
DispatchMessage通过USER模块的协助将消息送到该窗口的窗口函数去了,但是DispatchMessage并没有指定函数名,却可以将消息传送过去,这是因为消息发生的时候,OS已经根据当时状态,为它标明了所属窗口,而窗口所属的窗口类亦是明确的。
11. WinMain函数返回值
return msg.wParam; //返回结构体变量msg中的wParam的值。
12. WindowProc窗口函数
窗口中的生命枢纽:窗口函数WindowProc。WindowProc是一个callback
函数,常利用switch/case方式判断消息的种类,以决定处理方式。
1.2 TCP/IP协议及WINDOWS SOCKETS 网络编程接口
1.2.1 TCP/IP协议简介
TCP/IP已成为当今计算机网络最成熟、应用最广的互联协议。Internet