背景技术
计算设备正不断被用于启用实时通信。作为示例,用户可以使用计算设备参与与一个或多个其它用户的会话。参与会话涉及发送或接收电子信息,如音频、视频或此两者。参与此类会话还发送或接收其它媒体类型,如文档、演示幻灯片、或任意其它形式的电子信息。该多媒体电子信息,尤其是音频和视频信息可使用诸如实时传输协议(“RTP”)来发送。RTP是一种因特网提议的标准协议,其规范“RFC 3550”可从<www.ietf.org/rfc/rfc3550.txt>获得。有关多参与者会议的因特网提议的标准协议的规范“RFC 3551”可从<www.ietf.org/rfc/rfc3550.txt>获得。这些规范通过引用整体结合于此。RTP可与其它协议一起使用,如会话启动协议(“SIP”)和实时流协议(“RTSP”)。SIP可用于提供管理计算设备之间的会话所必需的信令和其它功能。RTP和TRSP可用于传送信息,如音频和视频信息。
音频和视频信息可使用这些(和其它)协议在各种网络通信模型中,包括单点传送、多点传送、广播和洪泛式通信模型,从一个计算设备发送到其它计算设备。
单点传送通信模型,又被称为点对点通信,可用于从一个计算设备向另一个计算设备发送消息。在单点传送通信模型中,在发送者和接收者之间有一对一关联。在传统的单点传送通信模型中,多个参与者不能够同时参与会话,因为,根据定义,仅有两个计算设备在交换消息。尽管如此,链接多个计算设备以使单点通信模型中两个连接的计算设备中的一个向第三个计算设备转发消息,从而建立两条独立的单点传送连接是可能的。在这种情况下,会话中同时交谈的两个参与者可被第三个参与者如同在不同时间交谈一样听到,因为第三个参与者的计算设备可单独地接收来自其它两个参与者计算设备的音频信息。作为示例,假设A参与与B的会话,因此A的计算设备与B的计算设备相连接。在B的计算设备和C的计算设备之间可添加第二个连接,以使C也可以参与会话。在单点传送通信模型中,当A和B同时说话时,C可在A的语音之后听到B的语音。这是可以发生的,因为包含来自A的音频信息的消息被发送到B的计算设备,B的计算设备不处理该消息就向C的计算设备转发了该消息。尽管如此,计算资源会限制一个计算设备可同时连接的其它计算设备的数量。此外,若计算设备连接形成一个长链,则网络延时会使从链的一端到另一端的信息传输不适时。
多点传送通信模型可用于从一个计算设备向多个其它计算设备同时发送消息。该通信模型包括接收来自发送计算设备的消息并向所有连接的接收计算设备转发消息的转发计算设备。因此在转发计算设备和多个接收计算设备之间有一对多关联。因为转发计算设备接收来自接收计算设备的消息并向其发送消息,因此由于与那些对单点传送通信模型相类似的上述原因,多点传送通信模型不能够同时服务大量用户。特别是,转发计算设备可能没有足够的处理能力或其它计算资源以跟上大量的消息。
广播通信模型也可用于把来自广播计算设备的信息同时发送至接收计算设备。在广播通信模型中,广播计算设备甚至不需要知道接收计算设备。事实上,由发送计算设备使用广播通信模型发送的消息甚至可能不包含接收计算设备的目标地址,因为发送计算设备既不知道接收设备,也不关心哪个计算设备将接收并处理它的消息。为广播消息,广播计算设备仅在网络上向连接的广播计算设备发送消息,而不顾消息是否最终被接收。连接到网络的其它计算设备可选择处理或忽略发送自广播计算设备的消息。作为示例,若计算设备A在与其连接的网络中广播消息,则同样连接至网络的计算设备B可选择处理该消息。相反,连接至同一网络的计算设备C可以选择忽略由计算设备A广播的消息。在广播通信模型中,从计算设备发送的消息可能不遍历连接至网络的所有设备。作为示例,代理服务器、网络地址转化器、路由器、网关、以及路由网络话务或互连网络的其它设备将不处理未包含目标地址的消息。因此,由广播计算设备发送的消息不会到达所有预订接收者。
洪泛式通信模型可用于将来自发送计算设备的信息发送至发送计算设备已知的每一个其它计算设备。每个如此连接的计算设备可使用单点传送通信模型与其它设备交换消息。洪泛式通信模型的问题是相同信息可能从多个设备抵达一个计算设备,且相同信息可多次或甚至无限次穿过系统,除非采取预防措施。作为示例,若计算设备A向计算设备B和C转发消息,计算设备B向计算设备C和A转发消息,而计算设备C向计算设备A和B转发消息,则发送自计算设备A的消息可抵达计算设备B两次:一次直接来自计算设备A,而另一次来自计算设备C,计算设备C转发从计算设备A接收到的消息。这是网络资源的低效使用。
上述通信模型通常没有一个统一的体系结构。统一的体系结构是在其中计算设备的角色被预先选择为客户机或服务器的一种体系结构。使用非统一体系结构的计算设备通常不能动态地改变它们的角色以有效地路由消息。
上述通信模型可能在连接大量参与者时低效地路由消息,或由于例如计算资源约束而无法支持大量参与者。因此,有效地使用网络资源来操纵并向各个不同计算设备的用户发送多媒体信息以供有意义地呈现的有效方法将具有极大的效用。
具体实施方式
在一个实施例中,提供了一种用于实时多媒体信息的有效路由的系统。该系统通过配置并使用多控制单元(“MCU”)连接器来有效地路由包含实时多媒体信息的消息,该连接器是被优化成发送诸如包含多媒体信息的消息等消息的计算系统的专用组件。计算设备可利用多个MCU连接器来同时动态地创建与计算设备(如,摄像机、麦克风、扬声器等)或其它计算设备的资源的连接。因此,MCU连接器以与物理交叉开关(crossbar)类似的方法启用了逻辑连接的动态创建。利用计算设备的MCU连接器的一种应用程序,如互联网协议上的语音(VoIP)、流式多媒体播放器、或需要路由消息的任何应用程序可为MCU连接器配置角色。MCU连接器的角色可定义连接器如何运行。该应用可使用MCU连接器的应用程序接口将MCU连接器的角色配置为客户机、服务器、或客户机-服务器。
创建或消耗消息的应用程序可配置MCU连接器的角色为客户机。创建或消耗消息的应用程序的示例通常包括,例如,MICROSOFT MESSENGER、VoIP客户端以及SIP客户端。常被称为服务器应用程序的某些应用程序在这些应用程序希望创建或消耗消息时,也可配置MCU连接器作为客户机运行。作为示例,网关或代理服务器可配置MCU连接器作为客户机运行,因为其消耗来自客户机的消息并创建发送至服务器的消息。网关通常从一个网络桥接或传输信息至另一个网络,且对一个网络来说是客户机,而对另一个网络来说是服务器。类似的,代理服务器常对服务器担当客户机,而对客户机担当服务器。作为客户机运行的MCU连接器可将其所有现用输入路由至其现用输出的每一个。现用输入或输出是连接至另一个连接器或创建或消耗消息的计算设备的的输入或输出。作为示例,VoIP应用程序可回放所有在扬声器或头戴式耳机的现用输入上接收的抵达消息,并向现用输出发送包含所有音频输入的消息,如来自麦克风或音频文件。另一个示例是在传统电话系统和VoIP系统之间转化音频的网关。该网关可配置MCU连接器作为客户机运作,因其接收来自电话系统或VoIP系统的音频信息,并将其转化成其它系统可接受的消息(或信号)。当MCU连接器作为客户机运行时,它不会进行有关传入消息的内容的任何处理。
当消息内容被处理或被路由至其它计算设备时,应用程序可配置MCU连接器的角色为服务器。作为示例,当应用程序接收来自会话中多个参与者的音频和视频信息时,应用程序需要处理接收到的音频、选择适当的视频源、并向其它计算设备发送接收到的音频和视频。处理音频可包括,例如“混合”音频以使来自同时交谈的参与者的音频作为同时的话音而非相继的话音被听到。因此,在两个计算设备上执行的应用程序可将来自三向会话的两个参与者的音频和视频信息发送至其MCU连接器作为服务器运行的第三个计算设备。该MCU连接器在其使用与MCU连接器相关联的计算设备向第三个参与者播放混合的音频,或向另一个计算设备转发音频信息之前混合该音频信息,并也选择有关最后一个的发言者的视频信息。作为示例,若A、B和C参与对话,其中A首先发言,B和C同时跟随其后,则A将听到来自B和C的混合音频,B将先听到A的音频然后听到C的音频,而C将先听到A的音频然后听到B的音频。此外,A将接收B或C的视频信息(或两者),B将先接收A的视频信息然后接收C的视频信息,而C将先接收A的视频信息然后接收B的视频信息。因此,当作为服务器运行时,MCU连接器在路由消息时处理或选择多媒体信息。
当应用程序既需要创建或消耗消息,又需要向作为客户机运行的其它MCU连接器路由消息时,应用程序可将MCU连接器的角色配置为客户机-服务器。作为示例,邀请基于VoIP的电话参与会话的VoIP应用程序对VoIP应用程序作为客户机运行,而对于基于VoIP的电话作为服务器运行。因此,作为客户机-服务器运行的MCU连接器进行类似客户机和类似服务器的操作两者。
MCU连接器还可在混合器、反射器或选择器模式中运行。在混合器模式中,MCU连接器如上文关于作为服务器运行的MCU连接器的示例中所述的,通过混合音频并选择视频来处理音频信息。视频可以通过,如在彼此紧挨地放置图象、在大视窗上的小视窗内放置图象、平铺显示图象、或叠加图象而被混合。在反射器模式中,MCU连接器可直接转发接收到的消息而不混合音频。作为示例,若A、B和C参与对话,其中A首先发言,B和C同时跟随其后,则A将以MCU连接器转发消息的任何顺序接收到B的音频和C的音频。在选择器模式中,MCU连接器可选择输入中的一个并忽略其它输入。作为示例,若A、B和C参与对话,其中A首先发言,B和C同时跟随其后,则A将接收仅来自B或C的消息,而没有其它。选择器模式更常见地用于视频。
在一个实施例中,选择器被配置成基于信息的特征选择音频或视频信息。作为示例,可选择发言最响亮的参与者的音频和视频信息。
在一个实施例中,混合和选择可共同进行。作为示例,在一个大型对话或电子教室环境中,MCU连接器可被配置成混合出席者(如,教师)和提问的参与者(如,学生)的音频和视频信息。
通过使用MCU连接器组件路由消息,应用程序能够通过将计算设备配置为客户机、服务器、或两者来为多媒体消息动态地选择路由,以使单个计算设备或预先选择的计算设备无需路由消息。因此,由于多个计算设备能被用作为客户机、服务器或两者,且其角色和模式能在会话或其它应用程序对话的过程中被动态选择,所以多媒体消息可被有效地路由。
现在转向附图,图1是示出用于有效地路由实时多媒体信息的系统的框图。该系统包括多个计算设备102和网络104。网络104可以是,例如,内联网、因特网或任意其它形式的网络。计算设备可连接至网络。计算设备也可独立地相互连接,如经过专用连接108。该系统还可包括网关109或经过连接112连接到网关的设备110。网关可以是,如,在VoIP电话设备和连接至网络的计算设备之间桥接或转化消息或信号的设备。网关经由连接111连接至网络。系统的各种网络连接可以是有线的、无线的、或者组合。各种网络连接可以使用各种协议,如传输控制协议/互联网协议(“TCP/IP”)或用户数据报协议(“UDP”)。
图2是示出图1的计算设备的实施例的框图。计算设备202包括音频组件204、视频组件206、文档组件208以及MCU连接器(“连接器”)组件210。音频组件可处理音频信息。作为示例,音频组件可接收来自麦克风的音频信号,或在扬声器上播放音频信号。音频组件还可如连接器组件所指示的那样混合音频信号。作为示例,音频组件可将从麦克风接收的音频信号与包含在从连接器所连接的其它计算设备接收的消息内的音频信号混合。
视频组件可处理视频信号。作为示例,视频组件接收来自视频摄像机的视频,或在屏幕上播放视频。视频组件还进行诸如通过覆盖或镶嵌来自多个来源的视频图象来混合视频的其它功能部件。
文档组件可处理其它形式的电子信息。作为示例,文档组件可注册参与者对文字处理文档的操作,并通过网络向其它参与者转发那些操作。类似的,文档组件可接收其它用户对文档进行的操作,并在连接至计算设备的屏幕上显示那些操作。
连接器组件创建并配置各种形式的连接,如音频和视频连接。计算设备可包括多个连接器组件(未示出)。连接器组件可使用其它组件用于例如,混合音频或视频信息。连接器组件在以下关于图3中进一步描述。
图3是示出图2的连接器组件的实施例的框图。连接器组件包括多个输入,如输入304、305、306和307。连接器还包括多个输出,如输出308、309、310和311。输入和输出被用于连接包括计算设备的其它设备,以接收或发送信息。连接器组件可以用多种方式来配置。作为示例,输入304可被配置成向输出308、309、310和311转发所有的传入信号。输入307可以用类似的方式配置。输入305可被配置成不转发任何输入。输入306可如在处理信息期间被动态配置成以适当的方式(未示出)转发输入。作为示例,输入306可被配置成仅在接收到的视频信号源也是当前发言人时向连接至连接器组件输出的设备转发接收到的视频信号。
连接器组件具有揭示多种方法和属性的API,并使应用程序能够注册其本身以接收连接器组件生成的事件通知。一组“平台”函数(如,方法、属性和事件)涉及利用设备的媒体栈。媒体栈提供音频和视频的输入和输出。作为示例,栈可提供来自麦克风或摄像机的输入,以及至扬声器和视频屏幕的输出。服务器和客户机,以及事实上被参与者使用的任何计算设备可使用类似且兼容的媒体栈。平台函数可使应用程序能够查询连接器以确定设备上可用的输入和输出。通过使用平台函数,应用程序能够,例如,使用设备接收来自参与者的音频和视频输入,并在设备上播放从其它参与者接收的音频和视频。由于连接器具有用于此类特征的API,因此,应用程序开发者不必了解如何控制这些由多个厂家制造的输入或输出设备。
应用程序可使用连接器组件的API来动态地添加或移除连接。作为示例,应用程序可在额外的参与者加入会话时添加连接,或在参与者离开会话时移除连接。
连接器组件的API还具有关于消息路由和模式选择的函数。路由可由用于音频和视频的应用程序基于为连接器指定的角色(如,客户机、服务器、和客户机-服务器)或基于指定的路由来配置。API可用于选择连接器组件模式,如混合器、反射器或选择器模式。
图4示出使用多个连接器的系统的实施例的框图。该系统包括三个计算设备:计算设备A 402、计算设备B 404以及计算设备C 406。计算设备可经由通信链路410连接至网络,如因特网408。每一个计算设备包括一个或多个连接器。在所示的实施例中,计算设备A、B和C分别具有连接器416、418、420。在所示的实施例中,计算设备A和B被配置为客户机,而计算设备C被配置为服务器。服务器的连接器被配置为在混合模式中运行。作为客户机运行的连接器416和418的每一个被示出为具有两个输入和输出。到这两个连接器的每一个的输入都来自与连接器的计算设备耦合的麦克风。音频输入的其它来源也是可能的,如来自CD播放器、自动唱片点唱机、MP3播放器、以及实际上任何音频来源。到这两个连接器的每一个的第二个输入来自其它计算设备,例如,通过网络接收到的(“网络输入”)。这两个连接器的每一个的输出被耦合至连接器的计算设备的扬声器。可使用任何音频输出来替代扬声器,包括,例如接收器、放大器、头戴式耳机、录音机等。这些连接器的每一个的第二个输出将来自连接器的输出发送至连接器的计算设备所连接的其它计算设备(“网络输出”)。被配置为在混合模式中运行的服务器的计算设备C的连接器具有三个输入和输出。该连接器的三个输入分别接收来自麦克风、计算设备A(“网络输入A”)和计算设备B(“网络输入B”)的信息。该连接器的三个输出分别向扬声器、计算设备A(“网络输入A”)和计算设备B(“网络输入B”)发送信息。所示的计算设备C的连接器还可具有其它输入和输出(未示出)。计算设备还可具有其它连接器(也未示出)。
所示的配置可在利用三个所示的计算设备中的每一个的参与者之间的三向会话中使用。假设参与者A、B和C分别利用计算设备A、B和C一起参与了在线会话。连接器A向其网络输出路由其从参与者A处接收到的话音信息,并经过其网络向其扬声器路由其从其它计算设备接收的信息。类似的,连接器B经由其麦克风输入向其网络输出路由其从参与者B处接收到的信息,并经过其网络向其扬声器输出路由其从其它计算设备接收的信息。作为服务器在混合模式中运行的连接器C在向网络输出转发混合的信息之前混合从其麦克风输入和其两个网络输入的每一个接收到的信息。作为示例,连接器混合经由其麦克风输入从参与者C接收的信息,和经由其网络输入A从参与者A接收的信息,并经由其网络输出B向参与者B的计算设备转发混合的信息。类似的,连接器混合从参与者C的信息,和经由其网络输入B从参与者B接收的信息,并经由其网络输出A向参与者A转发混合的信息。连接器C同样混合经由网络输入A和B从参与者A和B接收的信息,并向其扬声器输出转发混合的信息。通过如此进行,三个参与者的每一个接收来自其它两个参与者的混合的音频信息。
该系统还具有类似地配置的视频连接器(未示出)。在此情况下,计算设备C的视频连接器可在选择模式中配置,并可为其它两个参与者的每一个选择发言参与者的视频信息,并可为当前发言的参与者选择最后一个发言人的视频信息。视频连接器可具有摄像机输入而非(或除此之外的)麦克风输入,并可进一步具有监视器输出而非扬声器输出。系统也可在其它视频模式中被配置,如混合器模式。
通过使用被适当地配置的视频和音频连接器,该系统能够适合参与者有效地路由实时多媒体信息的需求。作为示例,若使用计算设备A的参与者A与使用计算设备C的参与者C进行会话,则计算设备A和C的连接器可在客户机模式中运行。当参与者C邀请参与者B加入会话时,计算设备C的连接器可动态地改变其角色和模式,以在混合器模式中作为服务器运行。因此,计算设备A、B或C无需被连接至能够向所有三个用户路由信息的第四个计算设备。
图5是示出make_connections(建立连接)例程的实施例的流程图。该例程由连接器组件执行并配置路由。连接器的路由指示哪些输入被连接至哪些输出,由此在连接器的输入和输出之间形成连接。例程在块502处开始,在那里它接收角色、音频路由和视频路由的指示作为参数。路由可基于例程的参数中所指定的角色和路由来配置。在块504处,例程基于指示的角色配置连接器。作为示例,若指示的角色为客户机,则例程可配置连接器向所有输出转发所有接收到的输入。在块506处,例程如在接收到的参数中所指示的那样建立所有音频连接。在块508处,例程如在接收到的参数中所指示的那样建立所有视频连接。例如,当路由在例程的参数中被指定时,例程需要建立音频和视频连接。当需要多媒体信息的专用处理时,使用连接器的应用程序可指定音频和视频路由。作为示例,具有多个参与者的电话会议应用程序可能希望与具有较少数量参与者的VoIP应用程序不同地路由信息。作为另一示例,这些应用程序可能希望为某些参与者而非其它人启用视频会议(例如,基于参与者的计算设备的能力)。音频路由可指定使用与附加的摄影机相关联的麦克风(而非与计算设备直接相关联的麦克风),并将其连接至连接器的网络输出。视频路由可指定摄影机的网络输出同样连接至连接器的输出。在块510处,例程返回其调用程序。
图6是示出由在音频混合器模式和视频选择器模式下运行的连接器执行的路由例程的实施例的流程图。该例程确定当连接器在音频混合器模式和视频选择器模式下运行时如何路由音频和视频消息。例程在块602处开始。在块604处,例程选择会话中的第一个参与者。在块606处,例程混合来自除所选的参与者之外的所有参与者的所有音频输入。作为示例,若A与B和C进行会话,而A是所选参与者,则例程混合来自B和C的音频输入。A的音频不需要被混合,这是因为A知道A的音频信息。此外,若A的音频信息被混合且被返回给A,则网络延时将导致A在发送音频信息的短时间之后接收到A所发送的音频信息,这将导致在A的部分的混淆。在块608处,例程向选择的参与者发送在块506混合的音频。继续上述示例,例程向A发送B和C的混合音频。
在块610,例程向所选参与者发送除所选参与者之外的最近发言的参与者的视频信号。作为示例,若A与B和C进行会话,B是最后一个发言人而A是当前发言人,则A将不接收音频信号(因为A正在发言)并接收B的视频信号(因为B是最后一个发言人)。相反,B和C将接收A的音频和视频信号,因为A是当前发言人。在一个实施例中,在块610处,参与者的视频信息被混合。作为示例,所有发言人的视频信息被平铺显示。平铺显示视频信息包括在相邻的视窗中定位来自参与者的视频信息。
在块612处,例程选择不是发言人的下一个参与者。在块614处,例程确定是否没有更多的参与者。如果是这种情况,则例程继续到块616。否则,例程在块606处继续。在块616,例程返回到其调用程序。
图7是示出由在反射器模式中运行的连接器执行的路由例程的实施例的流程图。该例程确定当连接器在反射器模式中运行时如何路由音频和视频消息。例程在块702处开始,在块704处,例程选择不是当前发言参与者的第一个会话参与者。在块706处,例程向所选择的参与者发送发言人的音频消息。在块708处,例程向所选择的参与者发送发言人的视频消息。若有多个发言人,则将顺序地发送来自发言人的音频和视频。作为示例,若参与者A、B和C在进行会话,其中B和C正同时发言,A在接收C的音频和视频之前接收B的音频和视频。在块712处,例程确定是否不再有参与者被选择。若是这种情况,则例程在块714处继续。否则,例程在块706处继续。在块714处,例程返回到其调用程序。
图8是示出由在选择器模式中运行的连接器执行的路由例程的实施例的流程图。该例程确定当连接器在选择器模式中运行时如何路由音频和视频消息。例程在块802处开始,在块804处,例程选择不是当前发言参与者的第一个参与者。在块806处,例程向所选择的参与者发送发言人的音频消息。在块808处,例程向所选择的参与者发送发言人的视频消息。在选择器模式中,仅来自一个参与者的音频和视频信息将被发送和接收。作为示例,若参与者A和C正进行会话,其中B和C正同时发言。A仅接收B的音频和视频信息。在块810处,例程选择不是发言人的下一个参与者。在块812处,例程确定是否不再有参与者。若是这种情况,则例程在块814处继续。否则,例程在块806处继续。在块814处,例程返回到其调用程序。
在一个实施例中,选择器模式被用于选择视频信息。这种情况下,当视频信息被选择,音频信息将被混合。因此,在块806处,来自所有参与者的音频将被混合并转发。
会话中的参与者可使用各种形式的计算设备。作为示例,视频会议中的参与者可使用人计算机,第二一个参与者可使用蜂窝式电话,而第三个参与者可以使用能够接收并发送音频和视频信息的某些其它形式的计算设备。使用个人计算机的参与者希望在会话期间接收并发送音频和视频信息。相反,使用蜂窝电话的参与者可能仅希望接收音频信息。最后,使用能够发送并接收音频和视频信息的蜂窝式电话(如,视频电话)的参与者可能同样希望接收并发送音频和视频信息。
其上实现用于实时多媒体信息的有效路由的系统的计算设备可包括中央处理单元、存储器、输入设备(如键盘和定位设备)、输出设备(如显示设备)、以及存储设备(如磁盘驱动器)。内存和存储设备是包含实现安全系统的指令的计算机可读介质。此外,数据结构和消息结构可被存储或经由诸如通信链路上的信号的数据传输介质传输。
图1示出了其中可实现实时多媒体信息的有效路由的系统的合适操作环境的示例。该操作环境仅是合适的操作环境的一个示例,并非试图对系统的使用范围或功能提出任何限制。其它众所周知的适合使用的系统、环境、和配置包括个人计算机、服务器计算机、包括“智能”蜂窝式电话的手提式和膝上型设备、多处理器系统、基于微处理器的系统、可编程消费者电子设备、网络PC、小型机、大型计算机、包含上述任意系统或设备的分布式计算环境等等。
用于有效路由实时多媒体信息的系统可在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的通用上下文中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。典型的,程序模块的功能可以如同需要的那样在各种实施例中组合或分布。
从前面描述的,可以理解,在此描述的本发明的特定实施例是为了举例说明,但是可以进行各种修改而不脱离本发明的精神和范围。因此,本发明除了如所附的权利要求书之外,没有限制。