朱凯,孟相如,马志强
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 Library来实现H.323电视会议系统终端。
摘自 《中国有线电视》
|