员通过与服务器连接加入到会议组,同时通过给自己取昵称将自己的昵称发送给服务器,让会议组的每个成员了解自己的身份。会议成员在聊天的时候不是将文本发送给某个人,而是发送给整个会议组。
视频通信模块:该功能利用JMF软件开发包,基于RTP协议实时发送和接受视频流。并且利用JMF多媒体组件构造播放器,进行实时播放。在实现了点对点的基本视频传输的基础上,我们应用了多播技术。当某个会议成员开始进行视频连接以后,他能通过视频会议系统看到所有其他已经建立视频连接会议成员。
3.2系统接口的概要设计
3.2.1服务器端设计
系统的服务器端的设计只需显示在线的用户,简单设计图示如下:
图3.3系统服务器端设计
3.2.2客户端设计
系统客户端的设计如下:
1.显示在线列表;
2.显示界面中用户视频;
3.用户聊天文本框;
4.视频连接及退出按钮。
简单设计图示如下:
图3.4系统客户端设计
3.3系统出错处理设计
3.3.1出错信息及处理方法
系统输出信息的形式、含意及处理方法。见表3.1。
表3.1出错信息及处理方法
故障情况
系统提示信息内容与形式
处理方法
开启服务器失败
提示失败信息"开启服务器失败,请重试"
弹出对话框
重新开启服务器
登录失败
提示失败信息"登录失败,请重试"
弹出对话框
重新登录
连接视频失败
提示失败信息"视频连接失败"
弹出对话框
重新连接视频
3.3.2系统维护设计
为了保证系统的稳定运行,本系统在设计时考虑到了系统的安全性、可靠性、兼容性、可扩展性等因素。了很多验证条件,尽量保证信息的合法性与正确性,是系统能够稳定运行。此外本系统的设计还保证了系统功能的可扩展性。
安全性:在视频会议系统前端安置加密机或者直接使用加密网卡可以提高在传输过程中的安全性。加密设备可直接提供加密能力,从而实现用户的身份验证以及未经授权的数据访问和恶意侵犯。
可靠性:该系统设计的合理性保证了可靠稳定的运行,支持当前大多数硬件平台,核心线程优先保护、数据流容错的设计思路使系统可更加稳定的运转。
兼容性:该系统拥有开放的集成接口,可以非常灵活的与用户集成,并满足用户的需要,实现其功能。
可扩展性:该系统可进行再扩展,在此基础上扩展为一点对多点,多点对多点的视频会议系统。
第四章系统详细设计
本系统的详细设计根据概要设计中所划分的各个功能模块进行详细的阐述:
4.1文本聊天模块的详细设计
本系统要运用Java网络编程中Socket层次,即传统网络编程常采用的方式,通过Client/Server(客户端/服务器端)机构的应用程序之间建立Socket套接字连接,然后在连接之上进行数据通信。
通过SocketChannel建立基于UDP的无阻塞连接。创建一个无阻塞服务器,让每个客户端与之相连。某个客户端将文本消息发送给无阻塞的服务器,服务器在将这条文本消息组播给各个与之相连的客户端。
数据在Internet中是以有限大小的包形式传输的,这些包称为数据报(datagram).但是,由于数据报长度有限,通常必须将数据分解为多个包,在目的地再重新组合。有可能一包或多个包在传输中丢失或遭到破坏。由于网络视频会议的实时性要求,不可能让视频传输的每一贞都准确无误。而TCP协议正是为数据可靠传输而设计的。那么选择UDP协议,即用户数据报协议(UserDatagramProtocol,UDP),就成为一种必然。
基于UDP的Socket编程流程图如下:
图4.1数据报套接字流程图
服务器:
serverSocketChannel=ServerSocketChannel.open();//打开连接通道
serverSocketChannel.socket().bind(newInetSocketAddress(12345));//绑定IP与端口号
getConnection();//接收连接请求
客户端:
socketChannel=SocketChannel.open();打开连接通道
socketChannel.connect(newInetSocketAddress(InetAddress.getByName
(serverAddress),12345));//连接到服务器
receiveMessage=newReceivingThread();//构造接收信息线程
receiveMessage.start();//运行线程
socketChannel.write(writeBuffer);//往通道里写入消息
socketChannel.read(readBuffer);//读取通道中消息
4.2视频通信模块的详细设计
4.2.1网络视频会议系统结构的详细设计
网络视频会议系统其根本目的是会议。会议的基本特征就是,参与会议的每个成员都可以了解到其他成员的状况,每个成员必须到场,然后进行交流,并且每个成员都应该看到所有的交流内容。在这个根本目的完成的基础上,才可以使网络视频会议的特点得以发挥。所以,我们的视频会议系统采用了多播的方法,使得会议的每个成员都可以得到会议的所有信息。
通过对视频会议基本特点的分析,系统结构图如下图所示:
图4.2网络视频会议系统结构图
4.2.2视音频传输的详细设计
使用JMFAPI的RTP协议实现网络多媒体程序,可以分为两个部分,一部分是通过网络发送数据的主机端程序,另一部分是接收数据的客户端程序。
在JMFAPI中定义了几个与RTP有关的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通过这些包提供的API,可以实现RTP数据流的传输、接受和回放。基于JMF多媒体数据流RTP传输、接受和回放过程图如下:
图4.3基于JMF多媒体数据流RTP传输、接受和回放过程
数据可以来自于多媒体文件,如视频文件,也可以来自于音/视频采集设备,如声卡、摄像头等。这些数据源的位置不同,格式不同,JMF通过一个称为媒体定位器(Media-Locator)的类对相应的数据源进行定位,MediaLocator对象内仔储了数据源的位置信息。JMF管理器(Manager)根据媒体定位器提供的信息创建数据源。这个数据源和文件、摄像头等物理数据源不同,是一个抽象的概念,是多种不同类型数据源的抽象。这样,JMF可以隐藏底层细节,使编程者在编程过程中不再考虑数据的具体来源和位置,只需考虑数据的格式、速率等信息就行了。
数据源生成后,可以直接交给播放器(Player),设定格式后就可以在本机播放了。但若要将数据流存储成其他格式的文件或者通过RTP协议在网络上传输,则需要对其进行再处理。再处理工作由处理器(Processor)完成,处理后的数据源可以存储,也可以在网络上传输。通过RTP进行传输前,需要建立会话管理器(SessionManager),建立RTP会话后再开始发送流,发送时会打开两个端口,一个用于传输RTP数据流;另一个用来传输RTCP包。
多媒体数据流的接收过程是发送的逆过程。由RTP信道获得的数据流作为接收端的数据源,对数据源处理后便可以实现数据流的回放、存储,甚至再发送。
详细设计传输过程:
dsVideo=createDataSource(vf);//创建视频数据源
dsAudio=createDataSource(af);//创建音频数据源
devices=CaptureDeviceManager.getDeviceList(format);//得到类型为format的设备的清单,存放在表devices中
ds=Manager.createDataSource(ml);//通过媒体定位器创建数据源
RTPTransmitrtpTransmit=newRTPTransmit(processor,ipAddr,port);//构造RTP会话
result=createProcessor();//产生一个处理器
result=createTransmitter();产生RTP会话,将处理器输出的数据传给指定的IP地址的指定的端口号
processor.start();//让处理器开始传输
4.2.2多播的详细设计
多播基本思想是一个源IP主机只进行一次发送,多个接收者(目标IP主机)可以接
上一篇:
(jsp+sql)java论坛管理系统,包括论文和程序(论文和程序)
下一篇:
智能手机操作系统与刷机论文