局域网聊天室系统的设计与实现

局域网聊天室系统的设计与实现[java毕业论文下载]

基于局域网的视频聊天室系统的设计与实现

摘  要

视频聊天系统作为一种新型的通信和交流工具,突破了地域的限制,可以提供更为便捷、灵活、全面的音、视频信息的传递和服务,具有极其广泛的发展前景。

本文介绍了采用JAVA编程开发视频聊天系统的一套比较常用的解决方案。文字聊天采用TCP模式;语音视频聊天采用UDP模式,在客户端之间点对点的进行。在该方案中,通过函数库VFW来实现视频捕获、影像压缩以及影像播放。微软公司提供的专门用于视频捕获开发的工具包VFW,为在Windows操作系统中实现视频捕获提供了标准的接口,从而大大降低了程序的开发难度。在视频传输方面,则通过组建视频帧,将位图形式的视频帧压缩成帧格式的Mpeg4流,传输到客户端后,解压并显示影像。同时,在本方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转的文字聊天、点对点的语音视频聊天。

 

关键词文字聊天;VFW;视频捕获;视频传输;语音录制;语音回放

 

 

The Design and Realization of LAN-Based Video Chat Room System

Abstract

As a new tool about communication, video chatting system has broken through geographical restrictions, has provides more convenient, flexible and complete transmission and service. Furthermore, it has a very bright future.

The common solution about how to develop a video chatting system is introduced by the Microsoft Visual C + + 6.0 programming. TCP model is used in the text chatting and UDP for the point-to-point video chats between the Clients. In this plan, Video Capture, Video Compression Manager and DrawDib are realized by the functions of VFW Library. The special kit VFW (Video for Windows) in video capture offered by Microsoft Corporation, has provided a standard interface for video capture in Windows Operating System and thus greatly reduced the hardship of programming. In video transmission aspect, it requires a video frame which is compressed the video frame of bitmap into Mpeg4 steam of frame form. Then it will be decompressed into images since it has been arrived the Client. Meanwhile, the thread is used to achieve audio recording and replaying. Finally, it has realized the text chatting through a server to transit, the point-to-point audio and video chats.

 

Key words: text chatting; VFW; Video Capture; video transmission; audio recording; audio playing

 

目  录

论文总页数:24页

 

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

 

 

引言

1.1 课题背景

随着Internet的不断发展普及,网络通讯越来越被千家万户所接受,成为人们生活中的一部分。网络聊天已和手机等一样,成为人们运用最为广泛的通信工具之一。本毕业设计的目的主要是为了满足人们通讯交流的便捷,实现灵活、全面的音、视频信息的传递和服务。模拟腾讯公司的QQ聊天软件,开发一个多功能的聊天系统软件,本毕业设计主要实现视频语音聊天、文字聊天等功能。

1.2 国内外研究现状

随着网络宽带业务的推广与普及,加之视频产品设备(如摄像头、耳机、麦克风等)的成熟,普通用户可以轻松地借助网络视频通讯软件,实现“面对面”的网络交流。信息的无限量扩大,交通工具的便捷,视频技术的充分应用等导致了行业间竞争的全球化,这就要求现代部门、企业要具备更加灵敏的神经,更扁平化的管理,更快速的反应和决策,更贴切的市场宣传和服务。所有这一切是由信息技术的发展所带来的,同样也要求有先进的信息技术来提高部门、企业的竞争力。现代通讯已经是越来越普及了,必须有效合理的运用视频产品类设备来提高信息的传递和交流。在同一个局域网中,充分、合理的运用摄像头、耳机、麦克风等设备来实现文字聊天和语音视频聊天更是我们生活、学习、工作的便利所在。

理论知识介绍

2.1 VFW简介

VFW是Microsoft 1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在AVI文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供VBX和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。用户不必专门安装VFW,在安装Windows时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。

VFW主要由以下六个模块组成:

  • AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件、I/O和视频音频设备驱动程序提供一个高级接口;
  • MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作;
  • MCIAVI.DRV:此驱动程序包括对VFW的MCI命令的解释器;
  • AVIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问AVI文件;
  • 压缩管理器(ICM):管理用于视频压缩/解压缩的编解码器(CODEC);
  • 音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。

Visual C++在支持VFW方面提供有vfw32.lib、msacm32.lib、winmm.lib等库。特别是它提供了功能强大、简单易行、类似于MCIWnd的窗口类AVICap。AVICap为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。

