具体实施方式
这里讨论了在一实时控制协议(RTCP)消息中嵌入一会话描述消息。多媒体或单个媒体演示使用实时传输协议(RTP)分组从一媒体内容源(比如服务器设备)被流化到一受信者(比如客户机设备)。与被流化的演示有关的控制信息也使用RTCP消息从媒体内容源被发送到受信者。至少一些RTCP消息内嵌入的是描述被流化的演示的会话描述消息。
在这里的讨论中,参照从媒体内容源被流化到受信者的多媒体演示。媒体内容源可以是任一媒体内容源,例如服务器设备。受信者可以是任一媒体内容受信者,例如客户机设备。此外应该理解,尽管这里的讨论是指被流化的多媒体演示,但是单个媒体演示也可以以和这里关于多媒体演示讨论的方式所相同的方式来流化。
图1说明了可以使用这里所述的RTCP消息内嵌入的会话描述消息对媒体进行流化的示例网络环境100。在环境100中,多个(a个)客户计算设备102(1)、102(2)、…、102(a)通过网络106耦合到多个(b个)服务器计算设备104(1)、104(2)、…、104(b)。网络106用来表示多种常规网络技术和类型的任一种(包括有线和/或无线网络),采用了多种常规网络协议的任一种(包括公共和/或私有协议)。网络106可以包括例如:互联网以及可能一个或多个局域网(LAN)的至少一部分。
计算设备102和104可以分别是多种常规计算设备的任一种,包括台式PC、工作站、大型计算机、互联网设备、游戏控制台、手持PC、蜂窝电话、个人数字助理(PDA)等等。设备102和104的一个或多个可以是相同类型的设备,或是不同类型的设备。
服务器设备104可以使多种数据的任一种可用于流化到客户机102。术语“流化”是指表示媒体的数据通过网络被提供给客户机设备,且内容的回放会在内容被完全传送以前开始(根据需要提供数据而不是在回放前预先传送全部的数据)。数据可以是公众可用的或是受限的(例如受限为仅仅特定的用户、仅在付了适当费用后才可用等等)。数据可以是各种一类或多类内容的任一种,比如音频、视频、文本、动画等等。此外,数据可以被预先记录或者是“实况的”(例如在进行音乐会时捕获音乐会的数字表示,并且仅在捕获后一会儿就可用于流化)。
客户机设备102可以从把流化媒体内容保存为一文件的服务器104接收流化媒体,或者从接收来自某一其它信源的流化媒体的服务器104接收流化媒体。例如,服务器104可以从把流化媒体内容保存为一文件的另一服务器接收流化媒体,或者可以从某一其它信源(例如对“实况”事件编码的编码器)接收流化媒体。
如这里所使用的,流化媒体是指把一个或多个媒体流从一个设备流化到另一个设备(例如从服务器设备104流化到客户机设备102)。媒体流可以包括多类内容的任一类,比如音频、视频、文本等等的一个或多个。
图2说明了可以用这里所述的RTCP消息内嵌入的会话描述消息对媒体内容进行流化的示例客户机和服务器设备。一般在客户机设备102和服务器设备104处遵循多个不同的协议,以便把媒体内容从服务器设备104流化到客户机设备102。这些不同的协议可以负责流化过程的不同方面。尽管未在图2中示出,一个或多个其它设备(例如防火墙、路由器、网关、网桥等等)也可以位于客户机设备102和服务器设备104之间。
在图2的例子中,应用层协议150、传输协议152以及一个或多个传送信道协议154可以被用作流化过程的一部分。也可以采用图2未示出的其它协议(例如在应用层协议150和传输协议152之间可能有其它协议)。应用层协议150是在应用层用于控制具有实时属性的数据传递的协议。应用层协议150提供了一可任选扩展的框架,用于使能实时数据的受控、立即响应式传送,比如流化音频和视频内容。应用层协议150是用来开始和引导来自媒体服务器的流化多媒体传递的控制协议。应用层协议150的例子包括实时流化协议(RTSP)以及超文本传输协议(HTTP),前一协议在1998年4月的“网络工作组请求注解(RFC)2326”中描述,后一协议在1996年5月的“网络工作组请求注解(RFC)1945”或者1997年1月的“网络工作组请求注解(RFC)2068”中描述。
应用层协议150使用传输协议152来传送实时数据,比如流化的音频和视频。传输协议152定义了媒体流的分组格式。传输协议152提供适合应用程序通过多播传送或单播传送网络服务来发送诸如音频、视频或模拟数据等实时数据的端对端网络传输功能。传输协议152的例子包括在2003年7月的“网络工作组请求注解(RFC)3550”中描述的实时传输协议(RTP)和实时控制协议(RTCP)。也可以使用RTP和RTCP的其它版本,比如将来的草案或标准化的版本。RTP未解决地址资源保留,并且不保证实时服务的服务质量。数据传输由控制协议(RTCP)扩充以便能以可缩放为大多播传送网络的方式来监视数据传送,并且提供一些控制和标识功能。
RTCP协议把一个或多个控制消息组成一个单元,称为RTCP分组。一个或多个RTCP分组内嵌有包括会话描述消息在内的控制消息。会话描述消息描述了从服务设备104被流化到客户机设备102的多媒体演示的属性。因此,从服务器设备104到客户机设备102的流化媒体包括会话描述消息。
传输协议152使用传送信道协议154进行传输连接。传送信道协议154包括用于把数据分组从服务器设备104传输到客户机设备102的一个或多个信道。每个信道一般用来为单个媒体流发送数据分组,然而在替代的实施例中,可以使用单个信道来为多个媒体流发送数据分组。传送信道协议154的例子包括传输控制协议(TCP)分组和用户数据报协议(UDP)分组。TCP确保数据分组的传送,而UDP不确保数据分组的传送。通常,和使用UDP传送数据分组相比,使用TCP传送数据分组更为可靠,但也更消耗时间。
图3说明了在多播传送环境中可以用这里所述的RTCP消息内嵌入的会话描述消息对媒体内容进行流化的示例客户机和服务器设备。在特定的实施例中,图2的协议150、152和154包括在图3的客户机和服务器设备中,但图中未示出。而且,尽管图3中未示出,一个或多个其它设备(例如防火墙、路由器、网关、网桥等等)也可以位于客户机设备102和服务器设备104之间。
服务器设备104的流模块182把同一多媒体演示流化成多个(x个)客户机设备102(1)、102(2)、…、102(x)的每一个。每个客户机设备103都有一个流媒体播放器184,该播放器接收流化的多媒体演示,并且在客户机设备102处处理接收到的流,一般是在客户机设备102处回放多媒体演示。相同的数据近乎同时被流化到每一个客户机设备102,允许服务器设备104一次仅流化同一多媒体演示的一次出现,而监听这一呈现的各个客户机设备102被流化。
流媒体186包括其中嵌有一个或多个会话描述消息的RTCP消息。相同的会话描述消息在多媒体演示流化期间可以被广播多次,从而使新客户机设备102在流化已经开始后监听流媒体,但仍旧接收描述多媒体演示的会话描述消息。通过在流媒体186的RTCP消息内嵌入会话描述消息,客户机设备102无须监听可能来自服务器设备102以外的设备的单独的流或广播,以便接收会话描述消息。
第10/693430号美国待批申请描述了这一多播传送环境的例子,该申请于2003年10月24日提交,题为“Methods and Systems for Self-DescribingMulticasting of Multimedia Presentations”,其通过引用被结合于此。
图4说明了在服务器端播放列表环境中可以用这里所述的RTCP消息内嵌入的会话描述消息对媒体内容进行流化的示例客户机和服务器设备。在特定的实施例中,图2的协议150、152和154可以包括在图4的客户机和服务器设备中,但图中未示出。而且,尽管图3中未示出,但是一个或多个其它设备(例如防火墙、路由器、网关、网桥等)可以位于客户机设备102和服务器设备104之间。
服务器设备104的流模块202把一多媒体演示作为流媒体104流化到客户机设备102的流媒体播放器206。流媒体播放器206接收流化的多媒体演示,并且在客户机设备102处处理接收到的流,一般是在客户机设备102处回放多媒体演示。
服务器设备104包括一播放列表208,播放列表208标识了多个(y个)媒体内容块210(1)、210(2)、…、210(y)。在特定的实现中,播放列表208包括多个条目,每个条目都标识了多块媒体内容210之一。或者,播放列表208可以标识一块媒体内容,然而在这些情况下,一块媒体内容仅由其自身来索引,而不是通过使用播放列表来索引。客户机设备102能选择一资源用于回放,该资源标识了播放列表208。流模块202存取所标识的播放列表208,然后存取各块媒体内容210,并把那些块210流化到客户机设备102。因此,客户机设备102能存取一个资源,而且还有从服务器设备104流化的多块不同的媒体内容。由于播放列表208由服务器设备104存取并索引以标识媒体内容块,而不是由客户机设备102存取和索引,因此播放列表208也可以被称为服务器端的播放列表。
每一块媒体内容210都包括一个或多个媒体流。不同的媒体内容块210会包括不同数量的媒体流。每一块媒体内容210一般是一多媒体演示。定义一“块”内容的方式可以根据实现方式并基于媒体类型而变化。例如,对于音乐音频和/或视频内容,每首歌曲可以是一块内容。内容可以根据自然边界(例如不同的歌曲)被分成多个块,或者以其它任意方式来划分(例如每五分钟的内容是一块)。对于所保存的内容,不同的内容块可以被保存为多个文件或者同一文件。
尽管图3和4中示出两个分开的图,然而可以理解,由图4所示的服务器端播放列表索引的媒体内容块可以如图3所示地被多播传送。
参照图2、3和4,在传输层,要从服务器设备104流化到客户机设备102的数据嵌入在RTP分组内。与被流化的数据以及RTP分组有关的控制信息嵌入在RTCP分组内的一个或多个控制消息内。
一般而言,RTCP分组包括几个不同类型的消息。RTCP分组内的第一消息是接收者报告或发送者报告。第二消息是一SDES(源描述)消息。SDES消息包含一个或多个文本的元数据项。SDES消息包含一CNAME(规范名)项。CNAME项是媒体内容源的永久传输层标识符,并且在RTP同步源(SSRC)数字和文本串之间提供了映射。SSRC是RTP(和RTCP)分组流的源。使用CNAME使得参与属于同一演示的多个RTP会话的发送者或接收者可以在各个RTP会话中使用不同的SSRC值,但使CNAME值保持相同。
可以包括在RTCP分组内的另一类消息是其中嵌有会话描述消息的控制消息。会话描述消息描述了从服务器设备104被流化到客户机设备102的多媒体演示的属性。可以为这种会话描述消息使用不同的媒体格式或协议。这一媒体格式的一个例子是会话描述协议(SDP),于1998年4月由“网络工作组请求注解(RFC)2327”公布。在特定的实施例中,这里讨论的会话描述消息是符合RFC2327所述的SDP格式的消息。
尽管可以使用不同的格式来描述多媒体演示的属性,然而从服务器设备104向客户机设备102发送包括属性标识符在内的一个或多个会话描述消息。单个会话描述消息可由服务器设备104为一特定的多媒体演示而发送,或者可以发送多个会话描述消息。如果发送了多个会话描述消息,则多个消息可以包括相同的信息、不同的信息或者重叠的信息。
会话描述消息可以包括例如以下的一个或多个:用于多播传送多媒体演示的各个信道的标识;多媒体演示内可用的各个多媒体流的描述(例如表明流的类型(如视频或音频)、各个媒体流的比特率、流中所使用的语言等等);纠错信息;安全/验证信息;加密信息;或者数字权利管理(DRM)信息;等等。
应该注意到,在特定的情况下,会话描述消息可以在多个RTCP控制消息间分开或分段。这种情况会在会话描述消息非常大的时候产生。这些RTCP控制消息的每一个都包括在不同的RTCP分组内,每个都包含整个会话描述消息的一部分或一个分段。客户机设备102在接收到全部的部分或分段时把它们组成在一起,以便重新创建会话描述消息。
图5说明了嵌有一会话描述消息的RTCP控制消息250的示例格式。以下讨论的RTCP消息250包括多个字段(也称为部分),每个字段都保存各种数据。应该理解,这些字段可以以和下面讨论且在图5中示出的顺序所不同的顺序来排列。此外,尽管下面讨论了这些字段的大小或长度(单位为比特),然而应该理解,这些仅仅是例子,字段也可以大于或小于这些示例的大小或长度。在特定的实施例中,RTCP消息250包括比图5所示全部字段少的字段,或者可以包括图5未示出的附加字段。
RCTP消息250的字段可以被视为组成三组:报头290、RTP状态块292以及会话描述消息284。报头290包括与RTCP消息250有关的各个信息。RTP状态块292是任选的,在包括它时用来标识与会话描述消息中描述的多媒体演示流有关的RTP特定信息(例如用来指定会话描述消息内一个流的SSRC和初始RTP序列号)。一般而言,对于多媒体演示中的每个媒体流,一个RTP状态块292与RTCP消息250相关联并包括在RTCP消息250中。会话描述消息284是嵌在RTCP消息250内的会话描述消息。
V(版本)字段252是标识了所使用的RTP版本的2位字段,这在RTCP分组中和在RTP分组中相同。例如,RFC 3550所定义的版本为2。
P(填充)字段254为一位,在设置时(例如设为值1)表明RTCP消息250在结尾处包含一些附加的填充,它不是控制信息的一部分。这一填充包括在长度字段262内,但或者应该被忽视。填充量包括在填充自身内。在特定的实现中,附加填充用八位组表示,填充的最后一个八位组是包括(包括其本身)并应忽略多少填充八位组的计数。
C(压缩)字段256为一位,在设置时(例如具有值1)表明SDP数据字段284中的数据已经被压缩。可以使用不同类型的压缩,比如使用在“ZLIB压缩数据格式规范版本3.3”中讨论的Zlib压缩,于1996年5月由“网络工作组请求注解(RFC)”公布。
Res(保留)字段258是一4位保留字段。在特定的实现中,Res字段258应该被设为零。
PT(负载类型)报头字段260是一7位字段,它被设为一值(例如141)以表明RTCP消息250嵌有一会话描述消息。
长度字段262是一16位字段,它标识了RTCP消息250的长度。这一长度可以通过把RTCP消息250内各个字段的长度相加而生成,包括任何报头以及任何填充。在特定的实现中,长度用32位的量减一来标识。
SDPMsgHash(SDP消息散列)字段264是一16位字段,用来标识RTCP消息250内包括的会话描述消息以及发送者(例如服务器设备104)的地址(例如IP地址)。在特定的实现中,字段264中的标识符用会话描述消息和地址上的校验和来计算,因此如果任一个发生变化,则字段264内标识符的值也变化。在特定的实现中,SDPMsgHash字段264的值以和“msg id散列”字段相同的方式计算,后一字段在“会话通告协议(SAP)”中描述,于2000年10月由“网络工作组请求注解(RFC)2974”公布。如果会话描述消息在多个RTCP消息上分段,如下所述,则每一分段的SDPMsgHash字段264的值应该相同。
F(更多分段)字段266为1位,在设置时(例如具有值1)表明会话描述消息已经被分段成多个RTCP消息,且当前的RTCP消息不包含会话描述消息的最后一个分段。如果F字段266未设置(例如值为0),则会话描述消息未被分段(完整的会话描述消息包括在RTCP消息250内),或者会话描述消息已被分段且RTCP消息250包含会话描述消息的最后一个分段。
FragSeqNum(分段序列号)字段268是一15位字段,用来标识一会话描述消息的不同分段。会话描述消息的分段以对于服务器设备104和客户机设备102均已知的方式分配到标识符。例如,标识符可以从值0开始顺序分配,因此第一分段的值为0、第二字段值为1、第三字段值为2、依此类推。如果RTCP消息250不包含会话描述消息的一个分段(即RTCP消息250包含完整的会话描述消息),则FragSeqNum字段268应该被设为0。
NumRtpState(数字RTP状态)字段270是一16位字段,用来指定RTCP消息250内包含的RTP状态块的数目。每个RTP状态块的大小均为14字节。当不存在RTP状态块时,“NumRtpState”字段被设为0。在RTCP消息250的所示例子中,有一个RTP状态块292。如果有多个RTP状态块,则为多个RTP状态块的每一个包括字段272、274、276、278、280和282。如果一会话描述消息被分段成多个RTCP消息250,则只有包含会话描述消息第一分段的RTCP消息250才应该包含RTP状态块。
A字段272是1位字段,如果PT字段274包含有效的RTP负载类型数,则不设置这一字段(例如值为0)。如果未设置A字段272,则RTP状态块292内的信息仅用于PT字段274中标识的RTP负载类型数以及流ID字段276中标识的SDP流ID。如果设置了A字段272(例如值为1),则应该忽视PT字段274,且无论使用什么RTP负载类型,RTP状态块292都用于流ID字段276中标识的SDP流ID的全部RTP分组。
PT字段274是一7位字段,指定了RTP状态块292内信息的RTP负载类型数。如果设置了A字段272(例如值为1),则PT字段274不使用并且应该被设为0。
流ID字段276是一24位字段,它标识了RTP状态块292内信息所指的SDP流ID。每个媒体流都通过一不同的RTP会话来流化。这些RTP会话用“a=mid:”属性分配到一个数,该属性在2002年12月公布的“会话描述协议(SDP)中媒体行组成,网络工作组请求注解(RFC)3388”中描述。流ID字段276在会话描述消息中标识了一特定的“m=”条目,其值和“m=”项的“a=mid”属性值相同(按照RFC 3388)。
SSRC(同步源)字段278是一32位字段,其指定了由流ID字段276所标识的媒体流所使用的RTP SSRC字段值。如果未设置A字段272(例如值为0),则SSRC字段278仅用于这一媒体流的RTP分组,这些RTP分组使用由PT字段274所赋予的RTP负载类型。
RtpTime(RTP时间)字段280是一32位字段,它指定了一RTP分组可能具有的RTP时标字段的值,加入该分组正好在流ID字段276所标识的媒体流的开始时被发送。例如,如果媒体演示的时间线从时刻T开始,则RtpTime字段280的值是可能正好在时刻T被发送的分组的RTP时标字段值,即使对于Rtp状态块292所标识的媒体流来说没有这样的RTP分组实际存在。
RtpSeq(RTP序列)字段282是一16位字段,它给为流ID字段276所标识的媒体流所发送的第一RTP分组的RTP序列号字段赋值。如果未设置A字段272(例如值为0),则RtpSep字段282仅用于这一媒体流的使用PT字段274所赋予的RTP负载类型的RTP分组。
SDP数据字段284是嵌入在RTCP消息250内的会话描述消息。在会话描述消息被分段的情况下,SDP数据字段284仅包含会话描述消息的一部分(例如会话描述消息的一个分段)。在特定的实现中,会话描述消息是格式为UTF-8的完整SDP描述。
图6说明了一示例会话描述消息格式。尽管图6示出一具体的例子,然而会话描述消息可能有字段或部分有不同顺序的格式,或者在不同的消息上扩展。
会话描述消息320包括一会话层描述部分322以及零个或多个媒体层描述部分324。会话层描述部分322包括这样的数据:所述数据具有用于整个会话的一个或多个字段以及作为会话一部分的全部媒体流。另一方面,每个媒体层描述部分322都包括数据仅用于一个媒体流的一个或多个字段。
媒体层描述部分322中的数据字段描述了特定媒体流的属性。这些属性可以是除会话层描述部分322中所述属性以外的属性,或者代替会话层描述部分322中所述的属性。例如,对于和特定媒体层描述部分322相关联的特定媒体流,该特定媒体层描述部分322中的一个或多个属性可能超过会话层描述部分322中标识的属性。
会话描述消息320以及消息320的结构在下面特别参照SDP加以详细讨论。应该理解,这些具体结构仅仅是例子,会话描述消息可能有不同的形式。
会话层描述部分322从一特定字段开始,称为协议版本字段。类似地,媒体层描述部分324每个都从一特定字段开始,称为媒体名称和传输地址字段。在特定的实施例中,同一类型的多个字段可以包括在一会话描述消息中(例如一个会话描述消息可能有两个或多个属性字段)。
下面的表I说明了可以包括在会话层描述部分322中的示例字段。表I包括各个示例字段的名称、各个示例字段的缩写或类型、以及各个示例字段的简要讨论。在特定的实施例中,需要协议版本字段、所有者/创建者和会话标识符字段、会话名称字段以及时间描述字段,而表I中的所有其它字段都是任选的。
表I
名称 |
类型 |
描述 |
协议版本 |
v= |
SDP的版本。 |
原始 |
o= |
会话的始发者(例如用户名和用户主机的地址),加上会话id和会话版本号。 |
会话名称 |
s= |
会话名称。 |
会话信息 |
i= |
有关会话的信息。 |
描述的URI |
u= |
到有关会话的附加信息的指针。 |
电子邮件地址 |
e= |
负责会话的人的电子邮件地址。 |
电话号码 |
p= |
负责会话的人的电话号码。 |
连接信息 |
c= |
描述会话连接的连接数据,比如网络类型、所使用的定址类型以及连接地址。 |
带宽信息 |
b= |
建议由会话使用的带宽。 |
时间描述 | |
见下表II。 |
时区调节 |
z= |
指定了能够节约白天时间的调节时间和偏移。 |
密钥 |
k= |
表明了要通过外部手段或从所包括的已编码密钥中获得会话密钥而使用的机制。 |
属性 |
a= |
扩展SDP的会话的属性。 |
下面的表II更详细地说明了时间描述字段。表II包括时间描述字段内各个字段的名称、时间描述字段内各个字段的缩写或类型、以及时间描述字段内各个字段的简要讨论。要求会话为活动字段的时间,而零或多次重复时间字段是任选的。
表II
名称 |
类型 |
描述 |
会话活动的时间 |
t= |
会话的开始和停止时间。 |
零或多次重复 |
r= |
指定了会话的重复次数。 |
下面的表III说明了可以包括在媒体层描述部分324中的示例字段。表III包括各个示例字段的名称、各个示例字段的缩写或类型、以及各个示例字段的简要讨论。在特定的实施例中,要求媒体通告字段,而表III中的所有其它字段是任选的。
表III
名称 |
类型 |
描述 |
媒体通告 |
m= |
媒体流的媒体类型、媒体流将被发送至的传输端口、媒体流的传输协议以及媒体流的媒体格式。 |
媒体标题 |
i= |
有关媒体流的信息(例如媒体流的标记)。 |
连接信息 |
c= |
描述媒体流连接的连接数据,比如网络类型、所使用的定址类型以及连接地址。 |
带宽信息 |
b= |
建议由媒体流使用的带宽。 |
密钥 |
k= |
表明了要通过外部手段或从所包括的已编码密钥中获得媒体流密钥而使用的机制。 |
属性 |
a= |
扩展SDP的媒体流的属性。 |
图7是说明在使用服务器端的播放列表时在RTCP消息中嵌入会话描述消息的示例过程350的流程图。图7示出由一媒体内容源执行的动作,比如(图1、2、3或4的)服务器设备104。
首先,标识播放列表中的下一块媒体内容(动作352)。当媒体内容块的回放开始时,下一块就是播放列表中标识的第一块。此外,每次达到一块内容额结尾时(例如即使客户机设备102处块的回放还没有完成,然而整块内容都已被流化到客户机设备102),则下一块媒体内容就是在已达到其结尾的块后面的一块。应该注意到,这下一块的顺序可由播放列表定义,或者用户可能能够达到播放列表内的一个不同块(例如用户可能能请求跳过播放列表中一特定块)。
然后获取描述所标识的媒体内容块的信息(动作354)。该信息可以以一种或多种不同的方式来获取。获取这一信息的一种方式是从一文件或记录检取。在特定的实施例中,至少一些信息被保存在和所标识的媒体内容块相关联的文件或记录中。这一文件或记录在动作354中被存取以检取其中保存的信息。
获取这一信息的另一种方式是从一用户接收。在特定的实施例中,至少一些信息从用户接收到。这些用户输入在动作354中被用作包括在会话描述消息中的至少一些信息。
获取这一信息的另一种方式是自动检测。在特定的实施例中,至少一些信息可由计算设备通过分析所标识的媒体内容块的源或者所标识的媒体内容块本身而自动获得。这一自动检测的信息在动作354中被用作包括在会话描述消息中的至少一些信息。
然后创建具有一会话描述消息的RTCP消息,其包括所获取的信息(动作356)。在特定的实施例中,该RTCP消息的形式是上面讨论的图5的RTCP消息250。然后把所创建的RTCP消息发送到下一块媒体内容的目标受信者(动作358)。下一块媒体内容的目标受信者是媒体内容被流化到的设备(例如图1、2、3或4的客户机设备102)。所创建的RTCP消息被包括在一RTCP分组内,作为被流化到目标受信者的流媒体的一部分。
应该注意到,可能出现为一播放列表中的两块不同的媒体内容所流化的媒体流数目不相同的情况。例如,播放列表中标识的第一块媒体内容可能有两个流(例如音频流和视频流),而播放列表中标识的第二块媒体内容可能有三个流(例如音频流、视频流和文本副标题流)。此外,当使用UDP来流化媒体时,每个媒体流一般使用一不同的UDP信道,所述UDP信道在不同的UDP端口被受信者接收。如果受信者仅为第一块媒体内容打开两个端口(例如一个端口用于音频流、一个端口用于视频流),则受信者将没有端口来接收第二块媒体内容的文本副标题流。
这种情况可以几种方式来解决。在特定的实施例中,通过使用TCP在打开的HTTP连接上流化附加的数据流来解决这种情况。RTCP消息250中包括一指示(例如作为对每个附加媒体流的附加RTP状态块292),表明附加的媒体流以这种方式被流化。
在其它实施例中,通过让受信者打开一个或多个额外的端口,通常称为通配符端口来解决这些情况。这些通配符端口的每一个都可用来接收服务器设备发送到受信者的任何媒体流。RTCP消息250内包括一指示(例如作为每个附加媒体流的附加RTP状态块292),表明附加媒体流被流化到哪些通配符端口。
在其它实施例中,这种情况通过服务器设备把会话描述消息发送到受信者(例如在RTCP消息中)来解决,所述会话描述消息标识了第二块媒体内容可用的全部媒体流。然后,服务器设备等待受信者选择他所希望接收的媒体流。受信者会作出选择(例如自动选择或基于受信者处的用户输入而选择),并且向服务器设备发送一指示,表明选择了哪些媒体流以及所选的媒体流要被流化到哪些端口。
图8是说明在使用服务器端的播放列表时流程图。图8示出由流媒体的受信者执行的动作,所述受信者比如(图1、2、3或4的)客户机设备102。
首先,从媒体内容源接收到一RTCP消息(动作382)。媒体内容源是例如图1、2、3或4的服务器设备104。
从RTCP消息中提取播放列表中下一块媒体内容的会话描述消息(动作384)。当播放列表中媒体内容块的流化刚刚开始时,这下一块媒体内容是播放列表中的第一块媒体内容。在至少一块媒体内容的流化已经开始后,下一块媒体内容是播放列表中所标识的下一块。应该注意,这下一块可以是播放列表所定义的顺序,或者用户可能能够到达播放列表内的一个不同块(例如用户可能能请求跳过播放列表中的一特定块)。还应该注意,下一块媒体内容的会话描述消息一般在当前媒体内容块的回放结束前接收到(使客户机设备102能在当前媒体内容块的回放结束时立即开始回放下一块媒体内容)。
然后在处理下一块媒体内容时使用所提取的会话描述消息(动作386)。该处理一般包括在客户机设备102处回放下一块媒体内容。
图9说明了按照一实施例、用于多播传送多媒体演示的系统500。在该实施例中,系统500包括内容源502、服务器504以及经由网络508连到服务器504的客户机5061-506X。网络508可以是任一适当类型的有线(包括光纤)或无线(例如RF或自由空间光学)网络。在一实施例中,网络508是互联网,但在其它实施例中,网络508可以是局域网(LAN)、校园网等等。
在该实施例中,服务器504包括一通告生成器510。如下更详细描述,通告生成器510的实施例生成包含与多媒体演示有关的信息在内的流,用于在网络508上多播传送。下面参照附图10到图12描述了在多播传送多媒体演示时这一系统500实施例的操作。
图10说明了按照一实施例、在多播传送多媒体演示时图9的系统500的服务器操作流程。参照图9以及步骤502,服务器504如下操作以多播传送—多媒体演示。
在方框524中,服务器504经由连接512接收一多媒体演示。在该实施例中,服务器504经由链路512从内容源502接收多媒体演示。特别是,内容源502提供多媒体内容以便在网络508上多播传送。多媒体内容可以以任一适当方式生成。例如,多媒体内容可以是接着被保存在数据库(未示出)中的前面记录的/生成的内容,或是被捕获(例如用摄像机、麦克风等)或被编码(编码器未示出)的实况表演。
在一典型应用中,多媒体演示会包括多个流。例如,多媒体演示可以包括视频流、音频流、以较低比特率编码的另一视频流、以及以较低比特率编码的另—音频流。在其它应用中,多媒体演示可能有比这一示例应用中所述的流更多或更少的流。因此,在该实施例中,服务器504在方框524中接收多媒体演示,其形式为一个或多个流。
在方框526中,服务器504形成一通告流并且经由链路514在网络508上多播传送通告流。在该实施例中,服务器504的通告生成器510形成通告流。在一些实施例中,通告生成器510可由一管理员配置,而在其它实施例中,通告生成器510可以被配置成处理方框524中接收到的流,并且从这些流中提取信息以形成通告流。
在一些实施例中,服务器504在专用通告信道上多播传送通告流(即没有和其它多媒体演示有关的通告信息的信道)。如这一环境中所使用的,信道可以是一逻辑地址,比如多播传送互联网协议(IP)地址和端口。因此,客户机可以通过监听和信道相关联的逻辑地址和端口来加入该信道。客户机会以任一适当方式获悉逻辑地址,比如但不限于:电子邮件、邀请、网站记录以及常规的会话通告协议(SAP)多播传送(例如题为“会话通告协议”的规范IETF RFC-2974中定义的)。在使用SAP多播传送来通告一多媒体演示的实施例中,SAP多播传送无须包括会在“串联(in-line)”的通告流中提供的详细演示描述信息(下面详述)。
在一些实施例中,通告流与包含多媒体数据的流“串联地”多播传送。例如,多媒体数据流可以根据实时传输协议(RTP)用分组来多播传送,而通告流可以根据实时传输控制协议(RTCP)用分组来多播传送。在一实施例中,RTP在请求注解(RFC)3550中定义,于2003年7月的互联网工程特别工作组(IETF)公布(也包括RTCP的规范)。该实施例中,RTP被扩展为支持RTCP分组形式的通告数据。在进一步的限制中,通告数据可以和多媒体数据在相同的RTP分组(或其它协议分组/数据报)中“串联”地发送。在其它实施例中,通告信道可以在频带外(例如在通告信道用SAP多播传送时)。
通告流包含描述多媒体演示的信息,例如:用来多播传送多媒体演示的各个信道的标识、每一个信道所传输的流的描述(例如指明了流的类型(如视频或音频)、流的比特率、流所使用的语言等等)、纠错信息、安全/验证信息、加密信息、数字权利管理(DRM)信息等等。在一实施例中,通告流在多媒体演示期间被重复地多播传送,使得在不同时间加入的客户机可能接收到多媒体演示描述信息。然后,经由通告流接收这一演示描述信息的客户机可以基于其资源的角度来确定哪些信道适合加入。
在方框528,服务器504多播传送从方框524接收到的多媒体演示的流中选择的流。在一些情况下,服务器504多播传送在方框524中接收到的全部流。在一些实施例中,管理员可以服务器504来多播传送预先选择的信道中的特定流。在一实施例中,服务器504至少支持通告信道、视频信道和音频信道。更为一般的是,服务器504也会支持具有不同比特率的视频和音频流的附加信道,以便适应具有不同资源来处理多媒体演示的客户机。
例如,如图11所示,服务器504可以被配置成支持一通告信道532、一加速信道534(下面结合图15和16描述)、一高质量视频信道536、一高质量音频信道538、一应用信道540、可选的语言信道5421-542N、以及可选的比特率信道5441-544M(用于音频和/或视频流)。在一实施例中,应用信道540可用来多播传送由预期在客户机上本地运行的应用程序(例如媒体播放器或者要求插件来使用如Microsoft PowerPoint数据这样的多播传送的应用数据)所使用的数据。根据内容源502所提供的流以及服务器504所提供的配置、以及预先选择的信道定义,服务器504可以把一个流仅映射到一个信道、多个信道或不映射到信道。例如,如果来自内容源502的多媒体演示包括一英语流和一西班牙语流,服务器504可以被配置成把西班牙语流映射到全部的信道5421-541N、或仅映射到信道5421、或根本不映射到任何信道。
在一些实施例中,信道的“布局(layout)”是预先选择的。例如,在每个信道具有其自身的IP地址的实施例中,信道可以是在为多播传送分配的IP地址范围(即IP地址224.0.0.0到IP地址239.255.255.255的范围)内的一组顺序IP地址。因此,通告信道532可以被分配给IP地址231.0.0.1、加速信道534可以被分配给IP地址231.0.0.2、高质量视频信道536可以被分配给IP地址231.0.0.3、依此类推。类似地,信道可以是一组IP地址的一组顺序端口。因此,在基于RTP的实施例中,通告信道532可以被分配给端口231.0.0.1:5000、加速信道534可以被分配给端口231.0.0.1:5002、高质量视频信道536可以被分配给端口231.0.0.1:5004、依此类推(因此可以为RTCP分组使用端口5001、5003和5005)。
上述系统500的实施例所使用的方法有几个优点。例如,由于通告流在专用信道上被多播传送,因此客户机能更快地获取演示描述信息,从而有利地缩短启动等待时间。相反,常规的SAP多播传送方法一般有较大的启动等待时间,因为SAP多播传送一般通告了大量的多播传送,趋于降低多播传送一特定多媒体演示的通告的频率(于是又会增加启动等待时间)。
而且,系统500的这些实施例不要求客户机具有到服务器504的返回信道,从而在把多媒体演示传送给期望观众时提供了较大的灵活性。
此外,系统500的这些实施例不需要服务器提供在前面所述的常规系统中所需的“多播传送信息”文件,因此,不需要维持和公布这一文件的成本。
更进一步,由于在信道组中被多播传送的流在一些实施例中是“可预测的”,因此客户机可能选择加入特定的信道,而无须接收和处理来自通告信道532的多媒体演示描述信息。例如,主动的客户机(一般是有相对大资源的客户机)可能选择在加入通告信道532的同时或取代加入通告信道532,而加入高质量音频和高质量视频信道536和538,从而如果客户机实际上有足够的资源来处理流而不丢失数据、则缩减了启动等待时间。例如,具有大量资源的客户机可以是其计算平台上有高速CPU和大缓冲资源的客户机,并且连到具有相对大量可用带宽的高速计算机网络。高速CPU和大缓冲资源显著地减少了丢失数据的风险。
图12说明了按照一实施例、在接收被服务器504(图9)多播传送的多媒体演示时、客户机5061(图9)的操作流程。客户机5062-506X(图9)可以以基本相同的方式操作。参照图9、11和12,客户机5061在接收多媒体演示时如下操作。
在方框562,客户机5061在已经接收到一多媒体演示的通告信道的逻辑地址后,加入通告信道532。如前对于一实施例所述,服务器504重复地在专用通告信道上多播传送演示描述信息。因此,客户机5061和常规系统相比能相对快地接收到演示描述信息,常规系统一般多播传送相对大量多媒体和/或其它演示类型的描述消息。
在方框564,客户机5061接着加入提供多媒体数据流的一个或多个信道,所述多媒体数据流在接收到的通告流中描述。在一实施例中,客户机5061可以确定要加入哪些信道以便在使用客户机5061可用的资源时有最佳的体验。然后,5061可以接收多媒体演示的所选流。
图12A说明了按照另一实施例、在接收被服务器504(图9)多播传送的多媒体演示时、客户机5061(图9)的操作流程。客户机5062-506X(图9)可以以基本相同的方式操作。参照图9、11和12A,客户机5061在接收多媒体演示时如下操作。在该实施例中,客户机5061基本同时执行方框562(以加入上述的通告信道532)和方框570。
在方框570,除了通告信道532以外,客户机5061还加入多媒体演示的一个或多个预先选择的信道。如前对于一实施例所述,服务器504可以被配置成以预定方式在预先选择的信道中多播传送流。在该实施例中,客户机5061可以利用预先选择的信道分配的优点来加入期望的信道,而无须从通告信道532接收演示描述信息。例如,在一种情况下,客户机5061具有相对大的资源来接收和处理多媒体演示、能够处理典型的高质量视频和高质量音频流。根据这些资源,客户机5061可以被配置成立即加入信道536和538以接收高质量视频和高质量音频流,以便减少启动等待时间,并且相对高地预期客户机5061能正确处理这些流。
在判决框572,客户机5061确定考虑到对于客户机5061可用的资源、它是否能最优地处理从它在方框570加入的信道所接收到的流。在一实施例中,客户机5061使用从通告信道532接收到的演示描述信息来确定其资源是否能处理在这些信道上接收到的流。例如,在方框570加入的信道的流可能有过于大的比特率(在通告流中描述),使客户机5061无法在不丢失数据的情况下进行处理(会导致起伏的音频流的音频回放或者一块块的视频流的视频回放)。如果客户机5061在方框572中确定它能最优地处理预先选择的信道的流,客户机5061就继续从它在方框570中加入的信道接收流,直到多播传送的多媒体演示终止为止。
然而,在该实施例中,如果客户机5061在方框572中确定它不能最优地处理预先选择的信道的流,则操作流程前进到方框564(前面参照图12描述)。在方框564中,通过使用在方框562中接收到的演示描述信息,客户机5061加入带有客户机5061能最优处理的多媒体数据流的一个或多个其它信道。在方框574中,该实施例中,客户机5061可能退出在方框570中加入的预先选择的信道。客户机5061继续从在方框564中加入的信道接收流,直到多播传送的多媒体演示终止或者选择离开该信道为止。
图13说明了按照一实施例的服务器504(图9)的一些组件。在该实施例中,除了通告生成器510以外(上面参照图9所述),服务器504包括配置控制器582、可配置的流映射程序584、源接口586以及网络接口588。在一些实施例中,这些元件是可由服务器504的计算环境执行的软件模块或组件。
源接口586被配置成经由链路512从内容源502(图9)接收一个或多个多媒体流。可配置的流映射程序582被配置成接收来自源接口586的流、来自通告生成器510的通告流、以及来自配置控制器582的控制信息。该实施例中,可配置的流映射程序584像开关一样工作,用于把从源接口586接收到的一个或多个流映射或指引到多播传送信道。网络接口588通告网络508(图9)多播传送所选的流。在一些实施例中,配置控制器582配置可配置的流映射程序584来把接收到的多媒体演示流映射到信道。此外,在一些实施例中,配置控制器582在生成通告时指引通告生成器510。下面参照图13和14描述了配置控制器582一实施例的操作流程。
图14说明了按照一实施例、在多播传送一多媒体演示时的配置控制器582(图13)的操作流程。参照图13和14,配置控制器582的一个实施例用于如下所述地多播传送一多媒体演示。
在方框602中,配置控制器582的这一实施例从一管理员接收配置信息。管理员能手动地把配置信息提供给服务器504的配置控制器582。这一配置信息可以用逻辑地址来定义每一个信道,并且包括演示描述信息(前面所述)。例如,演示信息可以包括要被多播传送的多媒体演示的流的媒体类型、流的比特率;语言、纠错信息;安全/验证信息;加密信息;数字权利管理(DRM)信息等等。
在可选的实施例中,配置控制器586可以被配置成:在经由源接口586从内容源502(图9)被接收到之后,从流本身中提取演示描述信息(例如从流中包括的报头或元数据信息中提取)。
在方框604,配置控制器582配置流映射程序584把来自通告生成器510的通告流以及来自源接口586的多媒体数据流映射到演示描述信息中所述的信道。该通告流由服务器504在多媒体演示的多播传送期间在通告信道上重复地多播传送。
在方框606,配置控制器582把流的演示描述消息提供给通告生成器510。如上所述,通告生成器510形成了包括演示描述信息的通告流。
如上所述,信道的“布局”可以预先选择。例如,客户机会被赋予用来加入多播传送多媒体演示的逻辑地址(例如URL)。在一实施例中,该第一逻辑地址被预先选择以传送一实施例中的通告流。该例中,预先选择下一个顺序逻辑地址以传送加速信道,而预先选择下一个顺序逻辑地址来传送高质量视频流,依此类推,如图11的实施例中所示。配置控制器582配置流映射程序584根据预先选择的信道布局来映射通告流和多媒体数据流。
图15说明了按照另一实施例的服务器504(图9)的一些组件。服务器504的这一可选实施例基本与图13的实施例类似,除了该实施例包括加速流生成器702以外。在一实施例中,加速流生成器702被配置成形成这样一个流:其中被多播传送的每一个多媒体数据单元都包含当前的多媒体数据子单元以及预先选择的数量的数据的之前的子单元。例如,加速流可以被多播传送,使得数据报包含多媒体演示的当前帧以及前面五秒的帧。该实施例中,加速流生成器702把加速流提供给可配置流映射程序584,以便映射到像加速信道534(图11)这样的专用加速信道。然而,在其它实施例中,加速信道数据报无须包括当前帧。
图16说明了按照一实施例、具有加速流生成器702(图15)的服务器504的操作流程。参照图15和16,服务器504的这一实施例如下操作。
在方框802,加速流生成器702形成了用于在网络508(图9)上多播传送的一多媒体数据单元。在该实施例中,加速流生成器702用当前的多媒体演示数据子单元以及前面Z个多媒体演示数据子单元来形成所述单元。如上所述,所述单元可以是数据报或分组,所述子单元可以是多媒体数据的帧。在一实施例中,选择Z以确保该单元(即分组或数据报)会包含呈现或解码多媒体数据所需的关键帧。在其它实施例中,选择Z而不用考虑该单元是否会确保有关键帧。
在方框804中,在方框802中形成的多媒体数据单元通过网络508(图9)被多播传送。在该实施例中,加速流生成器702把多媒体数据单元提供给可配置的流映射程序584,后者接着把该块映射到加速信道。服务器504接着经由网络接口588在网络508(图9)上多播传送多媒体数据单元。在一实施例中,服务器504以“比实时快的”速率多播传送所述单元(即以比基本多媒体数据的比特率快的比特率传送)。这一方法有利地使具有相对大资源的客户机能加入加速信道、并且在接收所述单元时快速填充其多媒体播放器的缓冲器,使得呈现或回放能更快地开始。这一特征在多播传送的多媒体数据单元包括关键帧的实施例中增强。或者,服务器504多播传送单元的速率无须“比实时快”。这一方法可用在客户机既加入加速信道又加入多播传送多媒体数据的另一信道的应用中,因此实际上客户机以“比实时快”的速率接收到多媒体数据。
如果还有多媒体数据要被多播传送,则操作流程返回到方框802,如判决框806所示。因此,例如,通过使用上面以数据报为单位传输的多媒体帧的例子,下一个数据报会包括多媒体数据的下一个帧,加上在前一数据报中加入的帧、加上前面(Z-1)个帧。因此,在该实施例中,每个单元(例如数据报)都表示当前子单元(例如帧)和前面Z个帧的滑动窗,Z的选择是足够大以确保每个单元都有足够的信息使客户机的多媒体播放器开始呈现/回放多媒体演示所需的时间最少。如上所述,在一些实施例中,Z被选择以确保每个单元都有一个关键帧。
在一实施例中,如果多媒体演示包括视频和音频流两者,则视频数据和音频数据的单元在同一信道上以交替方式被多播传送。在其它实施例中,可以为音频和视频流使用分开的加速信道。
在多媒体演示的一开始,加速流生成器的一个实施例等待,直到在方框802中形成一数据单元以前已经在非加速信道内多播传送了至少Z个多媒体数据子单元。
图17说明了按照一实施例、在接收加速流时的客户机操作流程。在方框902,客户机(例如图9的客户机5061-506X之一)加入加速信道。在一些情况下,加速信道是预先选择的信道布局的一部分,客户机能够或者和加入通告信道的同时加入其中、或者不加入通告信道而加入其中。如上所述,加速信道可由一客户机有利地使用,该客户机具有相对大的资源来接收和处理多媒体演示,因此客户机可以缩减启动等待时间。
在方框904,客户机从加速信道接收一个或多个多媒体数据单元。在一实施例中,每一个多媒体数据单元都如上结合图6生成。然后,客户机可以处理每一个多媒体数据单元以便相对快速地开始呈现或回放过程。在一种情况下,客户机接收一视频数据单元和一音频数据单元,视频数据包含一关键帧,使得客户机可以尽可能快地开始呈现/回放过程。如上所述,在其它实施例中,一单元无须具有关键帧。
在方框906,客户机于是能加入一非加速信道,比如高质量视频信道536和高质量音频信道538。在一实施例中,客户机所加入的非加速信道用上述预先选择的信道布局来预先选择。在其它实施例中,客户机基于通告流中所包含的演示描述信息来加入信道。在方框908,客户机退出加速信道。在一实施例中,客户机在接收到开始呈现/回放过程所需的多媒体数据单元后立即退出加速信道。
尽管所述的方框902到908是顺序执行的,然而在图17的流程图中(以及这里所述的其它流程图),这些方框可以图示以外的其它顺序执行,或者一些方框执行了不止一次、或者一些方框同时执行或执行它们的组合。例如,在一些实施例中,方框902和906并行执行,使得操作流程是客户机同时加入加速和非加速信道。方框904在方框902后顺序执行,方框904和906在方框908之前。
图17A说明了客户机可能加入加速信道或一些预先选择的信道、然后加入其它信道(例如基于从通告信道接收到的通告信息)的示例情况。在该例中,客户机在加入一个或多个预先选择的非加速信道(即方框906)的同时、加入加速信道(即方框902)。然后,客户机接收来自加速信道的一个或多个多媒体数据单元(即方框904)、以及来自非加速信道的多媒体和通告数据。作为加入通告信道的结果,客户机可能决定退出预先选择的信道,并且加入其它非加速信道(即方框572、564和574)。
上述各种多播传送实施例可以在服务器和客户机的计算机环境中实现。下面参照图18描述了适合用在服务器和客户机中的一示例计算机环境。
图18说明了一通用计算机环境1000,它可用来实现这里所述的技术。计算机环境1000仅仅是计算环境的一个例子,并且不限制计算机和网络体系的使用范围或功能。计算机环境1000也不应被视为和示例计算机环境1000中所示的任一个组件或组件组合有任何相关性或相关要求。
计算机环境1000包括形式为计算机1002的通用计算设备。计算机1002的组件可以包括但不限于:一个或多个处理器或处理单元1004、系统内存1006以及把包括处理器1004在内的各个系统组件耦合到系统内存1006的系统总线1008。
系统总线121表示几种类型总线结构的一种或多种,包括内存总线或内存控制器、外围设备总线、加速图形端口、及使用任一多种总线结构的本地总线。通过示例,这种结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准联盟(VESA)本地总线、外围组件互连(PCI)总线(也称为Mezzanine总线)、PCI快速总线、通用串行总线(USB)、安全数字(SD)总线或者IEEE 1394(即FireWire)总线。
计算机1002还包括其它可移动/不可移动、易失性/非易失性的计算机存储介质。通过示例,图10说明了用于对不可移动、非易失性磁性介质(未示出)进行读写的硬盘驱动器1016、用于对可移动、非易失性磁盘1020(例如“软盘”)进行读写的磁盘驱动器1018、以及用于对可移动、非易失性光盘1024进行读写的光盘驱动器1022,譬如CD-ROM、DVD-ROM或其它光学介质。硬盘驱动器1016、磁盘驱动器1018和光盘驱动器1022分别通过一个或多个数据介质接口1025连到系统总线1008。或者,硬盘驱动器1016、磁盘驱动器1018和光盘驱动器1022可以通过一个或多个接口(未示出)连到系统总线1008。
驱动器和它们的相关计算机存储介质为计算机1002提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管该例说明了硬盘1016、可移动磁盘1020和可移动光盘1024,然而可以理解,其它类型的能存储被计算机存取的数据的计算机可读介质也可用来实现示例的计算系统和环境,比如磁性盒带或其它磁性存储设备、闪存卡、CD-ROM、数字化视频光盘(DVD)或其它光学存储器、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等等。
任何数量的程序模块可以被保存在硬盘1016、磁盘1020、光盘1024、ROM1012和/或RAM 1010上,包括例如:操作系统1026、一个或多个应用程序1028、其它程序模块1030以及程序数据1032。这种操作系统1026、一个或多个应用程序1028、其它程序模块1030以及程序数据1032的每一个(或它们的一些组合)都能实现支持分布式文件系统的常驻组件的全部或一部分。
用户可以通过诸如键盘1034和指示设备1036(例如“鼠标”)这样的输入设备把命令和信息输入到计算机1002中。其它输入设备1038(未具体示出)可以包括麦克风、游戏杆、游戏板、卫星式转盘、串行端口、扫描仪等等。这些和其它输入设备通过与系统总线1008耦合的输入/输出接口1040与处理单元1004相连,但也可以用其它接口和总线结构连接,譬如并行端口、游戏端口或通用串行总线(USB)。
监视器1042或其它类型的显示设备也通过诸如视频适配器1044这样的接口与系统总线1008相连。除了监视器1042之外,其它输出外部设备可以包括像扬声器(未示出)和打印机1046这样的组件,它们可以通过I/O接口1040连接到计算机1002。
计算机1002可以工作在联网环境中,该环境使用与诸如远程计算设备1048这样的一个或多个远程计算机之间的逻辑连接。例如,远程计算设备1048可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它公共网络节点等待。图示的远程计算设备1048是包括关于计算机1002所述的许多或全部元件和特征在内的便携式计算机。或者,计算机1002也可以工作在不联网的环境中。
计算机1002和远程计算机1048之间的逻辑连接被描述为局域网(LAN)1050和通用广域网(WAN)1052。这种联网环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。
当在LAN联网环境中实现时,计算机1002通过网络接口或适配器1054与局域网1050相连。当在WAN联网环境中实现时,计算机1002一般包括用于在广域网1052上建立通信的调制解调器1056或其它装置。调制解调器1056可以在计算机1002内部或外部,它可以通过I/O接口1040或其它适当机制与系统总线1008相连。可以理解,所示的网络连接是例子,也可以采用在计算机1002和1048间建立至少一条通信链路的其它装置。
在联网环境中,比如在关于计算环境1000所示的环境中,关于计算机1002所述的程序模块或其部分可以存储在远程内存存储设备中。通过示例,远程应用程序1058常驻在远程计算机1048的内存设备上。为说明起见,这里把应用或程序以及诸如操作系统这样的其它可执行程序组件描述为离散块,然而可以认识到,这种程序和组件在不同的时刻常驻在计算机设备1002的不同存储组件中,并且由计算机的至少一个数据处理器所执行。
各种模块和技术在此可用计算机可执行指令的上下文来描述,比如由一个或多个计算机或其它设备所执行的程序模块。一般而言,程序模块包括用于执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些程序模块等等可以作为本机码执行,或者被下载和执行,比如在虚拟机或其它实时编辑执行环境。一般而言,程序模块的功能在各个实施例中可以根据期望进行组合或分布。
这些模块和技术的实现可以被保存在某一形式的计算机可读介质上或在其上被发送。计算机可读介质可以是由计算机存取的任何可用介质。通过示例但非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括易失性和非易失性的、可移动和不可移动的介质,所述介质以用于存储信息的任一方法或技术来实现,所述信息比如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包括、但不限于:RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化视频光盘(DVD)或其它光学存储器、磁性盒带、磁带、磁盘存储器或其它磁性存储设备、或者可用来保存期望信息并且可由计算机存取的任何其它介质。
“通信介质”一般在已调数据信号中体现计算机可读指令、数据结构、程序模块或其它数据,所述已调数据信号比如载波或其它传输机制。通信介质还包括任何信息传送介质。术语“已调数据信号”意味着其一个或多个特征是以对信号中信息编码的方式设置或改变的信号。仅仅作为一个非限制性的例子,通信介质包括诸如有线网络或直线连接这样的有线介质,以及诸如声学、RF、红外及其它无线介质这样的无线介质。上述的任一组合也包括在计算机可读介质的范围内。
该说明书中引用的“一个实施例”、“一实施例”或“一示例实施例”意指包括在本发明至少一个实施例中的特别描述的特征、结构或特性。因此,这些短语的使用是指不止一个实施例。而且,所述的特征、结构或特性可以在一个或多个实施例中以任何适当方式组合。
然而本领域的技术人员会认识到,本发明可以无须一个或多个具体细节而实现,或者以其它方法、资源、材料等等来实现。在其它情况下,没有示出或详细描述公知的结构、资源或操作,这仅仅是为了避免混淆本发明的各方面。
虽然已经示出并描述了示例实施例和应用,然而应该理解,本发明不限于上述精确的配置和资源。各种修正、改变和变化对于本领域技术人员都是显而易见的,这些修改可以对本发明的方法和系统的布局、操作和细节作出,而不背离本发明的范围。
尽管上述描述使用率对于结构特征和/或方法动作所特定的语言,然而应该理解,在所附权利要求中定义的发明不限于所述的具体特征或动作,而是这些具体特征和动作作为实现本发明的示例性形式而被公开。