用于流传送媒体的快速启动的方法和系统转让专利

申请号 : CN200480012358.0

文献号 : CN1784674B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·E·克莱蒙茨E·P·奥利维拉S·巴特T·L·怀恩

申请人 : 微软公司

摘要 :

一种用于流传送媒体的快速启动包括用于预测性启动的技术和用于在流传送期间切换传送信道的技术中的一种或两者。预测性启动允许媒体内容源预测哪一(些)媒体流是做出请求的客户机设备所期望的,并开始将那些所预测的媒体流流传送到所述客户机设备。传送信道切换技术允许媒体内容源使用一种传送信道(例如,使用传输控制协议(TCP)开始流传送媒体流,然后检查另一种传送信道(例如,使用用户数据报协议(UDP))是否起作用,并且如果起作用则切换到该另一种传送信道。

权利要求 :

1.一种用于流传送媒体的快速启动的方法,包括:

从客户机设备发送要将一个或多个媒体流流传送到所述客户机设备的请求;

在服务器设备处接收所述请求;

使用传输控制协议TCP开始将所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备;

在将所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备的同时,探测数据是否可使用用户数据报协议UDP从所述服务器设备流传送到所述客户机设备;以及如果所述探测指示了数据可使用UDP从所述服务器设备流传送到所述客户机设备,则切换到使用UDP将所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备,否则,继续使用TCP将所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备。

2.如权利要求1所述的方法,其特征在于,所述探测包括:

从所述客户机设备向所述服务器设备发送一个或多个UDP探测分组;

响应于所述一个或多个UDP探测分组中的每一个,从所述服务器设备向所述客户机设备发送UDP响应分组;以及如果所述UDP响应分组中的至少一个由所述客户机设备接收,则确定至少某些数据可使用UDP从所述服务器设备流传送到所述客户机设备,否则确定数据不能使用UDP从所述服务器设备流传送到所述客户机设备。

3.一种用于流传送媒体的快速启动的系统,包括:

用于从请求者接收要将媒体内容流传送到所述请求者的请求的装置;

用于使用传输控制协议TCP分组将所述媒体内容的至少一部分流传送到所述请求者的装置;

用于在所述内容的至少一部分被流传送到所述请求者的同时,接收改为使用用户数据报协议UDP分组将所述媒体内容的一个或多个其它部分流传送到所述请求者的请求的装置,其中所述改为使用UDP分组将所述媒体内容的一个或多个其它部分流传送到所述请求者的请求是在接收到确定媒体内容是否可使用UDP分组被流传送到所述请求者的探测以及确定所述媒体内容可使用UDP分组被流传送到所述请求者之后接收的,所述探测在所述媒体内容的至少一部分使用TCP分组被流传送到所述请求者的同时发生;以及用于使用UDP分组而非TCP分组将所述媒体内容的所述一个或多个其它部分流传送到所述请求者的装置。

4.如权利要求3所述的系统,其特征在于,使用UDP分组被流传送到所述请求者的所述媒体内容的所述一个或多个其它部分不包括使用TCP分组被流传送到所述请求者的所述媒体内容的所述至少一部分。

5.如权利要求3所述的系统,其特征在于,所述系统还包括:

用于在接收改为使用UDP分组将所述媒体内容的一个或多个其它部分流传送到所述请求者的所述请求之后,使用TCP分组将表示控制信息的数据发送到所述请求者的装置。

6.如权利要求3所述的系统,其特征在于,所述用于使用UDP分组而非TCP分组将所述媒体内容的一个或多个其它部分流传送到所述请求者的装置包括用于使用UDP分组而非TCP分组将所述媒体内容中仅所述选择的媒体流的一个或多个其它部分流传送到所述请求者的装置。

7.如权利要求3所述的系统,其特征在于,所述改为使用UDP分组将所述媒体内容的一个或多个其它部分流传送到所述请求者的请求是具有指示所述媒体内容要使用UDP分组被流传送到所述请求者的一个或多个头部的Select请求。

8.如权利要求7所述的系统,其特征在于,所述一个或多个头部是具有RTP/UDP传输参数的X-Transport头部。

9.如权利要求3所述的系统,其特征在于,所述请求者包括客户机设备。

10.一种用于流传送媒体的快速启动的系统,包括:

用于在一设备处使用传输控制协议TCP分组从媒体内容源接收媒体内容的至少一部分的装置;

用于在使用TCP分组接收所述媒体内容的所述至少一部分的过程中,确定所述媒体内容是否可使用用户数据报协议UDP分组被流传送到所述设备的装置;

用于如果所述媒体内容可使用UDP分组被流传送到所述设备,则向所述媒体内容源发送使用UDP分组将所述媒体内容流传送到所述设备的请求的装置;

用于使用UDP分组接收表示所述媒体内容的数据的装置。

11.如权利要求10所述的系统,其特征在于,所述系统,还包括:

用于在发送所述请求之后使用TCP分组接收表示控制信息的数据的装置。

12.如权利要求10所述的系统,其特征在于,所述用于如果所述媒体内容可使用UDP分组被流传送到所述设备,则向所述媒体内容源发送使用UDP分组将所述媒体内容流传送到所述设备的请求的装置包括用于向所述媒体内容源发送使用UDP分组向所述设备仅流传送所述媒体内容的所选择的媒体流的请求的装置。

13.如权利要求10所述的系统,其特征在于,用于确定所述媒体内容是否可使用UDP分组被流传送到所述设备的装置包括:用于向所述媒体内容源发送UDP探测分组的装置;以及

用于如果响应于所述UDP探测分组从所述媒体内容源接收到UDP响应分组,则确定所述媒体内容可使用UDP分组被流传送到所述设备,否则,确定所述媒体内容不能使用UDP分组被流传送到所述设备的装置。

14.如权利要求10所述的系统,其特征在于,所述媒体内容源包括服务器设备。

15.如权利要求10所述的系统,其特征在于,所述请求是具有X-Transport头部的Select请求,所述X-Transport头部具有指示所述媒体内容要使用UDP分组来流传送到所述设备的RTP/UDP传输参数。

16.如权利要求10所述的系统,其特征在于,所述请求是超文本传输协议HTTP Post命令。

17.如权利要求10所述的系统,其特征在于,所述请求包括超文本传输协议HTTP Get命令。

18.一种用于流传送媒体的快速启动的系统,包括:

用于从客户机设备向服务器设备发送预测性播放请求的装置;

用于响应于所述预测性播放请求,在所述服务器设备处预测所述客户机设备期望的一个或多个媒体流的装置;

用于使用传输控制协议TCP至少将所预测的所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备的装置;

用于在所述客户机设备处确定是否有除所预测的所述一个或多个媒体流之外的媒体流是所述客户机设备所期望的的装置;

用于如果是,则选择与所预测的所述一个或多个媒体流不同的至少一个媒体流来流传送到所述客户机设备,向所述服务器设备发送对所选择的所述至少一个媒体流的指示,并将所选择的所述至少一个媒体流,而非所预测的所述一个或多个媒体流中的至少一个,从所述服务器设备发送到所述客户机设备的装置;

其中所述系统还包括:

用于在将媒体流从所述服务器设备流传送到所述客户机设备的同时,探测数据是否可使用用户数据报协议UDP从所述服务器设备流传送到所述客户机设备的装置;以及用于如果所述探测指示了数据可使用UDP从所述服务器设备流传送到所述客户机设备,则切换到使用UDP将媒体流从所述服务器设备流传送到所述客户机设备,否则,继续使用TCP将媒体流从所述服务器设备流传送到所述客户机设备的装置。

19.如权利要求18所述的系统,其特征在于,所述预测性播放请求包括具有“Pragma:PredStart=1”头部的请求。

20.如权利要求18所述的系统,其特征在于,所述系统还包括:

用于从所述客户机设备接收流传送与所预测的所述一个或多个媒体流之一不同的媒体流的请求的装置;

用于停止向所述客户机设备流传送所预测的所述一个或多个媒体流之一的装置;以及用于开始向所述客户机设备流传送所述不同的媒体流的装置。

21.如权利要求20所述的系统,其特征在于,所述流传送与所预测的一个或多个媒体流之一不同的媒体流的请求包括具有“pragma:stream-switch-entry”头部的Select请求,所述头部具有指示所述不同媒体流的一个或多个参数。

22.如权利要求18所述的系统,其特征在于,所述系统还包括:

用于向所述客户机设备传递对于所预测的一个或多个流的标识以及对于可被流传送到所述客户机设备的一个或多个其它流的标识的装置。

23.如权利要求18所述的系统,其特征在于,所述用于响应于所述预测性播放请求,在所述服务器设备处预测所述客户机设备期望的一个或多个媒体流的装置包括用于至少部分地基于包括在所述预测性播放请求中的信息来预测所述客户机设备所期望的一个或多个媒体流的装置。

24.如权利要求23所述的系统,其特征在于,包括在所述预测性播放请求中的信息包括对所述客户机设备和所述服务器设备之间的连接速度的标识。

25.如权利要求23所述的系统,其特征在于,包括在所述预测性播放请求中的信息包括对所述客户机设备期望的语言的标识。

26.如权利要求18所述的系统,其特征在于,所述用于响应于所述预测性播放请求,在所述服务器设备处预测所述客户机设备期望的一个或多个媒体流的装置包括用于至少部分地基于除包括在所述预测性播放请求中的信息之外的、对所述服务器设备可用的信息来预测所述客户机设备所期望的一个或多个媒体流的装置。

27.如权利要求18所述的系统,其特征在于,所述系统还包括用于在所述预测性播放请求中包括要由所述服务器设备用于预测所述一个或多个媒体流的信息的装置。

28.一种用于流传送媒体的快速启动的方法,包括:

从客户机设备向服务器设备发送预测性播放请求;

响应于所述预测性播放请求,在所述服务器设备处预测所述客户机设备期望的一个或多个媒体流;

使用传输控制协议TCP至少将所预测的所述一个或多个媒体流从所述服务器设备流传送到所述客户机设备;

在所述客户机设备处确定是否有除所预测的所述一个或多个媒体流之外的媒体流是所述客户机设备所期望的;

如果是,则选择与所预测的所述一个或多个媒体流不同的至少一个媒体流来流传送到所述客户机设备,向所述服务器设备发送对所选择的所述至少一个媒体流的指示,并将所选择的所述至少一个媒体流,而非所预测的所述一个或多个媒体流中的至少一个,从所述服务器设备发送到所述客户机设备;

其中所述方法还包括:

在将媒体流从所述服务器设备流传送到所述客户机设备的同时,探测数据是否可使用用户数据报协议UDP从所述服务器设备流传送到所述客户机设备;以及如果所述探测指示了数据可使用UDP从所述服务器设备流传送到所述客户机设备,则切换到使用UDP将媒体流从所述服务器设备流传送到所述客户机设备,否则,继续使用TCP将媒体流从所述服务器设备流传送到所述客户机设备。

说明书 :

用于流传送媒体的快速启动的方法和系统

技术领域

[0001] 本发明涉及流传送媒体和数据传输,尤其涉及用于流传送媒体的快速启动。
[0002] 发明背景
[0003] 诸如音频、视频和/或文本的流传送等内容流传送正变得越来越流行。术语“流传送”通常用于指示表示媒体的数据通过网络在按需的基础上提供给客户机计算机而非在回放之前预传送其整体。由此,客户机计算机在从网络服务器上接收到时就呈现流内容,而非等待传送整个“文件”。
[0004] 流多媒体内容的广泛可用性使得先前不能通过因特网或其它计算机网络获得的各种信息内容变得可能。实况内容是这类内容的一个重要示例。使用流多媒体,可在事件发展时通过因特网广播值得注意的事件的音频、视频或音频/视觉覆盖。类似地,电视台和广播电台可通过因特网发送其实况内容。
[0005] 然而,当前的流传送技术具有缺陷。一个这样的缺陷是在请求流媒体的回放的时刻和流媒体开始回放的时刻之间通常存在某种程度的长延迟。通常在发生媒体内容的回放的客户机设备和媒体内容的源之间要求各种通信。从客户机设备的用户的观点来看,这一延迟降低了客户机设备的用户友好度以及流传送过程的用户友好度。由此,减小用户请求流媒体的回放的时刻和流媒体开始回放的时刻之间的延迟将是有益的。
[0006] 发明概述
[0007] 本发明描述了用于流传送媒体的快速启动。用于流传送媒体的快速启动包括用于预测性启动的技术和用于在流传送期间切换传送信道的技术中的一种或两者。
[0008] 依照某些方面,用于预测性启动的技术包括客户机设备向服务器设备发送预测性播放请求。响应于该预测性播放请求,服务器设备预测客户机设备所需的一个或多个媒体流,并将所预测的一个或多个媒体流流传送到客户机设备。客户机设备可选择与所预测的一个或多个媒体流不同的至少一个媒体流用于流传送到客户机设备。如果选择了至少一个这样的媒体流,则对所选择的至少一个媒体流的指示被发送到服务器设备,服务器设备将所选择的至少一个媒体流流传送到客户机设备。
[0009] 依照某些方面,用于在流传送期间切换传送信道的技术包括客户机设备向服务器设备发送要将一个或多个媒体流流传送到客户机设备的请求。服务器设备接收该请求,并开始使用TCP(传输控制协议)向客户机设备流传送一个或多个媒体流。在使用TCP从服务器设备向客户机设备流传送一个或多个媒体流的同时,执行探测以确定数据是否可使用UDP(用户数据报协议)从服务器设备流传送到客户机设备。如果探测指示数据可使用UDP从服务器设备流传送到客户机设备,则一个或多个媒体流的流传送从使用TCP切换到使用UDP。然而,如果探测指示数据不能使用UDP从服务器设备流传送到客户机设备,则一个或多个媒体流的流传送继续使用TCP。
[0010] 附图简述
[0011] 贯穿整篇文档,相同的标号引用相同的组件和/或特征。
[0012] 图1示出了支持此处所描述的用于流传送媒体的快速启动的示例网络环境。
[0013] 图2示出了可使用此处所描述的用于流传送媒体的快速启动来流传送媒体内容的示例客户机和服务器设备。
[0014] 图3是更详细地示出示例客户机和服务器设备以及预测性启动技术的框图。
[0015] 图4是示出示例预测性启动过程的流程图。
[0016] 图5是更详细地示出示例客户机和服务器设备以及传送信道切换过程的框图。
[0017] 图6是示出示例传送信道切换过程的流程图。
[0018] 图7是示出包括预测性启动和传送信道切换的示例快速启动过程的流程图。
[0019] 图8示出了可用于实现此处所描述的技术的通用计算机环境。
[0020] 较佳实施例的详细描述
[0021] 本发明描述了用于流传送媒体的快速启动。该快速启动包括用于预测性启动的技术和用于在流传送期间切换传送信道的技术中的一种或两者。预测性启动允许媒体内容源预测做出请求的客户机期望哪一(些)媒体流,并开始将所预测的媒体流流传送到客户机设备。传送信道切换技术允许媒体内容源开始使用一种传送信道(例如,使用传输控制协议(TCP))流传送媒体流,然后检查另一种传送信道(例如,使用用户数据报协议(UDP))是否起作用,并且如果该信道起作用则切换到另一信道。
[0022] 图1示出了支持此处所描述的用于流传送媒体的快速启动的示例网络环境100。在环境100中,多个(a)客户机计算设备102(1)、102(2)、……、102(a)通过网络106被耦合到多个(b)服务器计算设备104(1)、104(2)、……、104(b)。网络106用于表示采用各种常规网络协议(包括公共和/或专有协议)的各种常规网络拓扑结构和类型(包括有线和/或无线网络)中的任一种。网络106可包括例如因特网以及可能一个或多个局域网(LAN)的至少一部分。
[0023] 计算设备102和104的每一个可以是各种常规计算设备中的任一种,包括台式PC、工作站、大型计算机、因特网设备、游戏控制台、手持式PC、蜂窝电话、个人数字助理(PDA)等等。设备102和104的一个或多个可以是同一类型的设备,或者可以是不同类型的设备。
[0024] 服务器设备104可使得各种数据中的任一种可用于向客户机102流传送。术语“流传送”用于指示表示媒体的数据是通过网络提供给客户机设备的,且该内容的回放可在内容被全部传送之前开始(例如,在按需的基础上提供数据而非在回放之前预传送全部数据)。数据可以是公共可用的,或者可以是受限制的(例如,仅限由某些用户、仅当支付了适当的费用时可用等等)。数据可以是各种一种或多种类型的内容中的任一种,诸如音频、视频、文本、动画等等。另外,数据可以被预编码或者可以是“实况的”(例如,执行作为音乐会捕捉的音乐会的数字表示,并使其可用于在捕捉之后不久进行流传送)。
[0025] 客户机设备102可从将流媒体内容储存为文件的服务器104处接收流媒体,或者可从接收来自某一其它来源的流媒体的服务器104处接收流媒体。例如,服务器104可从将流媒体内容储存为文件的另一服务器处接收流媒体,或可从某一其它来源(例如,对“实况”事件进行编码的编码器)接收流媒体。
[0026] 如此处所使用的,流传送媒体指将一个或多个媒体流从一个设备流传送到另一个(例如,从服务器设备104流传送到客户机设备102)。媒体流可包括各种类型的内容中的任一种,诸如音频、视频、文本等中的一个或多个。
[0027] 图2示出了可使用此处所描述的用于流传送媒体的快速启动来流传送媒体内容的示例客户机和服务器设备。在客户机设备102和服务器设备104处都遵循多个不同的协议,以将媒体内容从服务器设备104流传送到客户机设备102。这些不同的协议可负责流传送过程的不同方面。尽管未在图2中示出,一个或多个其它设备(例如,防火墙、路由器、网关、网桥等)可位于客户机设备102和服务器设备104之间。
[0028] 在图2的示例中,使用应用程序级协议150、传输协议152和一个或多个传送信道协议154作为流传送过程的一部分。也可采用图2中未示出的其它协议(例如,可以在应用程序级协议150和传输协议152之间有其它协议)。应用程序级协议150是应用程序级的协议,用于控制具有实时属性的数据的传送。应用程序级协议150提供了可任选地可扩展的框架,以启用诸如流音频和视频内容等实时数据的受控的按需传送。应用程序级协议150是用于启动和指导从媒体服务器传送流多媒体的控制协议。应用程序级协议150的示例包括如1998年4月网络工作小组因特网标准草案(RFC)2326中所描述的实时流协议(RTSP),以及1996年5月网络工作小组因特网标准草案(RFC)1945或1997年1月网络工作小组因特网标准草案(RFC)2068中所描述的超文本传输协议(HTTP)。
[0029] 应用程序级协议150使用传输协议152用于传送诸如流音频和视频等实时数据。传输协议152为媒体流定义了分组格式。传输协议152提供了适用于通过组播或单播网络服务发送诸如音频、视频或模拟数据等实时数据的应用程序的端对端网络传输功能。传输协议152的示例包括2003年7月网络工作小组因特网标准草案(RFC)3550中所描述的实时传输协议(RTP)和实时控制协议(RTCP)。RTP未着眼于资源保留,并且不保证实时服务的服务质量。数据传输通过控制协议(RTCP)来增加,以允许以可伸缩至大型组播网络的方式监视数据传送,并提供某一控制和标识功能。
[0030] 传输协议152使用传送信道协议154用于传输连接。传送信道协议154包括用于将数据分组从服务器设备104传送到客户机设备102的一个或多个信道。每一信道通常用于发送单媒体流的数据分组,尽管在替换实施例中,可使用单个信道来发送多个媒体流的数据分组。传送信道协议154的示例包括传输控制协议(TCP)分组和用户数据报协议(UDP)分组。TCP确保数据分组的传送,而UDP不确保数据分组的传送。通常,使用TCP传送数据分组比使用UDP传送数据分组更可靠,但也更耗时。
[0031] 图3是更详细地示出示例客户机和服务器设备以及预测性启动技术的框图。在某些实施例中,图2的协议150、152和154包括在图3的客户机和服务器设备中,但未示出。此外,尽管未在图3中示出,一个或多个其它设备(例如,防火墙、路由器、网关、网桥等)可位于客户机设备102和服务器设备104之间。
[0032] 客户机设备102通过向服务器设备104发送预测性播放请求来启动预测性启动过程。预测性播放请求182可包括协助服务器设备104预测客户机设备102期望哪些媒体流的各种信息。该信息可包括,例如,关于客户机设备102的信息、关于客户机设备102的用户的信息、和/或关于服务器设备104和客户机设备102之间的连接的信息。服务器设备104接收该预测性播放请求,并预测客户机设备102期望哪一(些)媒体流。该预测通常至少部分地基于预测性播放请求中所包括的信息。
[0033] 服务器设备104然后开始将它所预测的客户机设备102期望的媒体流流传送(184)到客户机设备102。由此,图3所示的示例中,从服务器设备104向客户机设备102的媒体内容的流传送开始响应于在服务器设备104处接收到的来自客户机设备102的第一个请求。作为流传送所预测的流184的一部分,服务器设备104包括对客户机设备102可用的各种媒体流的描述。这各种媒体流通常包括由服务器设备104预测的媒体流以及一个或多个其它流。
[0034] 客户机设备102接收来自服务器104的流媒体,并处理该流媒体。该过程可包括,例如,在客户机设备102处缓冲该流媒体用于向用户演示。另外,客户机设备102检查从服务器设备104接收到的对客户机设备102可用的各种媒体流的描述,并确定当前流传送到客户机设备102的预测的流是否的确是客户机设备102所期望的流。如果它们是期望的流,则客户机设备102无需采取其它行动。然而,如果它们不是所期望的流,则客户机设备102向服务器设备104发送流选择186。流选择186标识了客户机设备102所期望的流。
[0035] 服务器设备104接收流选择186,并将所选择的流188流传送到客户机设备102。流选择186可标识一个或多个流,并且可标识要替换所预测的流或要除所预测的流之外进行流传送的流。如果标识的流要替换所预测的流,则所预测的流的流传送被服务器设备104停止。然而,如果所标识的流是除预测的流之外的流,则该预测的流的流传送不被服务器设备104停止。
[0036] 预测性播放请求182的示例实施例、用预测的数据流响应184、流选择186和用所选择的数据流响应188在以下段落中更详细地讨论。
[0037] 预测性播放请求182包括资源定位符,诸如统一资源定位符(URL)。该资源定位符标识了客户机设备102期望的媒体内容。然而,对该媒体内容可以有各种选项。例如,媒体内容可具有以不同的比特率(对于具有不同连接速度的客户机设备)编码的多个视频流、用于不同语言的多个视频流、用于不同语言的多个音频流、以不同语言表达的多个字幕媒体流等等。然而,由于客户机设备102尚不知道这各种选项是什么,因此客户机设备102尚不能选择这些用于媒体内容的不同的各种选项中的特定几个。
[0038] 预测性播放请求182也可包括一个或多个名称—值对,该名称—值对包括服务器设备104用于预测客户机设备102期望哪一(些)媒体流的信息。这些名称—值对包括指示所标识的信息类型的名称部分,以及指示所标识的特定信息的值部分。或者,信息可用除名称—值对以外的方式来标识,诸如以预定义顺序出现的一系列值(由此减轻了对名称部分的需求)。另外,在某些情况下,预测性播放请求182可以不用名称—值对或其它方法来包括任何这样的信息。
[0039] 包括在播放请求182中的信息可以不同。在某些实施例中,播放请求182包括客户机设备102和服务器设备104之间的连接速度或链路带宽的标识,以及客户机设备102所需的语言的标识。在其它实施例中,可除/替代链路带宽和/或语言包括其它信息,诸如期望什么类型的媒体流(例如,仅音频、仅视频、视频和音频等)、客户机设备102处有什么编解码器可用(例如,音频编解码器、视频编解码器等等)、视频数据应当是什么语言(例如,使得视频上人的嘴唇与音频同步)、等等。
[0040] 客户机设备102可以用不同的方式获得要包括在预测性播放请求182中的信息。通常,资源定位符是通过用户输入(例如,对特定媒体内容的用户选择)或通过程序输入(例如,运行在客户机设备102上的程序选择特定的媒体内容)来获得的。服务器设备104用于做出预测的信息可被预编程(例如,由开发者或设计者,或通过对偏好的用户设置)成发送预测性播放请求182的应用程序。例如,如果应用程序是媒体播放器应用程序,则媒体播放器应用程序的用户可能能够设置媒体播放器应用程序的偏好或选项来标识用户偏爱的语言。关于连接速度或链路带宽的信息可例如通过客户机设备102上的应用程序基于可用带宽的用户输入测试带宽、通过监视先前向客户机设备102流传送媒体的速率等来获得。服务器设备104用于做出预测的信息也可替换地被预编程到服务器设备104中(例如,在所有的客户机为已知或者期望是相同类型的情况下)。
[0041] 预测性播放请求182可采用各种不同的形式。在某些实施例中,预测性播放请求182是HTTP Get(获取)命令。或者,可使用其它格式(例如,不同的句法、HTTP Post(张贴)命令、RTSP命令等等)。预测性播放请求包括将该请求标识为预测性播放请求的标识符。在某些实施例中,使用一个或多个头部来将请求标识为预测性播放请求,尽管将请求标识为预测性播放请求的信息可替换地包括在消息主体中。另外,在某些实现中,请求中一个或多个这样的头部的存在将该请求标识为预测性播放请求。可用于将请求标识为预测性播放请求的预测性启动头部的示例是“Pragma:PredStart=1”,其中值“1”用作指示请求预测性播放的参数。
[0042] 当服务器设备104接收预测性播放请求182时,服务器设备104标识与请求182相关联的媒体流。请求182标识了资源,所述资源可以是一个或多个文件,其每一个包括可流传送到客户机设备102的一个或多个媒体流。与资源相关联的是这些媒体流的标识,以及通常描述这些媒体流是什么(例如,它们是以什么比特率编码的;它们是否为音频、视频、文本等;它们使用什么语言;等等)的信息。该标识可以是资源的一部分(例如,它可以在资源的头部文件中,诸如ASF(高级流格式或高级系统格式)文件中的ASF头部),或者可替换地单独维护。
[0043] 服务器设备104使用包括在预测性播放请求182中的信息以及关于什么媒体流对于所请求的资源可用的信息,来预测客户机设备102期望哪一(些)媒体流。服务器设备104也可采用附加信息,诸如由服务器设备104的管理员或用户提供的默认值、先前流传送到客户机设备102(和/或该客户机设备102)的媒体流等等。预测客户机设备102期望哪一(些)媒体流的确切方式可基于对服务器设备可用的信息而改变。
[0044] 作为示例,假定客户机设备102发送对要流传送到客户机设备102的影片的预测性播放请求。客户机设备102不知道对该影片有什么媒体流可用,诸如视频内容是以哪些不同的比特率来编码的、音频内容是以哪些语言可用、字幕以哪些语言可用等等。然而,假定客户机设备102知道其默认语言是英语,且它具有500千比特每秒(kbps)的连接速度。因此,客户机设备102向服务器设备104发送对影片的预测性播放请求,并在该预测性播放请求中包括对其默认语言为英语以及其默认连接速度是500kbps的指示。
[0045] 服务器设备104接收该预测性播放请求,并访问与所请求的影片相关联的、描述所请求的影片的信息。假定该影片具有三个视频流,一个是以100kbps编码的,另一个是以300kbps编码的,还有一个是以500kbps编码的。此外,假定影片具有以100kbps编码的英语音频流,以及以100kbps编码的西班牙语音频流,并且该影片具有以10kbps编码的法语字幕流,以及以10kbps编码的日语字幕流。同样假定与该影片相关的信息指示视频流是互斥的(每次仅三个中的一个可被流传送到客户机设备102),音频流是互斥的(每次仅两个中的一个可被流传送到客户机设备102),且音频具有高于视频的优先级。
[0046] 由于音频具有高于视频的优先级,因此服务器设备104将两个音频流中的一个流传送到客户机设备102。此外,由于预测性播放请求包括对客户机设备102的默认语言是英语的指示,因此服务器设备104预测客户机设备102期望英语音频流。
[0047] 给定英语音频流是以100kbps编码的,且客户机设备102的默认连接速度是500kbps,因此服务器设备104预测客户机设备102期望以300kbps编码的视频流(因为音频流是以100kbps编码的,因此服务器设备104预测有足够的带宽来流传送500kbps的流)。
[0048] 预测性播放请求不包括关于字幕流的任何信息,因此服务器104在别处进行查找以确定是否预测期望字幕流。由于还有剩下的带宽(仅使用了500kbps中的400kbps),因此服务器设备104可预测期望字幕流之一。如果在与影片相关联的信息中将字幕流之一标识为具有高于其它字幕流的优先级,则该字幕流被预测为客户机设备102所期望的那一个。或者,以某一其它方式(例如,随机地、以在与影片相关联的信息中引用的顺序等等)将字幕流之一预测为客户机设备102所期望的那一个。
[0049] 或者,服务器设备104可保持客户机设备每隔多久期望各种媒体流的记录。如果该记录指示客户机设备不常期望字幕流(例如,小于50%的时间),则服务器设备104可预测客户机设备102不期望字幕流,且不将任何字幕流流传送到客户机设备102。
[0050] 应当注意,服务器设备104预测的客户机设备102期望的媒体流仅仅是:预测。不保证这些媒体流是客户机设备102的确期望的媒体流。然而,通过做出预测,服务器设备104可立即开始将媒体流流传送到客户机设备102,而无需等待客户机设备102做出它期望哪些媒体流的选择。
[0051] 服务器设备104然后将预测的媒体流流传送到客户机设备102。服务器设备104也传递包括对哪些媒体流对请求的资源可用以及哪些流被预测为客户机设备102所期望的指示的信息。该信息可与预测的媒体流一起包括在内,并由此被流传送到客户机设备102,或者可以用某一其它方式来传递,诸如以非流传送的方式(例如,通过基于HTTP的控制协议)。在某些实施例中,该信息包括在依照1998年4月网络工作小组因特网标准草案(RFC)2327的会话描述协议(SDP)的会话描述消息中。
[0052] 客户机设备102接收所预测的媒体流,包括对于哪些媒体流对所请求的资源可用以及被预测为客户机设备102所期望的流的指示。客户机设备102然后分析对于哪些媒体流对所请求的资源可用的指示,并选择与所预测的媒体流不同的媒体流。对不同的媒体流的选择是可任选的—如果客户机设备102期望的是服务器设备104所预测的媒体流,则客户机设备102无需做出其它媒体流的选择。
[0053] 所选择的媒体流可以是除所预测的媒体流之外的媒体流(例如,在前述示例中,没有一个字幕流被服务器设备104预测为客户机设备102所期望的,但是客户机设备102可选择字幕流)。所选择的媒体流或者可以是所预测的媒体流的替代(例如,客户机设备102可选择西班牙语音频流而非英语音频流)。
[0054] 客户机设备102处的选择可以用不同的方式来执行。例如,应用程序(例如,媒体播放器程序)可被编程以做出该选择。作为示例,可向客户机设备的用户呈现各种可用的媒体流,可允许用户选择他或她期望哪一(些)媒体流。客户机设备102做出的任何选择然后被发送到服务器设备104。
[0055] 在某些实施例中,诸如当使用HTTP用于流传送媒体时,使用流传送会话的标识符。该标识符允许不同的请求彼此相关联。例如,预测性播放请求可以通过客户机设备102和服务器设备104之间的一个连接发送,而标识所选择的媒体流的请求通过客户机设备102和服务器设备104之间的一个不同的连接发送。为使服务器设备104能够知道两个请求是彼此相关的,使用流传送会话的标识符。在某些实施例中,服务器设备104响应于预测性播放请求返回一标识符。然后,该标识符可由客户机设备102在向服务器设备104发送所选择的媒体流的请求时使用,以通知服务器设备104,标识所选择的媒体流的请求是与该预测性播放请求相关联的。
[0056] 标识所选择的媒体流的请求可以采用各种不同的格式。在某些实施例中,该请求是Select(选择)请求,它可例如作为HTTP Post(张贴)命令或HTTP Get(获取)命令被发送到服务器设备104。或者,该请求可以用其它方式来传送,诸如使用RTSP命令。Select请求包括将该请求标识为Select请求的标识符、零个或多个头部、以及可任选的消息主体。在某些实施例中,标识所选择的媒体流的信息包括在Select请求的一个或多个头部中,尽管标识所选择的媒体流的信息可替换地包括在消息主体中。另外,在某些实现中,请求中一个或多个这样的头部的存在将请求标识为Select请求。表I示出了可包括在Select请求中的头部的示例。
[0057] 表I
[0058]头部名称 描述
Pragma:client-id 流传送会话的标识符。允许客户机指示该Select请求
与特定的流传送会话相关联。
Pragma:stream-switch-entry 由客户机设备选择的媒体流的标识。向对请求的资源
可用的各个媒体流(例如,如由服务器设备在会话描
述消息中所标识的)分配标识符(通常包括在会话描
述消息中)。一个或多个这些标识符的列表作为该
stream-switch-entry头部的参数被包括在内。
[0059] 描述所选择的媒体流的信息可以用不同的方式来描述所选择的媒体流。作为对所选择的媒体流的描述的一部分,可包括指示要将媒体流的多少数据流传送到客户机设备102(例如,所有帧、仅关键帧等)的“细化等级(thinning level)”。作为一个示例,该描述可以是客户机设备102所期望的媒体流的列表,而不涉及服务器设备104预测了哪些流。
作为另一示例,该描述可以是除服务器104所预测的流之外的、客户机设备102所期望的媒体流的列表。作为又一示例,该描述包括一个或多个流对值,每一对标识了所预测的流以及要替换所预测的流的所选择的流。作为再一示例,该描述可以是所有媒体流的列表以及对于这些媒体流是否被选中用于流传送到客户机设备102的标识。作为还有一个示例,该描述可以是“否定”描述(例如,列出客户机设备102不期望的所有媒体流,并由此内在地标识了客户机设备102所期望的媒体流)。
[0060] 服务器设备104接收Select请求,并开始将所选择的流流传送到客户机设备102。服务器设备104停止向客户机设备102流传送被所选择的流替换的任何预测的流,但是继续流传送不被所选择的流替换的任何预测的流。
[0061] 预测性播放请求所标识的资源可以与单媒体或多媒体演示或者多个这样的演示相关联。例如,资源可标识是单个多媒体演示的影片,即使该影片具有多个视频、音频和/或字幕流。作为另一示例,资源可标识影片以及不同影片的商业广告和宣传片。在该示例中,影片可以是一个多媒体演示,商业广告可以是第二个多媒体演示,宣传片可以是第三个多媒体演示。
[0062] 当资源与多个多媒体演示相关联时,服务器设备104可预测客户机设备102期望哪些演示,并预测那些演示内的哪些媒体流是客户机设备102所期望的。例如,假定与资源相关联的两个不同的商业广告,一个商业广告是以西班牙观众为目标的,而另一个是以中国观众为目标的。如果预测性播放请求指示默认的语言是西班牙语,则服务器设备104可预测以西班牙观众为目标的商业广告是客户机设备102所期望的,而非以中国观众为目标的商业广告。
[0063] 应当注意,在某些情况下,服务器设备104可选择不做出预测。例如,当做出不正确的预测的可能性太大时会发生这一情况。在这些情况下,服务器设备104发送对所请求的资源而言哪些媒体流是可用的指示,但是不启动对任何预测的媒体流的流传送。相反,服务器设备104等待,直到客户机设备做出对可用媒体流的一个或多个的选择,并且当接收到播放所选择的媒体流的请求时启动对所选择的媒体流的流传送。
[0064] 图4是示出示例预测性启动过程200的流程图。图4示出了由客户机设备102(例如,图1、2和3)以及服务器设备104(例如,图1、2和3)执行的动作。由客户机设备102执行的动作在图4的左侧示出,而由服务器设备104执行的动作在图4的右侧示出。
[0065] 最初,客户机设备102生成预测性播放请求(动作202)。预测性播放请求标识了期望被流传送到客户机设备102的一个或多个媒体或多媒体演示,被表示为服务器设备104的资源。客户机设备102向服务器设备104发送预测性播放请求(动作204),服务器设备104接收该预测性播放请求(动作206)。
[0066] 响应于预测性播放请求,服务器设备104预测客户机设备102所期望的一个或多个媒体流(动作208)。如上所述,该预测可基于不同的因素,诸如包括在预测性播放请求中的信息、服务器设备104的默认设置、与所请求的资源相关联的信息、对流媒体的先前的请求等等。所预测的媒体流然后被流传送到客户机设备102(动作210)。作为动作210中该流传送的一部分,对所预测的媒体流以及对所请求的资源可用的媒体流的指示也被发送到客户机设备102。或者,如上所述,对所预测的媒体流以及对所请求的资源可用的媒体流的指示可以用包括非流传送方式的其它方式被传递到客户机设备102。
[0067] 客户机设备102接收所预测的媒体流(动作212),并分析所接收的对所预测的媒体流以及对所请求的资源可用的媒体流的指示。过程200然后基于客户机设备102是否期望将一个或多个与所预测的媒体流不同的媒体流流传送到其上来继续。如上所述,对于这一不同媒体流的选择可以用不同的方式来做出,诸如通过客户机设备102上的应用程序或客户机设备102的用户输入。如果不选择不同的媒体流(动作214),则客户机设备102的确期望服务器设备104所预测的的媒体流,并且继续对所接收的媒体流的处理(动作216)。该处理可包括,例如,在客户机设备102处缓冲所接收的媒体流和/或呈现(例如,回放)所接收的媒体流。
[0068] 然而,如果选择了不同的媒体流,则客户机设备102向服务器设备104发送对那些所选择的媒体流的指示(动作218)。服务器设备104接收对所选择的媒体流的指示(动作220),并标识要发送到客户机102的媒体流(动作222)。如上所述,客户机设备102所选择的流可以是除所预测的媒体流之外的流,或者可以替代一个或多个所预测的媒体流。服务器设备104在动作222所标识的流包括被指示为客户机设备102所选择的流(在动作220接收),并且还可包括服务器设备104在动作208预测的一个或多个流。
[0069] 服务器设备104然后对流传送到客户机102的所标识的媒体流进行流传送(动作224)。通常,所标识的媒体流是从当前回放位置开始流传送的(例如,当接收到选择请求时,标识当前流传送的媒体流的时间位置,然后确定所标识的媒体流的对应的时间位置,并且所标识的媒体流的流传送在该确定的位置处开始)。或者,可使用其它起始点,诸如所标识的媒体流的开始。客户机设备102从服务器设备104接收所标识的媒体流(动作226),并处理所接收的媒体流(动作216)。该处理可包括,例如在客户机设备102处缓冲媒体流和呈现(例如,回放)媒体流。
[0070] 返回到图2,此处所讨论的快速启动还包括在流传送期间切换传送信道的过程。传输协议152可使用各种不同的传送信道。通常,每一媒体流是使用不同的传送信道从服务器设备104发送到客户机设备102的。用于不同媒体流的这些传送信道通常是相同的类型,尽管可替换地,它们可以是不同的类型。两种常用类型的传送信道是TCP信道和UDP信道。TCP信道以被称为TCP分组的分组来发送数据,而UDP信道以被称为UDP分组的分组来发送数据。通常,使用TCP传送数据分组比使用UDP传送数据分组更可靠,但更耗时。另外,可出现诸如防火墙位于在客户机设备102和服务器设备104之间的情况,在这一情况下,客户机设备102不能接收UDP分组,但客户机设备102能够接收TCP分组。
[0071] 图5是更详细地示出示例客户机和服务器设备以及传送信道切换过程的框图。在某些实施例中,图2的协议150、152和154包括在图5的客户机和服务器设备中,但未示出。此外,尽管未在图5中示出,一个或多个其它设备(例如,防火墙、路由器、网关、网桥等)可位于客户机设备102和服务器设备104之间。此处所讨论的传送信道切换允许媒体内容源使用一种传送信道(例如,TCP)开始媒体流的传送,然后检查另一传送信道(例如,UDP)是否起作用,并且如果该传送信道起作用,则切换到该另一传送信道。
[0072] 最初,客户机设备102向服务器设备104发送播放请求252,请求将一个或多个媒体流流传送到客户机设备102。播放请求252可以是如上所述的预测性播放请求,或者可以是请求将一个或多个媒体流流传送到客户机设备102的任何其它请求(或多个请求的组合)。例如,该播放请求252可以是具有Select请求的HTTP Post命令,它标识了所期望的媒体流。响应于播放请求,服务器设备104使用TCP将所请求的媒体流流传送(254)到客户机设备102。该响应包括以多个TCP分组形式的所请求的媒体流的数据。
[0073] 在使用TCP从服务器设备104向客户机设备102流传送媒体的同时,客户机设备102向服务器设备104发送UDP探测分组256。在某些实施例中,这是通过服务器设备104在使用TCP流传送媒体的同时打开UDP端口并将打开的UDP端口的标识发送给客户机设备
102来实现的254。客户机设备102接收该UDP端口标识,然后向服务器设备104的该端口发送UDP分组。或者,服务器设备104可具有用于UDP探测分组的公知的UDP端口,并且客户机设备102可向该公知的UDP端口发送UDP探测分组256,而无需服务器设备104首先向客户机设备102发送打开的UDP端口的标识。客户机设备102也可打开其可向服务器设备104标识的UDP端口,作为UDP探测分组256的一部分,作为它可接收UDP分组的UDP端口。
[0074] 服务器设备104接收UDP探测分组256,并生成和向客户机设备102发送UDP探测响应分组258。UDP探测响应分组258是对客户机设备102的指示,它指示UDP探测分组256被服务器设备104接收。UDP探测响应分组258可任选地包括UDP探测分组256的标识符的某些种类,诸如包括在UDP探测分组256中的标识符。或者,仅在同一连接上存在响应本身可将响应分组257与探测分组256相关联。例如,如果单个请求和相关联的响应是通过连接发送的仅有两个消息,则响应258可被视为对探测分组256的响应。
[0075] 应当注意,尽管在某些实施例中客户机设备102发送单个UDP探测分组256,然而在其它实施例中,客户机设备102发送多个UDP探测分组256,并且服务器设备104对每一这样的UDP探测分组256返回一个UDP探测响应分组258。多个UPD探测分组256可由客户机设备102同时发送,或者可在不同的时刻发送(例如,客户机设设备102可在发送另一UDP探测分组256之前等待对一个UDP探测分组256返回UDP探测响应分组258)。例如,在传输协议152包括RTP和RTCP协议的实施例中,RTP数据是使用一个传送信道或传送流来发送的,且RTCP数据是使用不同的传送信道或传送流来发送的。UDP探测分组256可以对这两种传送信道或传送流的每一种发送。作为另一示例,可由客户机设备102对多个媒体流的每一个(例如,对客户机设备102期望切换到使用UDP来进行流传送的每一媒体流,对当前使用TCP被流传送到客户机设备102的每一媒体流等等)发送不同的UDP探测分组256。这两个示例也可以被组合(例如,两个UDP探测分组256(一个用于RTP流,而另一个用于RTCP流)可由客户机设备102对多个媒体流的每一个发送)。
[0076] 当客户机设备102接收UDP探测响应分组258时,客户机设备102知道UDP分组可从服务器设备104发送到客户机设备102。因此,客户机设备102向服务器设备104发送切换到使用UDP从服务器设备104向客户机设备102流传送媒体流的请求260。通常,客户机设备102向服务器设备104发送所有媒体流被切换到使用UDP来流传送的请求,尽管可替换地,客户机设备102可在请求中标识仅要被切换到使用UDP来流传送的特定的媒体流(剩余的媒体流仍使用TCP来流传送)。或者,多个请求可以从客户机设备102发送到服务器设备104,每一请求标识应当使用UDP流传送到客户机设备192的特定的一个或多个媒体流。
[0077] 响应于该请求,服务器设备104开始使用UDP向客户机102流传送播放请求252中所请求的媒体流(262)。在某些实施例中,由于使用TCP的媒体流的流传送已经开始,因此服务器设备104不在媒体流的开始处使用UDP开始流传送。相反,服务器设备104停止使用TCP来流传送数据,并在停止使用TCP流传送的任一点处开始使用UDP流传送。或者,在分组之间可以有某一重叠(例如,在发生切换到UDP的点处,已经使用TCP发送的某些分组可以使用UDP重新发送)。
[0078] 切换到使用UDP从服务器设备104向客户机设备102流传送媒体流的请求可以是各种不同格式中的任一种。在某些实施例中,该请求可以是Select请求,它可以作为HTTP Post命令被发送到服务器设备104。或者,请求可以用其它方式来传送,诸如使用RTSP命令。Select请求包括将请求标识为Select请求的标识符、零个或多个头部以及可任选的消息主体。在某些实施例中,请求服务器设备切换到使用UDP来流传送媒体流的信息包括在Select请求的一个或多个头部中,尽管请求服务器设备切换到使用UDP来流传送媒体流的信息可以可替换地被包括在消息主体中,或者可替换地,切换到使用UDP来流传送媒体流的请求可以是请求中固有的。在某些实施例中,Pragma:straam-switch-entry头部(参考表I讨论)和/或X-Transport头部(参考表II讨论)的存在用作将请求标识为Select请求的标识符。表II示出了可包括在Select请求中的头部的一个示例。请求包括超文本传输协议HTTP Get命令。
[0079] 表II
[0080]头部名称 描述
Pragma:client-id 流传送会话的标识符。允许客户机设备指示Select请求与特定的
流传送会话相关联。
X-Transport 用于指示媒体流应当被切换到使用UDP来流传送。在某些实施
例中使用“RTP/UDP transport”参数来指示媒体流应当被切换到
使用UDP来流传送。该头部通常也可包括标识客户机使用哪一
(些)UDP端口来接收RTP和RTCP分组的参数。
[0081] 在某些实施例中,即使标识媒体流的实际内容的数据(例如,标识在客户机设备102处回放的视频或音频的数据)是使用UDP分组从服务器设备104发送到客户机设备102的,控制信息(例如,RTCP分组)也使用TCP分组从服务器设备104发送到客户机设备102。
在其它实施例中,所有数据,包括控制信息(例如,RTCP分组)都是使用UDP分组从服务器
104发送到客户机102的。
[0082] 应当注意,如果UDP分组不能用于将数据从服务器设备104流传送到客户机设备102,则UDP探测分组256不会到达服务器设备104(因此,服务器设备104永远不会发送UDP探测响应分组258),或者UDP探测响应分组258不会到达客户机设备102。因此,如果客户机设备102未接收对UDP探测分组256的响应,则客户机设备102知道UDP分组不能用于从服务器设备104向客户机设备102流传送数据。可任选地,如果客户机设备102未接收对UDP探测分组256的响应,则客户机设备102可重新发送UDP探测分组一次或多次,以验证UDP分组不能用于从服务器设备104向客户机设备102流传送数据。
[0083] 另外,应当注意,在发送多个UDP探测分组256的情况下(例如,对于多个媒体流或多个流),UDP探测响应分组256可以响应于某些探测分组256而不响应于其它分组来接收,指示UDP分组可对于某些流或流量(对其接收到UDP探测响应分组258的那些流)从服务器设备104流传送到客户机设备102,但对于其它流或流量(对于未接收UDP探测响应分组的那些流)则不能进行流传送。
[0084] 应当注意,对UDP分组是否能用于从服务器设备104向客户机设备102流传送数据的探测在所请求的媒体流使用TCP被流传送到客户机设备102(254)时发生。由此,客户机设备102开始接收所请求的媒体流,而无需等待对数据是否能使用UDP分组流传送到客户机设备102的确定。
[0085] 还应当注意,UDP探测分组256和UDP探测响应分组258可包括各种信息中的任一种。关于媒体流的信息无需使用UDP探测分组256和UDP探测响应分组258在客户机设备102和服务器设备104之间发送。UDP探测和UDP探测响应分组的重要性仅仅是分组是否到达其预期的目标,而非包括在分组中的关于流媒体的任何特定信息。
[0086] 图6是示出示例传送信道切换过程300的流程图。图6示出了由客户机设备102(例如,图1、2和5)和服务器设备104(例如,图1、2和5)执行的动作。
[0087] 最初,客户机设备102向服务器设备104发送对流传送媒体的请求(动作302)。服务器设备104接收该请求,并开始使用TCP向客户机设备102流传送所请求的媒体流(动作304)。服务器设备104继续使用TCP流传送媒体流,并且客户机设备102接收并处理该媒体流(动作306)。该处理可包括,例如,在客户机设备102处缓冲和/或呈现(例如,回放)媒体流。
[0088] 在动作306使用TCP流传送所请求的媒体流的同时,探测客户机设备102和服务器设备104之间的链路以确定数据是否可使用UDP从服务器设备104传送到客户机设备102(动作308)。如上所述,该探测可涉及在客户机设备102和服务器设备104之间发送信息和分组。
[0089] 过程300然后基于探测是否指示数据可使用UDP从服务器设备104流传送到客户机设备102来继续(动作310)。如果数据不能使用UDP从服务器设备104流传送到客户机设备102,则服务器设备104继续使用TCP流传送所请求的媒体流,并且客户机设备102接收并处理使用TCP所接收到的媒体流(动作306)。然而,如果数据可以使用UDP从服务器设备104流传送到客户机设备102,则服务器设备104切换到使用UDP而非TCP来流传送所请求的媒体流,并且客户机设备102接收并处理使用UDP所接收到的媒体流(动作312)。通常,服务器设备104响应于从客户机设备102所发送的、请求切换到UDP的请求(例如,Select请求),切换到使用UDP而非TCP来流传送所请求的媒体流。另外,应当注意,并非所有的流都需要被切换到使用UDP来流传送。相反,客户机设备102可请求仅特定的一个或多个媒体流被切换到使用UDP来流传送,并且一个或多个其它媒体流保持使用TCP来流传送。
[0090] 此处所描述的快速启动可包括预测性启动技术和/或传送通道切换技术。以上图3和4讨论了预测性启动基础的示例实施例。以上图5和6讨论了传送信道切换技术的示例实施例。
[0091] 图7是示出包括预测性启动和传送信道切换两者的示例快速启动过程350的流程图。图7示出了由客户机设备102(例如,图1、2和5)和服务器设备104(例如,图1、2和5)执行的动作。
[0092] 最初,客户机设备102向服务器设备104发送预测性播放请求(动作352)。服务器设备104接收预测性播放请求,并预测客户机设备102所期望的媒体流(动作354)。服务器设备104然后开始使用TCP向客户机设备102流传送所预测的媒体流(动作356)。
[0093] 然后探测客户机设备102和服务器设备104之间的链路以确定数据是否可使用UDP从服务器设备104流传送到客户机设备102(动作358)。如果探测指示数据可使用UDP从服务器设备104流传送到客户机设备102,则服务器设备104切换到使用UDP而非TCP流传送媒体流(动作360);否则,服务器设备104继续使用TCP流传送媒体流。通常,服务器设备104响应于从客户机设备102发送的、请求切换到UDP的请求(例如,Select请求),切换到使用UDP而非TCP流传送所请求的媒体流。另外,应当注意,并非所有的流都需要被切换到使用UDP来流传送。相反,客户机102可请求仅特定的一个或多个媒体流被切换到使用UDP来流传送,并且一个或多个其它媒体流保持使用TCP来流传送。
[0094] 另外,在动作356使用TCP流传送预测的媒体流开始之后,客户机设备102确定它是否期望除所预测的媒体流之外的媒体流(动作362)。如果是,选择除所预测的媒体流之外的一个或多个媒体流(除所预测的媒体流之外和/或作为对预测的媒体流的替代),并且客户机设备102向服务器设备104发送对所选择的媒体流的指示(动作364)。服务器设备104从客户机设备102接收该指示,并将所选择的媒体流流传送到客户机设备102(动作366)。
[0095] 应当注意,在动作360流传送的媒体流可包括在动作354预测的媒体流和/或在动作364所选择的媒体流。在动作360流传送的媒体流是否为在动作354预测的媒体流和/或在动作364所选择的媒体流取决于在动作364是否选择了任何媒体流,以及服务器104是在动作360的切换之前还是之后开始流传送在动作366选中的任何媒体流。
[0096] 在某些实施例中,动作358和360的传送信道切换可与动作362、364和366的媒体流选择同时执行。在其它实施例中,动作358和360的传送信道切换可在动作362、364和366的媒体流选择之后或之前执行。
[0097] 图8示出了可用于实现此处所描述的技术的通用计算机环境400。计算系统环境400仅为计算环境的一个示例,并非对计算机和网络体系结构的使用范围或功能提出任何局限。也不应将计算环境400解释为对示例性计算机环境400中示出的任一组件或其组合具有任何依赖或需求。
[0098] 计算机环境400包括计算机402形式的通用计算设备。计算机402可以是,例如图1、2、3和5的客户机设备102或服务器设备104。计算机402也可以是作为多媒体演示的源的编码器设备。计算机402的组件可包括但不限于,一个或多个处理器或处理单元404、系统存储器406以及将包括处理器404的各类系统组件耦合至系统存储器506的系统总线
408。
[0099] 系统总线408表示若干种总线结构类型的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各类总线体系结构的处理器或局部总线。作为示例,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
[0100] 计算机402通常包括各种计算机可读介质。这类计算机可读介质可以是可由计算机402访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。
[0101] 系统存储器406包括诸如随机存取存储器(RAM)410等易失性存储器,和/或诸如只读存储器(ROM)412等非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)414包括如在启动时帮助在计算机402内的元件之间传输信息的基本例程,通常储存在ROM 412中。RAM 410通常包含处理单元404立即可访问或者当前正在操作的数据和/或程序模块。
[0102] 计算机402也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图8示出了对不可移动、非易失性磁介质(未示出)进行读写的硬盘驱动器416、对可移动、非易失性磁盘420(如,“软盘”)进行读写的磁盘驱动器418以及对可移动、非易失性光盘424,如CD-ROM、DVD-ROM或其它光介质进行读写的光盘驱动器422。硬盘驱动器
416、磁盘驱动器418和光盘驱动器422的每一个通过一个或多个数据介质接口426连接到系统总线408。或者,硬盘驱动器416、磁盘驱动器418和光盘驱动器422可通过一个或多个接口(未示出)连接到系统总线408。
[0103] 盘驱动器及其相关联的计算机可读介质为计算机402提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管示例示出了硬盘416、可移动磁盘420和可移动光盘424,然而可以理解,可储存可由计算机访问的数据的其它类型的计算机可读介质,如磁带盒或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等,也可用于实现示例性计算系统和环境。
[0104] 任意数量的程序模块可储存在硬盘416、磁盘420、光盘424、ROM 412和/或RAM410中,作为示例,包括操作系统426、一个或多个应用程序428、其它程序模块430以及程序数据432。这些操作系统426、一个或多个应用程序428、其它程序模块430和程序数据
432(或其某一组合)的每一个可实现支持分布式文件系统的常驻组件的所有或部分。
[0105] 用户可以通过诸如键盘434和定位设备436(如,“鼠标”)等输入设备向计算机402输入命令和信息。其它输入设备438(未具体示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪和/或其类似物。这些和其它输入设备通常通过耦合至系统总线408的输入/输出接口440连接到处理单元404,但也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
[0106] 监视器442或其它类型的显示设备也通过接口,如视频适配器444连接到系统总线408。除监视器442之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机446等组件,它们可通过输入/输出接口440连接到计算机402。
[0107] 计算机402可以在使用到一个或多个远程计算机,如远程计算设备448的逻辑连接的网络化环境中操作。作为示例,远程计算设备可以是个人计算机、服务器、路由器、网络计算机、对等设备或其它普通网络节点等等。远程计算设备448被示出为可包括此处相对于计算机402所描述的许多或所有元件和特征的便携式计算机。
[0108] 计算机402和远程计算机448之间的逻辑连接被描述为局域网(LAN)450和通用广域网(WAN)452。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
[0109] 当在LAN网络环境中实现时,计算机402通过网络接口或适配器454连接至局域网450。当在WAN网络环境中使用时,计算机402通常包括调制解调器456或用于通过广域网452建立通信的其它装置。调制解调器456可以对计算机402是内置或外置的,通过输入/输出接口440或其它适当的机制连接至系统总线408。可以理解,示出的网络连接是示例性的,也可以使用在计算机402和448之间建立通信链路的其它装置。
[0110] 在诸如用计算环境400示出的网络化环境中,相对于计算机402描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,远程应用程序458驻留在远程计算机448的存储器设备中。为说明目的,应用程序和诸如操作系统等其它可执行程序组件在此处被示出为离散的框,尽管可以认识到,这些程序和组件在不同的时刻驻留在计算设备402的不同存储组件中,并由计算机的数据处理器执行。
[0111] 各种模块和技术可在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。通常,程序模块的功能可如各实施例中所需的组合或分布。
[0112] 这些模块和技术的实现可被储存在某一形式的计算机可读介质上,或通过其传输。计算机可读介质可以是可由计算机访问的任一可用介质。作为示例而非局限,计算机可读介质包括“计算机存储介质”和“通信介质”。
[0113] “计算机存储介质”包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机访问的任一其它介质。
[0114] “通信介质”通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
[0115] 尽管以上描述使用了对结构特征和/或方法动作专用的语言,但是可以理解,所附权利要求书中所定义的本发明不限于所描述的具体特征或动作。相反,揭示了具体特征和动作作为实现本发明的示例性形式。