AVICap支持实时的视频流捕获和单帧捕获,并提供对视频源的控制。虽然MCI也提供数字视频服务,比如,它为显示AVI文件的视频提供了AVIVideo命令集,为视频叠加提供了overlay命令集,但这些命令主要是基于文件的操作,不能满足实时地直接从视频缓存中获取数据的要求。对于使用没有视频叠加能力的捕获卡的PC机来说,用MCI提供的命令集是无法捕获视频流的。而AVICap在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获到文件。

在视频捕获之前需要创建一个捕获窗,所有的捕获操作及其设置都以它为基础。用AVICap窗口类创建的窗口(通过capCreateCaptureWindow函数创建)被称为“捕获窗”,其窗口风格一般为WS_CHILD和WS_VISIBLE。实际上,捕获窗类似于标准控制(如按钮、列表框等)。捕获窗具有下列功能:

  • 将视频流和音频流捕获到一个AVI文件中;
  • 动态地同视频和音频输入器件连接或断开;
  • 以Overlay或Preview模式对输入的视频流进行实时显示;
  • 在捕获时可指定所用的文件名并能将捕获文件的内容拷贝到另一个文件;
  • 设置捕获速率;
  • 显示控制视频源、视频格式、视频压缩的对话框;
  • 创建、保存或载入调色板;
  • 将图像和相关的调色板拷贝到剪贴板;
  • 将捕获的一个单帧图像保存为DIB格式的文件。

AVICap在显示视频时提供的两种模式:

(A)预览(Preview)模式:该模式使用CPU资源,视频帧先从捕获硬件传到系统内存,接着采用GDI函数在捕获窗中显示。在物理上,这种模式需要通过VGA卡在监视器上显示。

(B)叠加(Overlay)模式:该模式使用硬件叠加进行视频显示,叠加视频的显示不经过VGA卡,叠加视频的硬件将VGA的输出信号与其自身的输出信号合并,形成组合信号显示在计算机的监视器上。只有部分视频捕获卡才具有视频叠加能力。

灵活编写AVICap提供的回调函数还可满足一些特殊需求。比如,将宏capCaptureSequenceNoFile同用capSetCallbackOnVideoStream登记的回调函数一起使用,可使应用程序直接使用视频和音频数据。在视频聊天的应用程序中可利用这一点来获得视频帧,回调函数将捕获的图像传到远端的计算机。应用程序可用捕获窗来登记回调函数(由用户编写,而由系统调用),以便在发生下列情况时,它能通知应用程序,作出相应的反应:捕获窗状态改变;出错;视频帧和音频缓存可以使用;在捕获过程中,其它应用程序处于让步(Yield)地位。

视频捕获编程也要用到涉及视频捕获的结构、宏、消息和函数。令人高兴的是,发送AVICap窗口消息所能完成的功能都能调用相应的宏来完成。例如,SendMessage(hWndCap,WM_CAP_DRIVER_CONNECT,0,0L)与capDriverConnect(hWndCap,0)的作用相同,都是将创建的捕获窗同视频输入器件连接起来。

视频部分主要是利用Video Capture函数库来获取影像的。Video Capture主要提供下列功能:连接驱动程序;获取影像、声音资料,并显示在屏幕上或者是存成AVI文件;获取单张影像显示在屏幕上,拷贝至剪贴簿,或者是存成DIB(Device-Independent Bitmap)文件。

Video Capture的主要结构:

结构体CAPTUREPARAMS主要包含一些获取图像的参数:DWORD dwRequestMicroSecPerFrame代表相邻两个frame的获取时间间隔;BOOL fYield值为TRUE,则表示Windows会以另一个thread来捕获影像,值为FALSE,程序会在捕捉影像后显示忙碌状态;BOOL fCaptureAudio其值表示是否需要同时获取声音资料。

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

结构体COMPVARS主要是记录所有和压缩相关的信息,重要的成员:DWORD fccHandler为compressor句柄;LPBITMAPINFO lpbiIn指向待压缩影像BITMAPINFO的指标;LPBITMAPINFO lpbitOut:指向压缩完影像BITMAPINFO的指标;LONG lKey代表key-frame rate,而所谓key frame是指此frame在解压缩时不需要依赖前面的frame;LONG lQ代表影像压缩后的品质,取值为1~10000的整数。

Video Compression Functions主要记录压缩功能相关的信息,其包含的比较重要的成员:ICLocate输入指向压缩前后BITMAPINFO的指标,以及欲使用的codecs;ICCompressorChoose呼叫一个系统内建的对话,其中包含所有可能使用的codes以及其相关参数;ICCompressQuery询问compressor是否支持某种压缩方式,输入参数为compressor handle及指向压缩前后BITMAPINFO的指标,此函数会传回询问结果;ICCompressBegin要求系统准备相关资源以供压缩之用;ICCompress压缩某个frame;ICCompressEnd归还相关资源给系统;ICDompressQuery询问decompressor是否支持某种解压缩方式;ICDompressBegin要求系统准备相关资源以供解压缩之用;ICDompress解压缩某一个frame;ICDompressEnd归还相关资源给系统;ICDompressFree归还COMPVARS所占用的资源。

