多功能聊天软件的设计与开发——音频视频聊天模块

3 多功能聊天软件的设计方案

3.1 聊天系统流程的分析与设计

添加图片注释,不超过 140 字(可选)

此聊天软件采用了C/S结构,其系统流程图如图1所示,使用这个聊天系统软件的用户必须先进行注册。用户首先选择注册选项,填写相关的注册信息,然后通过网络提交给服务器,再由服务器将注册信息提交给数据库。同时服务器会按顺序生成一个登录ID号返回给注册用户,这样注册就完成了。完成注册的用户可以用返回的ID号和自己注册时填写的密码进行登录。用户将登录信息提交给服务器,服务器根据数据库中的注册信息与登录信息进行比较,比较一致后,则进入系统的客户端应用程序模块。这时你要与好友进行聊天,则必须添加好友:进行用户2添加用户N为好友的操作过程中,用户2首先向用户N发出添加好友的请求信息,当用户N接受到用户2的信息,在通过验证后会发送确认反馈信息给用户2,并且向服务器提交好友添加确认信息,这时服务器就会更新相应用户的好友列表中的信息。好友添加完成后,用户之间就可以进行彼此之间的通信,如文字聊天、视频聊天、语音聊天、文件传输等。

以上为多功能聊天软件系统的总体流程图,其中包括了登录模块、注册模块、添加好友模块、服务器模块、数据库模块等。在这个多功能聊天软件系统开发设计与实现中,本人主要负责登录模块、注册模块、语音聊天与视聊天功能模块的设计与实现。下面就对登录模块与注册模块的流程进行了分析。

3.2 注册模块的分析与设计

用户通过填写注册相关的信息并将其提交给服务器,服务器将用户填写的相关信息存入的数据库中去,同时在按顺序自动生成一个ID号,发给注册用户,表明注册成功,此ID号就为用户登录帐号。图2所示为其系统结构图。

添加图片注释,不超过 140 字(可选)

3.3 登录模块的分析与设计

添加图片注释,不超过 140 字(可选)

用户在注册获得ID号码后,在登录界面填写ID号码和密码并提交给服务器,服务器通过用户提交过来的信息和数据库中原有的用户信息进行比较和验证,如果结果一致表明验证成功,用户进入到客户端的系统界面下,如果不一致,给用户返回登录错误信息。登录系统流程分析图3所示。

本设计主要完成的是视频聊天、语音聊天模块,以及登录、注册模块,下面对其设计与实现进行详细的说明。

语音、视频聊天模块的具体实现

4.1 Video for Windows简介

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

(1)AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口。

(2)MSVIDEO.DLL:用一套特殊的DrawDib函数来处理屏幕上的视频操作。

(3)MCIAVI.DRV:此驱动程序包括对VFW的MCI命令的解释器。

(4)AVIFILE.DLL:支持由标准多媒体I/O(mmio)函数提供的更高的命令来访问.AVI文件。

(5)压缩管理器(ICM):管理用于视频压缩-解压缩的编解码器(CODEC)。

(6)音频压缩管理器ACM:提供与ICM相似的服务,不同的是它适于波形音频。

4.2 G729.dll的简介

G.729算法是ITU-T制定的编码速率为8kb/s的共轭结构码激励线性预测声码器语音编码算法标准,作为低速率的语音编码器,在传输的带宽有限的情况下运用越来越受到广泛的重视。G.729系列算法声码器的原理都是相通的,各种算法不同之处在于算法的简化和编码比特的多少。G.729编码器是基于码激励线性预测(CELP)声码器模型的。这个编码器运算的帧长为10ms,相应于抽样率为8000kHz的语音数据流的80个样值,具有8kbit/s的编码速率,较低的延迟和高编码语音质量等优点。

本程序在语音聊天模块中,调用了G729.dll动态链接库文件,它包括G.729的函数和资源,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。

4.3 LanMsgLibrary.dll的简介

该聊天软件系统的语音聊天、视频聊天功能的实现主要是引用了LanMsgLibrary.dll这个动态链接库文件,它包括VFW以及其他相关的函数与资源。在音频与视频聊天实现的过程中,程序就引用了LanMsgLibrary.dll中的VFW以及相关的函数和资源。在视频聊天过程中,主要实现了视频的捕获与播放,视频流的压缩与解压。在语音聊天过程中,主要实现了声音的采集与播放,通过调用了G729.dll动态链接库文件,对音频进行了压缩与解压。

在整个语音聊天与视频聊天实现的过程中,程序主要对LanMsgLibrary.dll的引用来实现其功能。

4.4 语音、视频聊天的模块设计思想

对于一个端对端的语音聊天系统来说,主要涉及两个方面的动作,即语音的采集和播放、语音数据的发送和接收。系统采用多线程的设计思想来完成并协调各个过程。语音的采集实际上就是一个音频压缩的过程。语音的播放是声音数据流的还原过程,通过一个父线程读取接收线程接收到的数据,并通过管道让其子线程播放解压后的声音数据。语音数据的发送和接收主要用Socket编程来实现,socket是网络通讯过程中端点的抽象表示。为了通过socket接口进行网络通讯,程序在对话的每一端都需要一个socket,两个socket采用无连接的UDP协议。

用户1通过麦克对自己的声音进行采集,在通过压缩,使其在网络上传输的效率更高,然后再进行传输,当用户2接收到用户1的声音数据后将其解压,然后进行播放,如图4所示。

添加图片注释,不超过 140 字(可选)

在进行语音聊天时,两台计算机必须先要建立连接,如图5所示,用户1向用户2发送“发送语音请求”信息,用户2收到用户1请求信息后,发送回应信息给用户1,如果用户2同意,开始语音聊天;不同意,停止语音聊天。

添加图片注释,不超过 140 字(可选)

此视频模块的设计思想与语音模块一致,也涉及到两个方面的动作,视频的采集和播放,视频数据的发送和接收。视频的采集与播放是基于VFW来实现的,利用VFW的关于数字视频的软件包实现对视频的采集与播放。视频数据的发送与接收同样采用了Socket编程,在发送视频时,通过Socket端口进行监听。当收到对方发送的包含视频请求信息和对方IP地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。

用户1通过摄像头进行视频采集,经过压缩后,向用户2发送采集后的视频数据。用户2接收到用户1发送的视频数据并将其进行解压,然后在用户2的采集窗口上播放,这样视频的传输就完成了。视频模块数据传输流程如图6所示。

添加图片注释,不超过 140 字(可选)

在进行视频数据传输前,两台计算机必须先要建立连接,其原理和语音聊天建立连接的原理一致。用户1向用户2发送视频请求,用户2在接收到用户1的请求后,给用户1发送收到请求后的回应信息,如果同意用户1的请求则用户1与用户2开始视频聊天,如果不同意就终止视频聊天。视频聊天建立连接如图7所示。

 

链接:https://pan.baidu.com/s/1Xwd0U_KktL0hRFPaggIOGQ?pwd=6688 
提取码:6688 

  • 15
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值