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

更新时间:2024-03-03 作者:用户投稿原创标记本站原创 点赞:5414 浏览:17772

【摘 要】随着信息技术高速发展网络视频通信逐步成为现代信息社会不可或缺的沟通方式.为了满足平台无关性,本文采用了JA语言,并通过JA多媒体框架JMF提供的捕捉、回放、编解码等工具,把音频、视频放到JA应用程序中,完成视频会议系统中媒体数据的处理,通过对比现有的网络通信技术,采用多播进行媒体数据的传输,较好的实现会议功能.

【关 键 词 】网络视频会议;实时传输协议;JA媒体框架;多播

0 引言

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

1.视频会议基本原理

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

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

2.系统总体设计

2.1 系统硬件平台

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

2.2 系统软件平台

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

3.系统实现

3.1 音视频的捕获

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


3.2 音视频的处理和传输

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

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

processor等于jax.media.Manager.createProcessor(datasource);

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

然后调用处理器对象的getTrackControl0方法,得到通道的TrackControl对象;

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

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

3.3 音视频的接收和播放

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

3.4 多播的设计

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

4.实验结果

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

5.结论

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

【参考文献】

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

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

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

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

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

[责任编辑:汤静]