基于JAVA的视频会议系统开发与设计

2014-04-27 08:44于志楠尹伟静
科技视界 2014年8期
关键词:多播管理器视频会议

于志楠 尹伟静

(沈阳师范大学 科信软件学院,辽宁 沈阳110034)

0 引言

随着人们对音频和视频信息需求,视频会议系统广泛应用于现代企业中。视频会议系统[1]的可以适应现代社会的快捷、高效,使视频会议系统的使用正在向各行各业渗透。本文总结和借鉴其他视频会议软件系统的基础,结合JAVA跨平台[2-3]等优点,提出一种基于JAVA简单应用于局域网视频会议系统的设计与实现方案。

1 视频会议基本原理

视频会议系统的示意图如图1所示。

图1 视频会议系统的示意图

从图看出,视频会议系统主要有三个部分组成,即通信网络、会议终端和多点控制单元。会议终端是将视频、音频、数据、信令等各种数字信号送上信道进行传输;多点控制单元是视频会议系统用于多点视听信息的传输与切换部分;通信网络是一系列的设备、机构和进程,附着在网络上的终端用户设备能够进行有意义的信息交换。涉及网络传输协议、网络编程接口等内容。

2 系统总体设计

2.1 系统硬件平台

网络视频会议系统硬件主要:有网卡、声卡的电脑,摄像头,带麦克风的耳机其组成结构。

2.2 系统软件平台

在软件结构上,由于整个系统是基于纯软件开发,设计上类似于TCP/IP模型,我们依然采用分层思想,降低复杂度,使程序更容易修改,软件开发速度更快,每层利用紧邻的下层服务,更容易记住各层功能,并有许多可选部分完成类似的任务。在体系结构上分为四个层次:IO层、处理层、传输层、网络层。

3 系统实现

3.1 音视频的捕获

安装JMF后,利用它进行音视频的捕获。在JMF中,Capture Device Manager也是一个manager类,它提供给了一个列表,这个列表显示当前系统被使用的设备。同时Capture Device Manager通过查询的方法对设备进行定位并返回设备的配置信息对象Capture Devicelnfo,它也通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。设备可通过Capture Device Manager的get Device0方法直接获得设备控制权,设备的控制权一旦得到,就以此设备作为一个Media Locator,通过Capture Devicelnfo的get Locator0方法得到。在JMF中,Capture Device Manager也是一个manager类,它提供给了一个列表,这个列表显示当前系统可以被使用的设备。同时Capture Device Manager通过查询的方法对设备进行定位并返回设备的配置信息对象Capture Devicelnfo,它也通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。设备通过Capture Device Manager的get Device0方法直接获得设备控制权,设备控制权一旦得到,以此设备作为一个Media Locator,通过Capture Devicelnfo的get Locator0方法得到。

3.2 音视频的处理和传输

采集到的数据源是不适合直接传输的,经过处理,使其适合为RTP传输格式并产生新的数据源再进行传输,处理过程为:

用前面获得的数据源构造处理器对象,以便得到采集到的数据;

processor=javax.media.Manager.create Processor(datasource);

然后将数据源处理为适合RTP传输的格式;

然后调用处理器对象的get Track Control0方法,得到通道的Track Control对象;

媒体流中每一个磁道得到一个控制器;接下来调用Track Control对象的set Format()方法设置每个轨道的编码格式;

最后,调用处理器对象的get Data Output0方法产生数据源,以便数据传输时使用;RTP会话是由RTP Manager完成的,每个轨道都需要有一个管理器,管理器对象采用RTP Manager.new lnstance()方法来获得。建立会话时,需创建Session Address对象描述发送端与接收端的地址信息,再加入RTP管理器。会话建立后,由管理器创建流将数据通过网络发送。

3.3 音视频的接收和播放

接收媒体流也同样建立RTP会话,过程与发送流时建立会话的过程类似,不同的是每个RTP管理器需要加上监听器来监听相应地址与端口,包括会话请求、数据流到达等。系统实现Session Listener和Receive Stream Listener两个接口,前者用于监听RTP会话请求,后者用于监听是否有数据流到达。当创建一个新的数据流后,Session Manager会发出一个New Receive Stream Event。注册了Receive Stream Listener接收数据流监听器,会收到事件。为每一个新接收数据流创建Player。从接收数据流中获取Data Source,并作为参数传递给Manager来创建Player。发送端和接收端播放多媒体信息过程是相同的,由Session Manager到Data Source到Player,直接将播放的数据源交由播放器;创建并初始化RTP Session,创建一个Session Manager(会话管理器),并调用add Receive Stream Listener方法为RTP Manager对象添加RTP时间监听器,监听New Receive Stream Event事件,然后调用RTP Manager对象的initialize方法初始化RTP会话,设置本地和目的地地址和端口;Receive Stream Listener update方法,监视New Receive Stream Event事件,它会指示新数据流被检测到。当一个New Receive Stream Evem事件被检测到时,以New Receive Stream Event事件调用get Receive Stream方法,以取得Receive Stream数据流对象,然后通过调用输入数据流对象get Data Source获取RTP数据源对象;把数据源对象作为参数传递到Manager的create Player方法中来创建Player。直接将播放数据源交由播放器,播放器界面分为播放界面和控制界面两部分,分别用get Visual Component和get Control Panel Component方法来得到。

Player P=javax.media.Manager.create Player(ds);

P.add Controller Listener(this);P.realize();

Component VC,cc;VC=player.get Visual Component0;

CC=player.get Control Panel Component0;

3.4 多播的设计

通过SUN公司提供IP多播类实现多播技术分发媒体流,在具体实现时可通过.Multicast Socket类创建一个所获得的指定端口号的多播套接字,然后调用join Group方法加入到该多播组,接收端程序加入多播组后,便可以从该多播地址和端口号处接收媒体流。

4 实验结果

系统采用JAVAGUI编程,运用SWING组件来编写,通过连接服务器取得连接后进行视频连接,连接后视频在屏幕显示其界面如图2。

5 结论

本文总结和借鉴其他视频会议软件系统的基础,结合JAVA提出一种基于JAVA的应用于局域网的视频会议系统的设计方案。

[1]黄永峰,等.IP 网络多媒体通信技术[M].北京:人民邮电出版社,2003.

[2][美]Chad Darby,John Griffin,Pascal de Haan,等.Java 网络编程指南[M].邱仲潘,等,译.北京:电子工业出版社,2002.

[3]孙卫秦.Java 程序设计[M].电子工业出版社,2006.

[4]孙奎,殷兆麟.基于JMF的多人视频聊天软件的设计与实现[J].计算机工程与设计,2007,28(9):2196-2198.

[5]闰改珍,师卫.基于RTP的音频流多播系统的JMF实现[J].科技情报开发与经济,2007,17(5):240-242.

猜你喜欢
多播管理器视频会议
胖树拓扑中高效实用的定制多播路由算法
用于超大Infiniband网络的负载均衡多播路由
InfiniBand中面向有限多播表条目数的多播路由算法
省农办主任暨三农重点工作推进视频会议
民政部召开民政领域社会工作推进视频会议
Windows文件缓冲处理技术概述
浅谈远程视频会议系统的构建
高集成度2.5A备份电源管理器简化锂离子电池备份系统
GPON网络中有效的多播传输机制
在Win 7下利用凭据管理器提高访问速度等