法律状态公告日
法律状态信息
法律状态
2018-01-12
未缴年费专利权终止 IPC(主分类):H04N7/15 授权公告日:20090708 终止日期:20161123 申请日:20061123
专利权的终止
2009-07-08
授权
授权
2007-08-15
实质审查的生效
实质审查的生效
2007-04-25
公开
公开
发明领域
本发明属于计算机网络多媒体通信领域,主要涉及多个多点控制单元MCU级联的多点视频会议中,音频数据的转发和混合方法。
发明背景
视频会议系统在政府部门,商业、教育、医疗以及个人生活等方面的应用已经愈来愈广泛。实时的面对面般的视频和音频交流不仅方便了人们的生活,节省了大量的差旅费,提高了工作效率,同时反过来促进了视频会议相关技术的发展。人们对视频会议系统也提出了更高的要求。
多点控制单元MCU是基于H.323标准的视频会议中的重要组成部分。随着人们对大规模、大众化的视频会议系统的呼声日益高涨,单MCU的视频会议系统由于接入容量上的限制已经不能够满足人们的需求。为此,ITU等国际组织提出了使用MCU级联的方法来组建大规模的视频会议。
传统的MCU级联采用主从MCU的方式,即所有的从MCU级联到主MCU。混音方式为:各个从MCU将从客户端接收到的媒体流发送到主MCU,由主MCU混合处理后发还给各个从MCU最后再由从MCU转发给各个客户端。
以上级联方式和混音方法主要存在两个问题:(1)音频延迟大。由于区分主MCU和从MCU,音频媒体流从源端到目的端的过程由原先单MCU的:源端->MCU->目的端变成了:源端->源端所在从MCU->主MCU->目的端所在MCU->目的端(如果源端和目的端都连接在从MCU上)。这样多了两次从MCU和主MCU之间的转发延迟和网络传输延迟,最终将导致了客户端之间音频传输总延迟的增加,影响通话;(2)主MCU计算量大且存在单点故障。首先由于所有的音频媒体流都要发送的主MCU处理,最后在由主MCU将音频数据再发送到各从客户端或连接在主MCU上的客户端。主MCU的计算复杂度大于其他从MCU的复杂度,并且当主MCU出现问题时(例如崩溃)将导致整个系统的不可用。
发明内容
本发明的技术解决问题:克服现有技术的不足,提出一种基于不区分主从MCU的级联方式的多MCU视频会议系统中的混音方法,该法方法能够在同等网络条件下减少音频数据传输跳数和避免主MCU单点故障,具有更高可靠性。
本发明的技术解决方案:多MCU视频会议系统中的混音方法,其特点在于通过以下步骤实现:
(1)所有的MCU都注册到网守(GateKeeper,以下简称GK)上,每个MCU和其他MCU之间建立两两之间的连接,并且每个MCU维护一张和其他MCU的连接列表和一张需要混音的本地客户端列表;
(2)MCU根据本地混音客户端列表及客户端的请求将本地客户端发来的音频数据进行线性叠加,并将结果编码后发往各个对端MCU;
(3)MCU将步骤(2)中线性叠加的结果减去将要发往的客户端的音频数据(如果待混音客户端列表中包含将要发往的客户端)后,并与各个从对端MCU发来的解码后的音频数据进行混合,最后进行编码,并将结果给目标客户端。
本发明与现有技术相比的优点在于:本发明和传统主从级连方式相比,音频数据从一个客户端到另一个客户端的传播只需要经历:本地客户端->本地MCU->远端MCU->远端客户端(如图7所示),在同等网络条件下,更有利于改善音频数据的传输时延;而且由于本发明是基于网状MCU级连方法,不区分主MCU和从MCU,因此,能够避免由于主MCU故障而导致系统不可用的问题。
附图说明
图1为本发明的MCU级连MCU的网络拓扑结构;
图2为本发明的一个新MCU加入级连的过程;
图3为本发明的一个MCU退出级连的过程;
图4为本发明的音频数据在MCU的处理过程;
图5为本发明的MCU处理发往远端MCU音频数据的流程图;
图6为本发明的MCU处理发往本地客户端音频数据的流程图;
图7为本发明下音频数据从一个客户端到远端MCU的客户端的过程。
具体实施方式
(1)所有的MCU都注册到网守(GateKeeper,以下简称GK)上,每个MCU和其他MCU之间建立两两之间的连接,并且每个MCU维护一张和其他MCU的连接列表和一张需要混音的本地客户端列表,即通过GK实现了MUC之间的两两连接。
如图1所示,本发明MCU之间级连时不区分主MCU和从MCU,每个MCU都属于同一级别,并且MCU之间建立两两连接,构成网状拓扑。MCU之间是否建立连接,打开媒体通道由GK动态调度决定。
对于某个的客户端来说,与其直接相连的MCU称为本地MCU,与本地MCU相连的其他MCU成为远端MCU;对于某个MCU来说,直接连接与其相连的客户端称为本地客户端,而通过其他MCU与其间接相连的客户端成为远端客户端。
本地MCU维护一张远端MCU的列表(RemoteMCUList)和需要混音的本地客户端的列表(AudioToMixList)。MCU维护一张远端MCU的列表步骤如下:
(1)当MCU和GK连接成功后,GK向MCU发送已注册的其他MCU列表;
(2)MCU根据列表中的MCU地址,与其他的MCU发起连接;
(3)当MCU与其他MCU建立连接后,就在连接列表中添加一项;
(4)当某个MCU上所有终端都退出后,从连接列表中删除该MCU项。
远端MCU列表的维护在本地MCU和远端MCU建立/断开连接时进行,待混音本地客户端列表在主席控制模式下由主席客户端维护,在非主席模式下默认为所有本地客户端。
如图2所示,各个MCU和客户端都需要注册到GK上。当某个客户端要求建立或进入一个会议时,需向GK发送请求,GK从注册在其上的MCU地址池中根据一定的规则(如根据MCU的负载情况)选择一个MCU地址返回给客户端。客户端根据GK返回的地址向MCU发起呼叫,MCU接受呼叫后,检查客户端欲加入的会议是否已经存在于MCU上,如果存在则将该客户端加到会议的成员列表中,否则创建新的会议,同时向GK发送查寻请求,请求所有正在为客户端欲加入会议提供服务的MCU列表。本地MCU根据GK返回的MCU列表,依次向这些MCU发起呼叫,并建立连接(如果本地MCU和远端MCU已经建立连接则不需要再建立连接)。当和所有的MCU建立连接后,本地MCU需向GK报告已经加入级连通知,GK则将该MCU的ID加入到会议正在使用的MCU列表中。
如图3所示,当级连中的某个MCU上的属于一个会议的最后一个客户端退出时,即本地MCU的某个会议的本地客户端列表为空时,MCU需要退出属于该会议的级连。MCU向GK发送退出指定会议通知,GK返回本地MCU应该断开连接的MCU列表,MCU断开和列表中的MCU之间已建立的连接。
(2)MCU根据本地混音客户端列表及客户端的请求,将本地客户端发来的音频数据进行线性叠加,并将结果编码后发往各个对端MCU,实现MCU之间音频数据流的交互。
如图4、5所示,每个MCU接收到的音频数据流包括:本地客户端发送而来的音频数据和远端MCU发送而来的音频数据,而MCU之间音频数据交互的原则是只将本地客户端是音频混合结果发往远端MCU。本地MCU首先判断当前会议的模式,如果是主席控制模式,MCU会依次将AudioToMixList中的本地客户端的音频缓存Buffer中的数据叠加,如果是自由讨论模式,MCU则叠加所有本地客户端的音频缓存中的数据,最后音频数据经过编码后被发往远端MCU。
需要特别指出,这里的叠加并不是简单的叠加,而是包括了位扩展,溢出检测和f因子衰减等操作。
(3)MCU将步骤(2)中线性叠加的结果减去将要发往的客户端的音频数据(如果待混音客户端列表中包含将要发往的客户端)后,并与各个从对端MCU发来的解码后的音频数据进行混合,最后进行编码,并将结果给目标客户端,实现MCU和本地客户端之间的音数据交互。
如图4和图6流程,和客户端一样,本地MCU为每个远端的MCU分配一个音频缓存,从远端MCU发来的音频数据都将存于各自的缓存中。
MCU发送给本地某个客户端的音频数据不仅需要包括本地MCU上其他客户端的音频数据,而且还包从远端MCU发来的音频数据。在主席控制模式下,MCU需要先判断音频数据欲发往的本地客户端是否处于待混音列表AudioToMixList中,如果在则从步骤2的叠加结果中减去目的客户端发来的音频数据,接着将得到的结果和远端MCU发送而来的音频数据进行二次叠加;然后将叠加结果根据客户端的接收能力进行编码,最后将编码结果发往目的客户端。
图7以两个MCU,即MCUa和MCUb为例说明了音频数据在从源端a1到目的端b2的转发过程。首先,连接在MCUa上的客户端a1和客户端a2的音频数据被发送到MCUa,MCUa对a1和a2的是音频数据进行复合;然后,复合的数据流被发往与MCUa级联的MCUb,同时MCUb还收到来自本地客户端b1和b2的音频数据。由于目的端为b2,MCUb只混合b1和从MCUa得到的复合数据流。
上面对MCU网状级连和级连后MCU之间和MCU和客户端之间的混音策略做了详细说明,接着详细给出MCU加入和退出级连过程中的MCU和GK通讯的信令格式:
RAS_PDU
{
RasMsgIndentifer 8(bits) --信令固定头部标记
msgType 8 --消息类型
seqNumber 8 --消息序号
payloadLength 32 --净荷数据有效长度
payload X --净荷
}
RAS_PDU.RasMsgIndentifer:=H225_RasMessage.Choices
{
gatekeeperRequest =0X00
gatekeeperConfirm =0X01
gatekeeperReject =0X02
registrationRequest =0X03
registrationConfirm =0X04
...
McuToGK =0Xe1 --自定义MCU发往GK RAS信令
GKtoMcu =0Xe2 --自定义GK发往MCU RAS信令
}
RAS_PDU.msgType:=
{
MCUListRequest =0X01 --MCU列表请求 McuToGK
AnswerListRequest =0X02 --列表请求应答 GKtoMcu
JoinGroupNotification =0X03 --加入级连报告 McuToGK
ExitGroupNotification =0X05 --退出级联报告 McuToGK
}
seqNumber为0-255序号,用于同步消息MCUListRequest和AnswerListRequest。由MCU端在MCUListRequest消息中设置初值,GK须根据收到的MCUListRequest消息中的seqNnmber值来设置AnswerListRequest消息中的seqNumber值;
payloadLength表示净荷字符串的长度;
Payload域根据不同的消息类型,其含义也不同:
当msgType=MCUListRequest时
表示MCU请求级联列表的会议Id;
当msgType=AnswerListRequest时
表示正在召开请求会议的MCU Id列表,以“:”分割,最后以“:”结尾;
当msgType=JoinGroupNotification时
表示加入级联的MCU Id;
当msgType=MCUListRequest时
表示退出级联的MCU Id;
对于本领域的普通技术人员来说的得出其他优点和修改。因此,具有更广方面的本发明并不局限于这里所示出的并描述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下,可对其做出各种修改。
机译: 通过使用用户终端控制MCU和视频会议终端的控制方法,以及相同的视频会议系统
机译: 使用用户终端能够控制MCU和视频会议终端的控制方法以及相同的视频会议系统
机译: 使用用户终端和视频会议系统进行控制的能够控制MCU和视频会议终端的控制方法