音视频通信软件的设计

  • 格式:pdf
  • 大小:214.64 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 3 - 4 网络登录类关系图
1、网络多态接口设计
多态与虚函数是面向对象编程思想的核心之一,多态性是允许将父对象 设置成为和一个或多个它的子对象相等的技术,它使得能够利用同一类 (基类)类型的指针来引用不同类的对象,以及根据所引用对象的不同,以不 同的方式执行相同的操作。网络登录模式就设计为一个接口类,即抽象 类。它的操作函数设计为一系列纯虚函数,由它派生出来的广播登录 类、多播登录类、CS登录类实现这些接口函数,如图3 – 4 所示。网络 多态接口类设计如表3 – 3 所示:
(1) 捕获音视频设备媒体流,进行相应编码操作,将视频流以图片帧 的方式,绘制图像到相应窗口,建立发送地址表,通过TCP/UDP网络套 接字对表内的所有客户主机地址发送媒体流,同时接收Filter接收相应网 络媒体流,进行相应解码操作后输出媒体流到相应音视频显示设备终 端;
(2)捕获音视频设备媒体流、进行相应编码操作,建立发送分支 Filter,对相应客户方建立相应音视频发送Filter分支与视频显示分支, 同时接收Filter接收相应网络媒体流,进行相应解码操作后输出媒体流到 相应音视频显示设备终端。其中,收发Filter分为单人聊天收发Filter与 音视频会议收发Filter,分别支持TCP媒体流与UDP媒体流。
1.3 总体设计
本课题所完成的音视频通信软件,主要完成三种用户登录模式:广播、 多播、CS,用户可以根据当前网络支持状况,选择其中一种合适的登 录模式;支持同一时间与多人进行一对一音视频聊天;另外,邀请在线 好友进行音视频会议;同时,软件支持文字辅助聊天。
针对该软件的主要需求,摄像设备的独占性特点,主要可以采取两种设 计方案实现:
(3)C++编译器资源很广泛,几乎涵盖所有常见操作系统;
(4)C++执行效率很高,运行速度快。
1.2.2 软件开发平台
1、操作系统
该课题所涉及到的音视频通信软件,在普通用户通用机型,Windows XP操作系统中完成全部开发和测试。Windows XP 为目前单机普通用户 主流机型,能更好的满足广大计算机用户的需求。
(2)网络登录模式:实现网络登录多态接口,并扩展为广播、多播、 CS登录模式。
(3)消息包分析:分析并提交网络消息包与窗口消息包。
2、音视频通信管理子系统,主要实现以下功能:
(1)单人聊天模式:一对一进行音视频聊天功能;
(2)音视频会议模式:具有完全树网络逻辑服务模式的音视频会议功 能。
3、协同辅助模块,主要实现以下功能:
表 3 - 3 网络多态接口类(CbaseSocket)接口函数表
2、三种登录模式设计
由于不同用户网络状况的不同,于是从网络多态接口类派生的三种网络 登录模式类:广播登录类、多播登录类、CS登录类,根据自身的登录 类型,以不同的方式去实现表3 – 3 所示的网络接口,从而它们具有相 同功能。由于广播登录类和多播登录类都是向相似的网络地址终端发送 UDP数据报文,所有它们的接收功能模块,完全一致,即将接收到的网 络消息包,可直接交于上层分析处理(ParseNetworkStream)。CS登录模 式,即客户端服务器模式,设计为接收的所有网络包由中继服务器转发 的UDP数据报文,因此不能解析出对方的网络地址信息,所以CS模式 下网络通信包设计为将表3 – 1 的网络通信包再次封装,形成CS模式下 独特的网络包格式,即CsUdpPack = IP + UserNetPack 的消息封包,其 中IP为长为16字节的字符串数组,这样CS网络包就比UserNetPack多了 16个字节,在接收消息报文时,只要根据报文的长度就可以分辨出这两 个不同的网络封包。
网络通信包头 字段名 备注 UserWrong 未知用户登录标识头,初始值0; UserAdd
用户登录网络标识头,表示某一用户上线或刷新好友列表; UserLeave 用户离开网络标识头,表示某一用户下线; UserAddBack 用户登录网络标识头,表示某一用户返回的在线标识; UserGroupData 用户群组消息与附加消息头标识,表示某一用户的群发消息或附加消息 封包(音视频请求);
图 3 - 1Байду номын сангаас音视频通信软件系统总流程
1.4 功能模块划分
根据功能实现需要,并兼顾代码的模块化、规范化,本课题所开发的音 视频通信软件主要设计为由以下三大模块构成,如图 3 - 2所示。
图 3 - 2 音视频通信软件模块划分
1、用户管理子系统,主要实现以下功能:
(1)群用户管理:主要管理群用户上线、下线、群消息;
本课题主要以实现音视频通信会议功能为重点的音视频通信软件,主要 包含基本的单人音视频功能、音视频会议功能。通过对构架类分布式的 服务源服务模式,最终实现“基于网络逻辑完全树架构的服务模式”系 统,从而将服务重责平均分配到各个参加网络音视频会议的各个用户子 机,减轻总服务源(会议发起方)的服务“压力”,进行使整个通信系统 达到“有福共享,有难同当”的最佳服务状态。该音视频通信软件的核心 需求是搭建几种特殊的完全树网络逻辑架构,限于其研究目的,不实现 P2P功能,但需提供可扩展的网络接口,所以其应用范围仅限于某一子 网。
显然,第一种方式更简单易懂,更容易实现,然而所带来的系统开销也 是非常庞大的。对应每一个音视频会话,就对应一个网络地址,在发送 媒体流时,遍历这个地址表的同时将绘制媒体流图片帧到相应窗口,这
消耗大量CPU运算时间,严重影响系统性能。同时,第一种实现方式也 失去了DirectShow技术的优势。另外,在本课题的音视频会议软件,要 求满足广大即时通信软件的特点:即时、高效、简捷。所以,本课题的 音视频通信软件采用第二种方式实现,建立以Filter支链为基础的Filter Graph运行方式,可以有效节约系统资源,便于软件管理与维护。针对 此种实现方法,程序总体运行流程如图 3 - 1所示。
网络多态接口类
功能接口 实现函数 备注 设置用户管理者 SetUserManager 获得父管理者指针地址; 设置通信地址 SetIpandPort 设置群播IP地址和网络端口号; 创建网络套接字 StartSocket 创建网络套接字; 群发消息报文 SendA 向所有在线用户群发消息报文; 单播函数1 SendB 向特定地址的某一主机发送消息报文,同Send; 单播函数2 Send 向特定地址的某一主机发送消息报文; 开启消息包接收线程 StartRecvData 创建网络消息包接收线程; 停止消息包接收线程 StopRecvData 停止网络消息包接收线程; 关闭套接字 CloseSocket 关闭所有套接字; 返回群播套接字 GetSocket 返回当前群播套接字;
1.1.2 运行环境需求
该音视频通信软件要求在Windows XP或Windows Server 2003操作系统 下运行,需要Divx5.02编解码器,以实现媒体帧的编码和解码操作。
1.1.3 功能需求
本次研发的音视频通信软件主要需实现如下功能:
(1) 三种网络登录模式设计(广播、多播、CS);
(2) 本地音视频设备设置;
网络通信包
名称 长度(byte) 字段名 备注 封包头 4
mUserWay 封包类型,枚举变量,包含用户入网形式以及附加封包头标识信息; 设备标识 4 mVideo 设备状态标识,枚举变量,用于标识当前是否有音视频设备; 通信名称 256 musername 用户名称,字符串变量,长度256,用户基本通信名称; 附加内容 1124 mexData 附加数据,字符串变量,长度1124,附加消息封包字段或填充字段;
表 3 - 1 网络通信包(UserNetPack)定义表
2、群用户网络形为设计
群用户网络形为设计为三种方式:登录网络、退出网络、网络消息群 发。原理与飞鸽协议相类似,即:某登录时发布我上线了的消息,其它 用户收到该消息后向其返回它也在线的消息。目地在于方便系统管理用 户群组,方便即时与群中用户进行音视频聊天或者音视频会议。登录系 统时,由用户填写基本信息后登录网络并启动相应系统服务;退出系统 时,由程序自动向群中用户发送退出消息报文并关闭相应系统服务;群 发网络消息时,将通过网络接口向群组用户发送消息。其中通过设计网 络通信包头值,以区分不同的用户形为,封包头为一个4个字节的枚举 类型,其定义见表3 – 2所示:
表 3 - 2 网络通信包头(UserWay)定义表
其中,UserGroupData字段的具体定义将在后面消息包分析部份作详细 说明。
1.5.2 登录模式模块设计
本课题所研发的音视频通信软件,可以让用户选择三种不同的网络登录 模式:广播、多播、服务器登录(CS)。三种登录模式完成的功能基 本相同,即发送群组消息报文与单播消息报文以及相同的网络接收模 块。音视频通信软件设计了一个多态的网络接口抽象类,三种不同登录 模式类从该类派生,实现抽象接口,从而在达到统一的同时,又可以完 成不同的功能。多态接口类与三种登录类之间的关系,如图3 – 4 所示
3、其他辅助平台
该课题中,媒体流帧解编码部份采用了Divx5.02编解码器实现。
DivX是一项由DivXNetworks公司发明的,类似于MP3的数字多媒体压 缩技术。它由DivXNetworks公司发明,基于MPEG-4标准,DivX配置 CPU要求是300MHz以上、内存要求是64M以上、8M以上显存的显 卡.DivX视频编码技术是为了打破微软ASF的种种协定的束缚,由 Microsoft mpeg4 v3修改而来,使用的MPEG-4压缩算法可以把MPEG-2 格式的多媒体文件压缩至原来的10%,更可把VHS格式录像带格式的文 件压至原来的1%。通过DSL或CableModen等宽带设备,它可以让你欣 赏全屏的高质量数字电影。无论是声音还是画质都可以和DVD相媲美。 同时它还允许在其他设备(如安有机顶盒的电视、PocketPC)上观看。
2、集成开发环境
该课题中,集成开发环境选用了微软的Visual Studio 2005。Visual Studio 2005是一个基于Windows操作系统的可视化集成开发环境。Visual Studio 2005包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等全套工具。所有组件通过Developer Studio集成为完整的开发环 境。值得一提的是,Visual Studio 2005所提供的MFC能够较为方便地完 成图形界面应用程序。
第1章
音视频通信软件的设计
1.1 音视频通信软件需求分析
1.1.1 音视频通信软件需求说明
从技术上而言,音视频通信技术,涉及到音视频设备操作、音视频流编 解码、媒体流网络传输、流媒体接收处理等相关技术,门槛高,难度 大。另外,由于媒体流信息量大,及时要求度高,还要保障媒体帧的流 畅性,这就对依耐于高速网络、高性能的硬件设备以及相关媒体流网络 包的建包和解包算法。
图 3 - 3 用户管理子系统运行流程
1.5.1 群用户管理模块设计
该功能模块设计为主要负责管理群组用户,维护应用程序用户列表,发 送与接收群组消息,分别处理用户上线、用户下线以及群用户消息。针 对群用户管理模块的具体功能需求,重点数据类型和各个子功能分别设 计如下:
1、网络通信包设计
网络通信包是音视频通信软件之间协同通信的网络消息报文,因此,网 络通信包设计为封装各个用户通信的基本参数信息,封包组成成份有: 封包头、设备标识、通信名称以及附加内容。其中封包头和设备标识为 四个字节的枚举类型;通信名称为256个字节长度;附加内容为1124个 字节长度。总共1388个字节长度,小于1500,能保障封包在传输过程中 不被分片 ,以完整的形式到达对方。网络消息包具体设计,如表3 – 1 所示:
该模块辅助音视频通信时,相应请求、应答消息管理,并提供用户界 面,接受用户输入,判断输入合法性。
1.5 用户管理子系统详细设计
该子系统主要实现软件群用户的管理、用户网络登录以及用户消息包解 析功能,为后期音视频通信提供用户组对象。该子系统包含了群用户管 理、网络登录模式、消息包分析三大功能,该子系统总体流程如图 3 - 3 所示。
(3) 支持单人聊天模式与音视频会议模式;
(4)简单的文字辅助单聊、群聊功能。
1.2 软件开发环境
1.2.1 软件开发语言
本课题所涉及的音视频通信软件,使用了C++语言进行开发,C++语言 主要具备下列特点和优势:
(1)C++由C发展而来,与C兼容,C程序基本可以不加修改应用于 C++;
(2)C++具备C语言的全部优点,并增加了面向对象机制;