系统结构
视频面试系统主要由客户端和服务器两部分所组成。系统结构如图4-2所示
图4-2视频面试结构图
主要组成部分所需硬件设备如下:
1.服务器端设备
高性能计算机
网卡:连接内部网,实现基本的网络通信。
声卡:将话筒接入声卡,通过声卡采集主持人的音频媒体。
摄像头:摄像头用于捕获与会者的视频媒体,摄像头是用户参加视频面试的
基本条件。
音箱:播放输入的音频。
显示器:播放视频。
2.客户端设备
普通台式机
网卡:连接内部网,实现基本的网络通信。
声卡:将话筒接入声卡,通过声卡采集用户的音频媒体。
音箱:播放所请求的音频。
摄像头:用于捕获用户的视频媒体。
显示器:播放视频
3.运行环境
操作系统:Windows2000/XP/2003等。
安装JDK。
安装JMF。
服务器端需要安装数据库。
主要组成部分功能描述
1、服务器
服务器是实现网络视频面试的重要组成部分,主要功能是管理视频面试、视频数据处理并向客户端发送。运行在服务器端的程序功能包括监听、接收和转发客户发送至服务器的媒体流。当服务器发布视频面试网页后,客户通过客户端软件登录系统,服务器开始监听来自客户的请求,并作出相应的响应和控制。
2、客户端
客户端的主要功能是获得本机的音频、视频、文字等数据并调用相应的编解码器将数据压缩,然后以一定的方式打包发送到服务器。客户端通过客户端程序实现客户的登录、认证、授权后登录视频面试主界面。在C/S结构里,客户机已经安装了客户端软件,所以媒体捕获、媒体传输、媒体播放都在终端上实现。
3.后台数据库
视频面试系统中,管理员有对面试室进行管理的权限和对普通用户进行添加、删除、更改等权限,对于管理员信息和普通用户信息就需要数据库来进行统一管理,在进行用户登录时,对于普通用户和管理员信息就需要在数据库中进行读取和匹配,以方便系统为不同的用户提供相应的服务。
第五章 视频面试系统的实现
上一章介绍了视频面试系统的设计思路,我们采用JAVA语言纯软件来实现,通过JMF多媒体框架实现音视频传送,其中运用到多播技术,采用C/S方式实现面试的控制,运用异步通信实现文字传输,在可视界面上采用GUI编程的Swing组件,不仅能跨平台,还能提高速度,让我们具体看下整个系统的实现:
系统开发环境及软硬件平台
本系统用于WindowsXP系统,采用JAVA语言,JDK1.5版本,以Eclipse为开发工具,采用JMF2.1.1E版本,使用Swing为可视显示界面。
系统硬件平台
网络视频面试系统的硬件主要有:具有网卡、声卡的电脑,摄像头,带麦克风的耳机其组成结构如图5-1所示:
图5-1 系统硬件结构图
系统软件平台
在软件结构上,由于整个系统是基于纯软件开发,在设计上类似于TCPIP模型,我们依然采用分层思想,这样创建了一个更好的互联环境,降低了复杂度,使程序更容易修改,软件开发的速度更快,而每层利用紧邻的下层服务,更容易记住各层的功能,并有许多可选部分完成类似的任务。在体系结构上分为四个层次,详细组成如图5-2所示:
图5-2 系统软件结构图
IO层:包括系统的人机交互模块,主要提供各种媒体特定语义的输入/输出。如与会者信息,多媒体对象的编解码信息等。该层不仅为该系统的多媒体应用提供多媒体表现的合成机制,而且提供多媒体数据的时间标记,实时表现与会者的活动信息,比如与会者的姓名,媒体对象的编解码标记等。
处理层:包括音视频处理模块、文字处理模块、管理控制模块。音视频处理模块位于客户端,可以直接访问本地资源,如摄像头和麦克风。主要实现各种媒体之间的编解码的封装控制。文字处理模块、管理控制模块位于服务器和客户端,提供与会者的同步管理,实现各种媒体间的同步控制。
传输层:含RTP控制模块与RTCP控制模块,主要进行文字的发送/接收,媒体流的组包/解包、发送/接收功能。本层向下屏蔽网络资源,向上提供媒体传输接口。
网络层:主要进行网络通信。提供了对系统资源的管理和使用功能。根据上一章的设计,服务器主要完成客户信息的接收、标记、聊天功能。客户端主要实现音视频数据的传送/接收。
视频面试系统的实现
C/S的流程
本系统采取C/S(服务器/客户端)[26]的方式,主要分为文本聊天模块和音视频通信模块这两部分,其流程如图5-3、5-4所示:
图5-3 服务器流程图
每个参与面试的职员通过与服务器的连接加入到面试组,如果连接失败会进行提示重新连接,直到连接成功。这时,该职员向服务器通过取昵称标记自己,其他成员也通过该昵称分辨面试成员,同时,服务器给加入面试组的成员一个独一无二的ID号,用来区分每一个成员。当所有成员连接好,通过昵称面试组的每个成员了解自己的身份,然后采用异步通讯技术进行文本聊天。
图5-4 客户端流程图
在客户端,先通过与登陆与服务器建立连接,连接成功后,会收到成功的消息提示,如果登陆失败则需要重新进行连接。在登陆上以后,通过给自己取的昵称标记好自己的面试成员身份,然后就可以进行连接。连接上以后,第一个进行视频连接的人将成为面试的主持者,其他连接到的人则参与其中,进行音视频通信。同时还可以通过发送文本传送文字信息。其中通过JMF进行RTP传输,用到了多播技术,面试完成后,通过退出键离开面试组,结束面试的进程。
音视频的捕获
我们在安装了JMF后,就可以利用它进行音视频的捕获了。在JMF中,CaptureDeviceManager也是一个manager类,它提供给了一个列表,这个列表显示当前系统可以被使用的设备名称。同时CaptureDeviceManager可以通过查询的方法对设备进行定位并返回设备的配置信息对象CaptureDeviceInfo,它也可以通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。设备可通过CaptureDeviceManager的getDevice()方法直接获得设备控制权,设备的控制权一旦得到,就可以以此设备作为一个MediaLocator,可以通过CaptureDeviceInfo的getLocator()方法得到。在JMF中,CaptureDeviceManager也是一个manager类,它提供给了一个列表,这个列表显示当前系统可以被使用的设备名称。同时CaptureDeviceManager可以通过查询的方法对设备进行定位并返回设备的配置信息对象CaptureDeviceInfo,它也可以通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。设备可通过CaptureDeviceManager的getDevice()方法直接获得设备控制权,设备的控制权一旦得到,就可以以此设备作为一个MediaLocator,可以通过CaptureDeviceInfo的getLocator()方法得到。
一般捕获媒体数据可分为下面几个步骤:
●查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。
●得到此设备的CaptureDeviceInfo实例。
●从此CaptureDeviceInfo实例获得一个MediaLocator,并通过它来创建一个
DataSource。
●用此DataSource创建一个Player或Processor。
●启动此Player或Processor开始捕获媒体数据。
在安装JMF后,对其的采集设备进行配置,就可以进行捕捉了。下面是音视频采集的设备图:
图5-5 音视频采集图
还需要对其的属性进行选择,选择后的参数如图5-6:
图5-6 选择后的参数图