基于网络的多媒体会议的研究和实现

  [摘要]网络的普及推动了多媒体会议系统的推广。本文基于COM的视频会议的结构和功能特点,给出系统的软件设计,为COM技术在视频会议管理系统中的应用提供了有益参考。
  [关键词]网络 多媒体会议 研究和实现 
  多媒体会议(又称视频会议)。使用户以接近面对面的方式进行交谈,交换各种形式的信息,最大限度的消除了地理分布所造成的障碍,大大地提高了工作效率。从功能上看,完整的视频会议系统应具有会议管理、视频/音频处理、多点控制、通信服务等功能模块,其逻辑系统结构如图1所示。
   
   
   一、 会议结构及规则的制定
   
   制定的会议结构和规则分为八类:(1)会议成员及身份。会议只有一位主持人,成员包括自由人和组员,自由人指未加入某个组的成员,组员指已经加入某个组的成员;主持人的身份是自由人或组员;组员包括组长和普通组员。(2)会议管理。主持人创建会议,等待成员加入,同时会议开始;主持人退出会议,会议结束,这时其他成员自动全部退出会议。(3)组的创建和撤消。只有自由人可以创建组,创建组的自由人成为组长,每个组只有一名组长;组长退出某个组、退出会议或被主持人删除时,该组解散,普通组员成为自由人;主持人有权删除某个组,组中所有组员成为自由人。(4)所有成员权限。成员之间(包括自由人之间、组员之间、自由人和组员之间)可以相互文字交谈;任一成员可以向全体或组发送文字信息;每个成员能且只能接收一路视频音频数据。(5)主持人权限。主持人有权删除任一自由人或普通组员。(6)自由人权限。自由人可以自由选择加入某个组,成为该组的普通组员;自由人只能向单个其他自由人发送视频音频数据,但需要得到对方同意;自由人有权同意或拒绝其他自由人向自己发送视频音频数据的请求。(7)组长权限。组长有权删除某个组员,使其成为自由人;组长可直接向所在组全体成员发送视频音频数据;组长有权同意或拒绝普通组员视频音频数据的发送请求;组长有权终止普通组员视频音频数据的发送过程;组长有权指定某普通组员向全组发送视频音频数据。(8)普通组员权限。普通组员可以自由选择退出某个组,成为自由人;普通组员可向所在组全体成员发送视频音频数据,但需要得到组长同意。
   
   二、基于COM的视频会议的结构和功能特点
   
   一般的讲,一个应用程序总是由单个的二进制文件组成。以前,如果这个程序需要做一些改进,就要修改源代码,然后编译,生成新的文件,取代原来的文件。现在,用一种全新的角度来看问题:把原先一整个的EXE可执行文件,分割成功能不同,但相对独立的几个部分,把它们拼装起来,组成程序,组成软件。在未来程序发布以后,如果意识到需要对它进行修改,只要替换有问题的或是需要升级的部件就可以了。甚至可以做到在不影响程序正常运行的情况下替换其中的部件。
   这样的一些具有独立功能的二进制代码就是组件(Component)。形象地讲,组件相当于计算机系统里的硬件芯片(某些组件甚至具有热插拔的性质),当实现芯片的更新换代时,只要新的芯片的接口与原芯片一致,其他的任何部分不需要做任何改动。
   组件对象模型(COM,Component Object Model)作为一种编程方法,定义了一种使软件组件彼此通信的二进制标准,即使两个组件不是用同一种语言编写而成,只要它们都遵循COM标准就可以相互通信。
   COM组件通过接口(interface)来显示其功能,并实现与其他COM组件的通信。一个COM组件可以拥有无数个接口。所有的接口都由IUnKnown接口派生,IUnKnown接口具有一种访问COM组件所提供接口的函数QueryInterface。在C++中,接口通过抽象基类实现。对于COM来讲,接口是一个包含一个函数指针数组的内存结构。每一个数组元素包含的是一个由组件所实现的函数地址。
   COM组件首先要在系统的注册表里进行注册,在应用程序的执行过程中动态加载,需要时在内存里创建,用完后即可释放其所占的资源。
   
   三、软件实现
   
   本系统的模块大致有:视频采集模块、音频采集模块、视频压缩模块、音频压缩模块、视频音频的复合模块、网络传输模块、视频音频的解复合模块、视频解压缩模块、音频解压缩模块、视频播放模块、音频播放模块。另外还添加了一个极其重要的会议管理模块,该模块的主要功能是控制会议的创建和结束、加入或退出会议、创建或删除组、加入或退出组、会议成员管理以及文字数据的产生、发送、接收和显示。
   由于采用了COM组件的软件设计方法,上述各模块除了会议管理模块以外,其他部分均为COM组件的形式,每个组件封装了各自相关的线程,从而使得整个应用程序的结构大大简化,脉络清晰,仅仅需要三个线程就可以完成所有的工作,分别是:用户界面线程、本地输出流产生线程、对方输入流播放线程。其中,用户界面线程包含了会议管理模块和网络传输模块;本地输出流产生线程包含视频采集模块、音频采集模块、视频压缩模块、音频压缩模块、视频音频的复合模块、网络传输模块,其中的数据流向如图2所示;对方输入流播放线程包含网络传输模块、视频音频的解复合模块、视频解压缩模块、音频解压缩模块、视频播放模块、音频播放模块,数据流向如图3所示。这三个线程之间的关系是:用户界面线程根据相应的信令启动或终止本地输出流产生线程,对于对方输入流播放线程则在用户界面线程启动时就已经创建,时刻等待视频音频数据的到来,直到应用程序结束,即用户界面线程终止。
   
   
   本软件的运作采用层级组网方式,即会议由一位主持人负责整个会议的召集和终止,他是最上层的管理者;会议的成员可以创建会议小组,每个组有一位组长,负责组的建立、取消以及组内成员的管理工作,组长是会议第二级的管理者。与通常的由MCU参与建立的层级组网方式不同,本软件所建立的会议成员之间可直接通信,不需要通过主持人或其他途径的数据切换;同样,组内成员也是直接通信,不需要通过组长或其他途径的数据切换。
   
   参考文献:
  [1]张明德等.视频会议系统原理与应用.北京:北京希望电子出版社,1999,8.
  [2]鲁士文.计算机网络原理与网络技术.北京:机械工业出版社,1996,12.
  [3]沈兰荪等.视频编码与低速率传输.北京:电子工业出版社,2001.
  [4]陈鸣.多媒体技术.北京:人民邮电出版社,1994,2.
  (作者单位:浙江宁波大学信息科学与工程学院)