多媒体聊天室

上传人:今*** 文档编号:108085617 上传时间:2019-10-22 格式:DOC 页数:23 大小:427.35KB
返回 下载 相关 举报
多媒体聊天室_第1页
第1页 / 共23页
多媒体聊天室_第2页
第2页 / 共23页
多媒体聊天室_第3页
第3页 / 共23页
多媒体聊天室_第4页
第4页 / 共23页
多媒体聊天室_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《多媒体聊天室》由会员分享,可在线阅读,更多相关《多媒体聊天室(23页珍藏版)》请在金锄头文库上搜索。

1、 网络聊天室网络聊天室 摘摘 要要 视频聊天系统作为一种新型的通信和交流工具,突破了地域的限制,可以 提供更为便捷、灵活、全面的音、视频信息的传递和服务,具有极其广泛的发 展前景。 本文介绍了采用 Microsoft Visual C+ 6.0 编程开发视频聊天系统的一套 比较常用的解决方案。文字聊天采用 TCP 模式;语音视频聊天采用 UDP 模式, 在客户端之间点对点的进行。在该方案中,通过函数库 VFW 来实现视频捕获、 影像压缩以及影像播放。微软公司提供的专门用于视频捕获开发的工具包 VFW,为在 Windows 操作系统中实现视频捕获提供了标准的接口,从而大大降低 了程序的开发难度。

2、在视频传输方面,则通过组建视频帧,将位图形式的视频 帧压缩成帧格式的 Mpeg4 流,传输到客户端后,解压并显示影像。同时,在本 方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转 的文字聊天、点对点的语音视频聊天。 关键词关键词:文字聊天;VFW;视频捕获;视频传输;语音录制;语音回放 目目 录录 1引言1 1.1课题背景1 1.2国内外研究现状1 2理论知识介绍1 2.1VFW 简介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系

3、统各模块流程图8 5系统的详细设计10 5.1文字聊天10 5.1.1TCP 套接字的运用.10 5.1.2文字聊天实现.11 5.2语音视频聊天13 5.2.1UDP 套接字的运用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 1 1 引言引言 1.11.1 课题背景课题背景 随着 Internet 的不断发展普及,网络通讯越来越被千家万户所接受,成为 人们生活中的一部分。网络聊天已和手机等一样,成为人们运用最为广泛的通 信工具之一。本毕业设计的目的主要是为了满足人们通

4、讯交流的便捷,实现灵 活、全面的音、视频信息的传递和服务。模拟腾讯公司的 QQ 聊天软件,开发一 个多功能的聊天系统软件,本毕业设计主要实现视频语音聊天、文字聊天等功 能。 1.21.2 国内外研究现状国内外研究现状 随着网络宽带业务的推广与普及,加之视频产品设备(如摄像头、耳机、 麦克风等)的成熟,普通用户可以轻松地借助网络视频通讯软件,实现“面对 面”的网络交流。信息的无限量扩大,交通工具的便捷,视频技术的充分应用 等导致了行业间竞争的全球化,这就要求现代部门、企业要具备更加灵敏的神 经,更扁平化的管理,更快速的反应和决策,更贴切的市场宣传和服务。所有 这一切是由信息技术的发展所带来的,同

5、样也要求有先进的信息技术来提高部 门、企业的竞争力。现代通讯已经是越来越普及了,必须有效合理的运用视频 产品类设备来提高信息的传递和交流。在同一个局域网中,充分、合理的运用 摄像头、耳机、麦克风等设备来实现文字聊天和语音视频聊天更是我们生活、 学习、工作的便利所在。 2 2 理论知识介绍理论知识介绍 2.12.1 VFWVFW 简介简介 VFW 是 Microsoft 1992 年推出的关于数字视频的一个软件包,它能使应用 程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW 的一个关键思想是 播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行 压缩。它引进了一种叫 AVI

