这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的理念缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的各类系统很难达到老师的要求。
为了大家能够顺利并以最少的精力通过毕设,学长分享优质毕业设计项目,需要的自取。
目录
1.说明
2.系统详细设计
2.1 文本聊天模块的详细设计
2.2 视频通信模块的详细设计
2.2.1 网络视频会议系统结构的详细设计
2.2.2 视音频传输的详细设计
2.2.3 多播的详细设计
2.3 系统界面的详细设计
1.说明
视频会议系统是指通过现有的各种电气通讯传输媒体,将人物的静态/动态图像、语音、文字、图片等多种信息分送到各个用户的计算机上,使得在地理上分散的用户可以共聚一处,通过图形、声音等多种方式交流信息,增加双方对内容的理解能力。视频会议系统对于减少差旅费用等机构开支;提高机构运作效率;提高机构形象有利于加强对外交往;有利于政策方针的迅速准确传达;有利于广泛收集意见;有利于加强内部交流;员工培训等方面带来巨大的直接和间接效益。由于视频会议系统的这些优点,使得视频会议系统备受关注。并且已经有越来越多的人利用这种方式进行交流沟通,不仅方便而且拉近了人与人之间的距离。现在的一些软件像QQ以及MSN等软件为人们的视频聊天提供了许多方便。
2.系统详细设计
2.1 文本聊天模块的详细设计
本系统要运用Java网络编程中Socket层次,即传统网络编程常采用的方式,通过Client/Server(客户端/服务器端)机构的应用程序之间建立Socket套接字连接,然后在连接之上进行数据通信。
通过SocketChannel建立基于UDP的无阻塞连接。创建一个无阻塞服务器,让每个客户端与之相连。某个客户端将文本消息发送给无阻塞的服务器,服务器在将这条文本消息组播给各个与之相连的客户端。
数据在Internet中是以有限大小的包形式传输的,这些包称为数据报(datagram).但是,由于数据报长度有限,通常必须将数据分解为多个包,在目的地再重新组合。有可能一包或多个包在传输中丢失或遭到破坏。由于网络视频会议的实时性要求,不可能让视频传输的每一贞都准确无误。而TCP协议正是为数据可靠传输而设计的。那么选择UDP协议,即用户数据报协议(User Datagram Protocol,UDP),就成为一种必然。
基于UDP的Socket编程流程图如下:
服务器:
serverSocketChannel = ServerSocketChannel.open();//打开连接通道
serverSocketChannel.socket().bind(new InetSocketAddress(12345));//绑定IP与端口号
getConnection();//接收连接请求
客户端:
socketChannel = SocketChannel.open();打开连接通道
socketChannel.connect(new InetSocketAddress(InetAddress.getByName
(serverAddress),12345));//连接到服务器
receiveMessage = new ReceivingThread();//构造接收信息线程
receiveMessage.start();//运行线程
socketChannel.write(writeBuffer);//往通道里写入消息
socketChannel.read(readBuffer);//读取通道中消息
2.2 视频通信模块的详细设计
2.2.1 网络视频会议系统结构的详细设计
网络视频会议系统其根本目的是会议。会议的基本特征就是,参与会议的每个成员都可以了解到其他成员的状况,每个成员必须到场,然后进行交流,并且每个成员都应该看到所有的交流内容。在这个根本目的完成的基础上,才可以使网络视频会议的特点得以发挥。所以,我们的视频会议系统采用了多播的方法,使得会议的每个成员都可以得到会议的所有信息。
通过对视频会议基本特点的分析,系统结构图如下图所示:
2.2.2 视音频传输的详细设计
使用JMF API的RTP协议实现网络多媒体程序,可以分为两个部分,一部分是通过网络发送数据的主机端程序,另一部分是接收数据的客户端程序。
在JMF API中定义了几个与RTP有关的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通过这些包提供的API,可以实现RTP数据流的传输、接受和回放。基于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);//通过媒体定位器创建数据源
RTPTransmit rtpTransmit = new RTPTransmit(processor,ipAddr,port);//构造RTP会话
result = createProcessor();// 产生一个处理器
result = createTransmitter();产生RTP会话,将处理器输出的数据传给指定的IP地址的指定的端口号
processor.start();// 让处理器开始传输
2.2.3 多播的详细设计
多播基本思想是一个源IP主机只进行一次发送,多个接收者(目标 IP主机)可以接收到相同数据的一个拷贝。但是多个接收者必须都注册加入同一多播组。IP多播服务是一种开放的服务模型,任何主机可以随时加入或退出某个多播组。
利用这种思想,可以实现会议中的多点对多点的视频传输,已达到组织会议的目的。多播系统结构图:
多播实现过程:
group = InetAddress.getByName(MuiltAddr); //设置组播地址
socket = new MulticastSocket(port); //创建MulticastSocket类并将端口与之关联
socket.joinGroup(group); //加入此组播组
2.3 系统界面的详细设计
本系统在进行界面设计的时候考虑了系统的功能,对各功能模块进行详细合理的布局:
1. 把一些功能加到界面中的菜单中,有连接服务器,连接视频,断开连接,退出等子菜单项。
2. 在界面中添加在线用户列表框,用以显示在线的用户。
3. 在界面中用一个大的Panel 装载举行会议时的各个用户的视频框。
4. 在界面中添加实现简单聊天室功能的聊天文本框。
5. 在界面底端有一些功能按钮,如连接视频,发送信息等。
其他内容就不一一展示了,如需对应相关资料,可以评论或者下方联系我,私信都可以。