2.2 线程的实现方法

线程是一个独立的执行流,是进程内部的一个独立的执行单元,相当于一个子程序,它对应于Visual C++中的CWinThread类对象。单独一个执行程序运行时,缺省地包含了一个主线程,主线程以函数地址的形式出现,提供程序的启动点,当主线程终止时,进程也随之终止。根据实际需要,应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一进程中。

一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,多个时间片中的相应线程在CPU内轮流执行,由于每个时间片时间很短,所以对用户来说,仿佛各个线程在计算机中是并行处理的。操作系统是根据线程的优先级来安排CPU的时间,优先级高的线程优先运行,优先级低的线程则继续等待。

Windows提供了两种线程:用户界面线程和工作线程(又称为后台线程)。用户界面线程通常用来处理用户的输入并响应各种事件和消息,其实,应用程序的主执行线程CWinApp对象就是一个用户界面线程,当应用程序启动时自动创建和启动,同样它的终止也意味着该程序的结束,进程终止。工作线程用来执行程序的后台处理任务,比如计算、调度、对串口的读写操作等,它和用户界面线程的区别是它不用从CWinThread类派生来创建,对它来说最重要的是如何实现工作线程任务的运行控制函数。工作线程和用户界面线程启动时要调用同一个函数的不同版本;一个进程中的所有线程共享它们父进程的变量,但同时每个线程可以拥有自己的变量。

局域网聊天室系统的设计与实现[点击下载]

相关毕业论文

信息安全研究所设备管理系统的设计与实现

以研究所的设备管理系统为背景,以研究所设备管理模式为研究对象,开发了设备管理系统。设备管理系统是设备管理与计算机技术相结合的产物,同时兼顾信息安全,根据系统的功能需求分析与定义的数据模式,分析了应用程序的主要功能和系统实现的主要技术。

电子政务档案管理论文

为了将档案的信息更好的管理,提高工作效率,同时避免人工管理的错误,所以制作了档案信息管理系统。本系统分为:档案信息录入,档案信息修改,档案信息查询

在线投票系统设计

编写在线投票系统,最重要的一点就是如何从烦琐的投票结果中,导出全部投票项目的票数,然后根据投票项目的各个票数,进行票数百分比计算,最后编辑出在线投票系统。

网上人才招聘系统

网上招聘与传统招聘相比具有招聘范围广,信息量大,可挑选余地大,有大量素质高、技术高的应聘人员,招聘效果好,费用低的优势,因此获得了越来越多公司的认可,管理方向的网上毕业论文。

选题管理系统

本文介绍了ASP+SQL技术开发该系统的子系统的整个过程。该系统主要利用了ASP强大的网络数据库访问技术,实现了毕业设计的网上完成。系统设计并实现了学生题目查询和搜索,题目选择修改删除,老师毕设题目的申报修改,管理员队整个过程的全程监控等等功能。这些功能使得网上毕业设计选题系统简单实用。从而加强毕业设计的管理,提高教师的工作效率,降低教师的工作量。

新闻发布系统设计

对于一个商业网站,一个新闻发布系统是必不可少的,新闻发布系统其实可以理解为一个公告板,用来发布网站或管理员的公告信息,当然就其本意来说也可以用来转载各大网站的新闻,做一个新闻网站也未尝不可。

基于BS方式的即时通讯软件的设计与实现

即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,而各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。随着互联网的发展,即时通讯的运用将日益广泛,即时通讯软件业方兴未艾。

基于ASP办公自动化系统论文

随着计算机技术的飞速发展,计算机在各行各业中应用的普及,利用计算机实现学校办公自动化系统管理势在必行。办公自动化系统是20世纪80年代初期随着微型计算机技术和计算机局域网络技术的发展而兴起的一门信息处理系统分支

基于cs的电子邮件简单收发系统设计与实现

电子邮件作为互联网中交换信息广泛的通信工具之一,如今都已被广大用户接受。早期的电子邮件只是从一个计算机终端向另外一个计算机终端传送文本信息,而现在的电子邮件不仅可以发送文本信息,还可以传送声音、图片、文档等多种信息。

网上书店售书系统设计

网上书店系统要实现的功能非常多,最重要的当属图书的销售,也就是管理库房中的图书,以及管理用户的购物车,从而实现结帐等一系列功能。

评论