H.323电视会议系统终端的实现
发布时间:2006-10-14 4:14:17   收集提供:gaoqian
朱凯,孟相如,马志强


1引言

  随着计算机网络技术和多媒体通信技术的迅速发展,电视会议或多媒体会议得到业界的普遍关注,目前基于IP的H.323电视会议系统已成为研究和开发的热点。H.323协议是在原H.320协议的基础上发展起来的,它完全兼容原H.320系统。H.323能运行在通用的网络体系平台上,因而具有网络独立性,同时,它还提供了网络带宽管理功能,支持多点会议和多播(Multicast)功能,并实现了不同厂商的多媒体产品和应用的互操作性。

2 H.323系统及终端结构

  H.323是国际电信联盟电信标准部(ITU-T)制定的标准,用来在基于包交换的网络上传输音频、视频和数据[1]。它描述了呼叫信令和控制、多媒体传输和控制、带宽控制以及多点会议等业务,主要由终端(Terminal)、网关(Gateway)、网守(Gatekeeper)和多点控制单元(MCU)4部分组成。H.323系统的基本组成单位是“域”(Zone),一个域至少包括一个终端,而且必须有一个且只有一个GK。图1是一个典型的H.323系统。

  H.323终端是提供单向或双向实时通信的客户端,具有对视频和音频信号的编解码及显示功能,还具有传送静止图像、文件、共享应用程序等数据通信功能[2]。H.323终端允许不对称的视频传输,即通信双方可以以不同的图像格式、帧频和速率进行传输,这给参会者带来了很大的灵活性。本系统采用的终端结构和相应的协议,其中涉及的协议如下:

  (1)H.225:基于分组的多媒体通信系统中的呼叫信令和媒体流打包协议,定义通信中的具体信令和RTP/RTCP的用法;

  (2)RAS:端点和网守之间的协议,采用H.225中的消息在端点和网守之间实现注册、接入许可、带宽修改、状态和拆除程序等功能,打开RAS信令通路后才建立其他H.323通路,RAS、呼叫信令通路和H.245控制通路是各自独立的,没有网守的网络环境是不用RAS信令的;

  (3)G.711:语音PCM编解码标准(64 kbit/s);

  (4)G.722:7 kHz音频编解码标准(64 kbit/s);

  (5)G.723.1:低速语音编解码建议,提供高效语音压缩编解码(5.3 kbit/s或6.3 kbit/s);

  (6)G.729:低速语音编解码建议,电话网质量的语音编码(8 kbit/s);

  (7)H.261:视频编解码标准(N×64 kbit/s);

  (8)H.263:低比特率视频编解码标准(速率由网络和终端决定,最低可达20 kbit/s左右);

  (9)H.245:多媒体通信控制协议,管理H.323系统的端到端控制消息,包括能力交换、逻辑信道的开关等过程;

  (10)T.120:多媒体数据传输协议。

3 H.323终端实现方法

3.1 API及应用程序结构

  本文的H.323终端实现运用了OpenH323 Library,PWLib(Portable Windows Library)等API。OpenH323 Library[3]是建立在PWLib[3]上的一种开放源码的C++类库,描述的是H323 Version2.0,适用于Windows平台和Unix平台。 OpenH323 Library的结构比较复杂,包含100多个类,每个类都代表H.323协议中的某个单元或功能[4],主要是H323Endpoint,H323Listener,H323Transport,H323Connection,H245Negotiator,H323Channel,H323Capability和H323Codec这几个类,其中最重要的是H323Endpoint和H323Connection,前者是所有基于OpenH323 Library的基础。应用程序一般要创建一个H323Endpoint类的派生类的实例,这是因为通过H323Endpoint类可以直接或间接地对整个OpenH323 Library的各种主要类进行调用和处理。应用程序可以在H323Endpoint派生类中定义各种属性和方法,这些属性和方法可用于设定终端的一些初始化的或者基本的属性,如振铃时播放的音乐文件的名称,缺省的呼叫设置,终端的能力集等等。



  可以看出,各个类之间的关系是相当密切和复杂的,然而,亦有着很清晰的主线。上图的核心是Endpoint(H323Endpoint),该类包含了3大功能:

(1)能力管理—对应Capability:每一个Capability类的派生类对应一个H323Codec类的派生类,而Codec实例是在逻辑信道Channel的实例中使用的。Codec的实例由相关的Capability实例负责创建。

(2)连接管理—对应Connection:一个终端可以包含多个连接,由一个“连接字典”管理这些连接,每一个连接可能对应多个Channel和Negotiator。

(3)侦听管理—对应Listener:侦听线程在接收到呼入时,创建Transport实例,再在Transport的基础上建立Connection。 运用OpenH323 Library开发基于H.323协议的多媒体应用程序。

3.2 终端实例

  本系统的开发环境是由实验室PC机组成的局域网,每台PC机都配有摄像头、麦克风等多媒体设备,以Wingdows2000professional为平台,采用VC++6.0作为开发工具。本实例主要包括MyH323EndPoint类(代表终端,继承自H323EndPoint)、MyH323Connection类(代表一个连接,继承自H323Connection)和几个用户接口类,图5是终端实现流程图,包含以下几个阶段:

  (1)应用程序初始化:这部分主要是对应用程序进行初始化工作,包括应用程序各种命令的帮助信息的显示,分析用户输入,设置应用程序参数等。

  (2)创建MyH323EndPoint实例:这是通过调用继承自H323EndPoint类的MyH323EndPoint类的构造函数来实现的。

  (3)初始化MyH323EndPoint实例:调用MyH323EndPoint:Initialise函数对终端实例进行初始化,包括设置(获得)本地用户名,本地侦听端口,缺省呼叫设置,查找和设置视频音频设备和参数,设置终端能力集,打开RAS的信道和H.225的TCP信道。

  (4)等待呼入或发起呼叫:根据用户的命令,进入等待呼入状态(打开TCP侦听线程)或者发起一个新的呼叫(调用MyH323EndPoint::MakeOutgoingCall)。

  (5)等待用户命令:调用MyH323EndPoint::AwaitTermination函数,等待用户的输入命令,然后根据用户的输入命令执行不同的操作(呼叫保持,呼叫前转,调整音量…)。

  H323终端在发起呼叫或者接纳一个呼入时,一般遵循以下5个过程:

A:呼叫建立,包括接纳控制(H.225信令,RAS过程);

B:通信能力交换和模式设定,以协调通信双方的互通性(H.245控制过程);

C:建立声像通信逻辑通道,包括会议通信的建立(H.245控制过程);

D:通信过程中的呼叫服务,包括带宽修改,由点到点通信扩展为会议通信等(H.225信令,RAS过程);

E:呼叫终结,关闭所有信道(H.245控制过程)。

4 结论

  本文在介绍H.323电视会议系统及其终端结构的基础上,用一个实例说明了如何通过OpenH323 Library来实现H.323电视会议系统终端。


摘自 《中国有线电视》
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50