6、 的文件标准,该标准未规定如何对视频进行捕获、 压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在 AVI 文件中交替 存储视频帧和与之相匹配的音频数据。VFW 给程序员提供 VBX 和 AVICap 窗口类 的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视 频剪辑。用户不必专门安装 VFW,在安装 Windows 时,安装程序会自动地安装 配置视频所需的组件,如设备驱动程序、视频压缩程序等。 VFW 主要由以下六个模块组成: (1) AVICAP.DLL:包含了执行视频捕获的函数,它给 AVI 文件、I/O 和 视频音频设备驱动程序提供一个高级接口; (2) MSVI

7、DEO.DLL:用一套特殊的 DrawDib 函数来处理屏幕上的视频操 作; (3) MCIAVI.DRV:此驱动程序包括对 VFW 的 MCI 命令的解释器; (4) AVIFILE.DLL:支持由标准多媒体 I/O(mmio)函数提供的更高的命 令来访问 AVI 文件; (5) 压缩管理器(ICM):管理用于视频压缩/解压缩的编解码器 (CODEC) ; (6) 音频压缩管理器 ACM:提供与 ICM 相似的服务,不同的是它适于波 形音频。 Visual C+在支持 VFW 方面提供有 vfw32.lib、msacm32.lib、winmm.lib 等库。特别是它提供了功能强大、简单易行、

8、类似于 MCIWnd 的窗口类 AVICap。AVICap 为应用程序提供了一个简单的、基于消息的接口,使之能访问 视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。 AVICap 支持实时的视频流捕获和单帧捕获,并提供对视频源的控制。虽然 MCI 也提供数字视频服务,比如,它为显示 AVI 文件的视频提供了 AVIVideo 命 令集,为视频叠加提供了 overlay 命令集,但这些命令主要是基于文件的操作, 不能满足实时地直接从视频缓存中获取数据的要求。对于使用没有视频叠加能 力的捕获卡的 PC 机来说,用 MCI 提供的命令集是无法捕获视频流的。而 AVICap 在捕获视频

9、方面具有一定的优势,它能直接访问视频缓冲区,不需要生 成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获到文件。 在视频捕获之前需要创建一个捕获窗,所有的捕获操作及其设置都以它为 基础。用 AVICap 窗口类创建的窗口(通过 capCreateCaptureWindow 函数创建) 被称为“捕获窗” ,其窗口风格一般为 WS_CHILD 和 WS_VISIBLE。实际上,捕获 窗类似于标准控制(如按钮、列表框等) 。捕获窗具有下列功能: (1) 将视频流和音频流捕获到一个 AVI 文件中; (2) 动态地同视频和音频输入器件连接或断开; (3) 以 Overlay 或 Previe

10、w 模式对输入的视频流进行实时显示; (4) 在捕获时可指定所用的文件名并能将捕获文件的内容拷贝到另一个 文件; (5) 设置捕获速率; (6) 显示控制视频源、视频格式、视频压缩的对话框; (7) 创建、保存或载入调色板; (8) 将图像和相关的调色板拷贝到剪贴板; (9) 将捕获的一个单帧图像保存为 DIB 格式的文件。 AVICap 在显示视频时提供的两种模式: (A)预览(Preview)模式:该模式使用 CPU 资源,视频帧先从捕获硬件 传到系统内存,接着采用 GDI 函数在捕获窗中显示。在物理上,这种模式需要 通过 VGA 卡在监视器上显示。 (B)叠加(Overlay)模式:该模

11、式使用硬件叠加进行视频显示,叠加视 频的显示不经过 VGA 卡,叠加视频的硬件将 VGA 的输出信号与其自身的输出信 号合并,形成组合信号显示在计算机的监视器上。只有部分视频捕获卡才具有 视频叠加能力。 灵活编写 AVICap 提供的回调函数还可满足一些特殊需求。比如,将宏 capCaptureSequenceNoFile 同用 capSetCallbackOnVideoStream 登记的回调函 数一起使用,可使应用程序直接使用视频和音频数据。在视频聊天的应用程序 中可利用这一点来获得视频帧,回调函数将捕获的图像传到远端的计算机。应 用程序可用捕获窗来登记回调函数(由用户编写,而由系统调用)

