【毕业设计】基于JAVA的视频会议系统(源代码+论文)

目录

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.  在界面底端有一些功能按钮,如连接视频,发送信息等。

 此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!

2600多套项目欢迎咨询

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

《源码好优多》

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值