12、 ,以便在发生 下列情况时,它能通知应用程序,作出相应的反应:捕获窗状态改变;出错; 视频帧和音频缓存可以使用;在捕获过程中,其它应用程序处于让步(Yield) 地位。 视频捕获编程也要用到涉及视频捕获的结构、宏、消息和函数。令人高兴 的是,发送 AVICap 窗口消息所能完成的功能都能调用相应的宏来完成。例如, SendMessage(hWndCap,WM_CAP_DRIVER_CONNECT,0,0L)与 capDriverConnect(hWndCap,0)的作用相同,都是将创建的捕获窗同视频输入 器件连接起来。 视频部分主要是利用 Video Capture 函数库来获取影像的。Vid

13、eo Capture 主要提供下列功能:连接驱动程序;获取影像、声音资料,并显示在屏幕上或 者是存成 AVI 文件;获取单张影像显示在屏幕上,拷贝至剪贴簿,或者是存成 DIB(Device-Independent Bitmap)文件。 Video Capture 的主要结构: 结构体 CAPTUREPARAMS 主要包含一些获取图像的参数:DWORD dwRequestMicroSecPerFrame 代表相邻两个 frame 的获取时间间隔;BOOL fYield 值为 TRUE,则表示 Windows 会以另一个 thread 来捕获影像,值为 FALSE,程序会在捕捉影像后显示忙碌状态;

14、BOOL fCaptureAudio 其值表示是 否需要同时获取声音资料。 结构体 BITMAPINFO 和点阵图有关,主要定义了影像获取之后显示在屏幕上、 存储在文件中的格式,它包含两个成员:BITMAPINFOHEADER bmiHeader 描述影 像性质的结构,其成员记载了影像的大小、颜色深度和压缩的方式,该成员在 Video Capture、Video Compression Manager 和 DrawDib 函数库中,以及有关 于点阵图的应用中;RGBQUAD bmiColors 指向 color table 第一个元素的位置。 结构体 COMPVARS 主要是记录所有和压缩相关

15、的信息,重要的成员:DWORD fccHandler 为 compressor 句柄;LPBITMAPINFO lpbiIn 指向待压缩影像 BITMAPINFO 的指标;LPBITMAPINFO lpbitOut:指向压缩完影像 BITMAPINFO 的 指标;LONG lKey 代表 key-frame rate,而所谓 key frame 是指此 frame 在解压 缩时不需要依赖前面的 frame;LONG lQ 代表影像压缩后的品质,取值为 110000 的整数。 Video Compression Functions 主要记录压缩功能相关的信息,其包含的 比较重要的成员:ICLoc

16、ate 输入指向压缩前后 BITMAPINFO 的指标,以及欲使 用的 codecs;ICCompressorChoose 呼叫一个系统内建的对话,其中包含所有可 能使用的 codes 以及其相关参数;ICCompressQuery 询问 compressor 是否支持 某种压缩方式,输入参数为 compressor handle 及指向压缩前后 BITMAPINFO 的 指标,此函数会传回询问结果;ICCompressBegin 要求系统准备相关资源以供 压缩之用;ICCompress 压缩某个 frame;ICCompressEnd 归还相关资源给系统; ICDompressQuery 询问 decompressor 是否支持某种解压缩方式; ICDompressBegin 要求系统准备相关资源以供解压缩之用;ICDompress 解压缩 某一个 frame;ICDompressEnd 归还相关资源给系统;ICDompressFree 归还 COMPVARS 所占用的资源。 2.22.2 线程的实现方法线程的实现方法 线程是一个独立的执

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号