专利类型 | 发明授权 | 法律事件 | 公开; 实质审查; 授权; |
专利有效性 | 有效专利 | 当前状态 | 授权 |
申请号 | CN202080050441.6 | 申请日 | 2020-07-09 |
公开(公告)号 | CN114145024B | 公开(公告)日 | 2025-02-11 |
申请人 | 苹果公司; | 申请人类型 | 企业 |
发明人 | R·N·潘托斯; | 第一发明人 | R·N·潘托斯 |
权利人 | 苹果公司 | 权利人类型 | 企业 |
当前权利人 | 苹果公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份: | 城市 | 当前专利权人所在城市: |
具体地址 | 当前专利权人所在详细地址:美国加利福尼亚州 | 邮编 | 当前专利权人邮编: |
主IPC国际分类 | H04N21/2187 | 所有IPC国际分类 | H04N21/2187 ; H04N21/231 ; H04N21/234 ; H04N21/2343 ; H04N21/262 ; H04N21/438 ; H04N21/84 ; H04N21/845 ; H04N21/8547 ; H04L65/61 ; H04L65/613 ; H04L65/65 |
专利引用数量 | 1 | 专利被引用数量 | 0 |
专利权利要求数量 | 18 | 专利文献类型 | B |
专利代理机构 | 北京市汉坤律师事务所 | 专利代理人 | 魏小薇; 吴丽丽; |
摘要 | 用于发现或调谐到用于流媒体内容的临近直播或当前播放列表的方法和系统,特别是对于其间媒体内容被 流式传输 的直播活动。该方法和系统可以减少调谐到此类直播活动所需的时间。在一个实施方案中,客户端设备可以接收消息的标头中的时长数据,该消息返回由来自客户端设备的非属性化播放列表 请求 所请求的第一播放列表。时长数据可用于确定为了调谐到该直播活动要跳过多少部分媒体 片段 。 | ||
权利要求 | 1.一种存储可执行程序指令的非暂态机器可读介质,所述可执行程序指令当由数据处理系统执行时使得所述数据处理系统执行方法,所述方法包括: |
||
说明书全文 | 低延时流媒体背景技术[0002] 本专利申请涉及2019年2月19日提交的、发明人为Roger N.Pantos并且名称为“Low Latency Streaming Media”的美国临时专利申请第62/807,329号,并且此临时专利申请据此以引用方式并入本文。 [0003] 许多设备目前使用流媒体内容递送系统来呈现内容,诸如电影、电视节目、录制的体育活动、新闻节目、直播活动(诸如直播体育活动、直播新闻活动等)。这些流媒体内容递送系统通常使用一个或多个播放列表,这些播放列表枚举有序的一系列统一资源标识符(URI)(诸如统一资源定位符(URL))来标识可使用常规符合HTTP的请求从一个或多个服务器检索的媒体片段。一旦被检索,媒体片段可被呈现在请求媒体片段的客户端设备上,然后在每个媒体片段呈现之后在客户端设备上被擦除。这些流媒体内容递送系统可显示录制的内容,诸如电影或视频点播内容,或直播内容,诸如在客户端设备的用户正在观看的同时发生的直播体育活动或直播新闻活动。现有的流内容递送系统包括基于DASH(通过HTTP的动态自适应流)的系统,这些系统基于标准(例如ISO/IEC 23009‑1:2014),以及来自Apple Inc.的基于Apple的HTTP直播流传输(HLS)的系统。 发明内容[0004] 本公开描述了特别是在调谐到通过流媒体呈现的直播活动时,用于减小延时或以其他方式改善流媒体内容的递送或处理的各种技术、系统、非暂态机器可读介质和方法。当客户端设备在活动发生时初始地调谐到直播活动时,该客户端设备在流内容的来源处的当前播放列表的末尾将不具有关于特定媒体片段的信息。因此,客户端设备仅可以请求内容的通用的非属性化播放列表,其可能比直播活动中的当前时间晚很多秒。如果客户端设备的用户希望在发生时看到直播活动,则客户端设备必须尝试调谐到由从该来源获得的最新播放列表表示的最新内容。客户端设备可以通过直接从该来源获得播放列表来发现最新内容。但是,对于众多观众,这种直接方法代表了对源服务器的不可接受的高负担。因此,客户端设备通常从中间高速缓存服务器获得播放列表,该中间高速缓存服务器存储播放列表和在那些播放列表中所识别的媒体片段,使得众多观众可以分布在多个高速缓存服务器上。为了减少源服务器上的负载,那些高速缓存服务器在从源服务器更新到较新版本之后的一段时间内继续对播放列表进行高速缓存。因此,通过高速缓存服务器向客户端递送的播放列表可能不是最新版本。本文描述的各个方面可以改善客户端设备能够调谐到直播活动以从高速缓存服务器获得最新播放列表的速度。那些方面可以使用播放列表中的数据,例如下述中的一项或多项:媒体序号、部分编号、部分目标持续时间,以及时长标头(age header)或与播放列表响应相关联的其他标头中的时长数据(age data),来计算在播放列表(诸如作为对非属性化播放列表请求的响应而接收的播放列表)的末尾处要向前跳过或越过最后部分媒体片段的量。例如,客户端设备可以使用时长数据中所指示的时长来确定要向前跳过最后部分媒体片段的部分媒体片段的数量。 [0005] 根据一个方面,一种在客户端设备上用于调谐到流内容的方法可包括以下操作:由第一请求请求用于媒体内容的第一播放列表,该第一请求不包含用于该媒体内容的临近直播播放列表(near live playlist)的至少一个属性;以符合传输协议的方式接收该第一播放列表,该第一播放列表包括多个统一资源标识符(URI),该多个URI指示能够以符合传输协议的方式接收的用于重新创建该媒体内容的多个媒体片段的回放顺序,该第一播放列表按所述顺序包括最后URI,该最后URI标识该第一播放列表中的最后可用媒体片段(例如,最后部分媒体片段);如有提供,接收与该第一播放列表相关联的第一时长数据,该第一时长数据指示高速缓存服务器上的该第一播放列表的时长;基于该第一时长数据并且基于该最后URI,确定该第一播放列表中的该最后可用部分媒体片段之后的至少部分媒体片段的第一数量,该第一数量指定在该最后可用部分媒体片段之后要跳过的至少部分媒体片段的数量,以调谐到该媒体内容。在一个方面,该最后URI包括媒体序号和部分编号,并且该第一播放列表指定目标持续时间和部分目标持续时间。在一个方面,该至少部分媒体片段的第一数量是基于下述项确定的:(1)该第一时长数据和(2)该最后URI中的最后的媒体序号和部分编号,以及(3)该部分目标持续时间。在一个方面,将该部分目标持续时间与预定最小时长值进行比较,并且该比较的结果提供根据其确定该第一数量的基值。在一个方面,预定时长值可等于1,并且如果该部分目标持续时间大于一秒的持续时间,则该基值可为该第一时长数据,并且如果该部分目标持续时间小于一秒,则该基值可为该第一时长数据加上第一附加值(诸如1)。 [0006] 在一个方面,该方法还可包括以下操作:确定当前时间与下述项中的一项之间的第一时间段:(1)该第一请求被请求的时间,或(2)该第一播放列表的接收时间。在一个方面,该方法还可包括:向该基值添加第二附加值,该第二附加值基于该第一时间段。在一个实施方案中,该第一数量可以是该基值、该第一附加值(在该部分目标持续时间小于一秒的情况下)和该第二附加值的总和。根据一个方面,该方法还可包括以下操作:基于该第一数量请求具有URI的第二播放列表;接收该第二播放列表和第二时长数据;以及基于该第二时长数据更新该基值。根据一个方面,该方法还可包括以下操作:将该第二时长数据与该部分目标持续时间进行比较以确定是否退出调谐模式。 [0007] 在本文描述的另一方面,一种由客户端设备执行以调谐到流媒体中的方法可包括以下操作:由非属性化请求在调谐模式期间请求用于流媒体内容的第一播放列表,该非属性化请求缺少该流媒体内容的临近直播播放列表的属性;以符合传输协议的方式接收该第一播放列表,该第一播放列表包括多个统一资源标识符(URI),该多个URI指示能够以符合传输协议的方式接收的用于重新创建该媒体内容的多个媒体片段的回放顺序,该第一播放列表按所述顺序包括最后URI,该最后URI标识该第一播放列表中的最后可用媒体片段(诸如,最后部分媒体片段);确定第一时长数据是否与该第一播放列表一起接收;以及响应于确定未接收到该第一时长数据或在接收到该第一时长数据的情况下该第一时长数据具有最小值,退出该调谐模式。在一个方面,该最小值可以是零。在一个方面,该方法还可包括以下操作:基于差值确定该第一播放列表中的该最后可用媒体片段之后的至少部分媒体片段的第一数量,该第一数量指定在该最后可用媒体片段之后要跳过的至少部分媒体片段的数量,以调谐到该流媒体内容。在一个方面,该差值可包括第一日期标头与最后修改的标头之间的差值,其中该第一日期标头包括高速缓存服务器对该第一播放列表的该请求做出响应的时间的时间戳,并且该最后修改的标头包括用于该第一播放列表的最后修改的时间的时间戳。在一个方面,该方法还可包括以下操作:基于该第一数量请求具有URI的第二播放列表;以及接收该第二播放列表。 [0008] 根据另一方面,还可以实现由源服务器使用的一组规则以改善客户端设备的时间上的调谐。在一个具体实施中,这些规则可包括:始终与播放列表一起提供一个或多个标头中的最后修改的日期数据(源服务器处的最新播放列表)。因此,当调谐到直播活动中时,源服务器可以提供最后修改的日期数据供客户端设备使用。在一个具体实施中,源服务器还可以被配置为接受对超过源服务器处的当前直播播放列表多达两个或三个部分媒体片段的播放列表的请求。在一个方面,源服务器可以实施对最小部分目标持续时间的限制;根据一个方面,该最小部分目标持续时间可以是例如300ms,并且因此根据该具体实施示例,所有部分目标持续时间必须等于或超过300ms。在另一方面,高速缓存服务器可以遵守要求来自高速缓存服务器的时长数据以毫秒级精度来提供的规则。当前,标准时长标头中的时长数据表示缓存对象的以完整(整数)秒数为单位的时长,而没有缓存对象已在高速缓存服务器处缓存了多久的进一步时间分辨率。非标准时长标头(“X‑age‑ms”标头)将以毫秒级精度表示缓存的时长(缓存对象已缓存了多久)。这将使客户端设备更精确地查看缓存的播放列表的时长(在高速缓存服务器处),其在一些情况下可以减少了客户端设备的调谐时间。 [0009] 本文所述的方面和实施方案可包括存储可执行计算机程序指令的非暂态机器可读介质,当这些计算机程序指令由一个或多个数据处理系统执行时,这些计算机程序指令可使一个或多个数据处理系统(诸如客户端设备以及一个或多个服务器系统)执行本文所述的一种或多种方法。指令可存储在非易失性存储器中,诸如闪存存储器或动态随机存取存储器或其他形式的存储器。 [0011] 本文所述的方面以举例的方式而不是以限制的方式在各个附图的图示中进行说明,在附图中类似的附图标号是指类似的元件。 [0012] 图1示出了用于通过流媒体从一个或多个源系统向一个或多个客户端设备递送内容的系统的示例是通过一个或多个内容分发网络(CDN)耦接到客户端设备的源服务器。 [0013] 图2示出了两个媒体片段的示例,该两个媒体片段各自被划分为六个部分,其中部分编号在由媒体片段编号(MSN)标识的每个媒体片段内显示。 [0014] 图3是示出本公开的一个方面的可以由客户端设备用于调谐到流媒体内容的流程图。 [0015] 图4A是示出本公开的另一个方面的可以由客户端设备用于调谐到流媒体内容的流程图。 [0016] 图4B是示出本公开的另一个方面的可以由客户端设备用于调谐到流媒体内容的流程图。 [0017] 图5A和图5B示出了根据本公开的另一方面的表示可由客户端设备执行的方法的流程图。 [0018] 图6示出了可用于实现本公开中所述的一个或多个方面的数据处理系统的示例。 具体实施方式[0019] 将参考以下论述的细节来描述各种实施方案和方面,并且附图将对各种实施方案进行说明。以下说明书和附图为例示性的,并且不应被理解为限制性的。描述了许多具体细节,以提供对各个实施方案的全面理解。然而,在某些实例中,熟知的或常规的细节并未被描述,以便提供对实施方案的简明论述。 [0020] 在本说明书中提到的“一个实施方案”或“实施方案”是指结合该实施方案所述的特定特征、结构或特性可被包括在至少一个实施方案中。在本说明书中的各个位置出现短语“在一个实施方案中”不一定都是指同一个实施方案。在随后的附图中所描绘的过程由包括硬件(例如,电路、专用逻辑部件等等)、软件或这两者的组合的处理逻辑部件来执行。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的某些操作可以不同的顺序执行。此外,某些操作也可并行执行而非按顺序执行。 [0021] 这些现有系统可能难以以具有相对于直播活动低延时的方式来递送直播活动的内容。例如,对于当用户正在使用流媒体系统观看直播体育活动时发生的直播体育活动,在直播活动中发生的动作可能在直播活动发生数秒钟(例如,15秒或更长时间)之后才会显示。许多用户可能会发现这种大延时令人失望,因此存在改善流媒体系统中的递送延时的需求。本公开提供了用于解决这种需求的各种解决方案。 [0022] 本文所述的方面、方法和系统提供了用于发现或调谐到流媒体内容的技术,该技术在调谐到在其间对媒体内容进行流式传输的直播活动时可能很有用。这些方面可以减少调谐到此类直播活动(如棒球比赛或足球比赛)所需的时间。流媒体可以由包括内容分发网络(CDN)的系统提供,该内容分发网络将播放列表存储在该内容分发网络中的服务器上的高速缓存中。图1示出了包括多个客户端设备、多个内容分发网络和多个源系统的流媒体系统101的示例。内容分发网络可以各自包括多个代理高速缓存服务器,这些代理高速缓存服务器缓存播放列表和媒体片段,这些播放列表和媒体片段可以从服务器中检索并提供给客户端设备。这些代理高速缓存服务器所使用的高速缓存可以是用于流媒体内容的常规高速缓存技术。如图1所示,源系统103和105可以向内容分发网络107、109和111提供内容并且为内容的来源。诸如客户端设备115和117的客户端设备继而可以请求来自内容分发网络107、109和111的播放列表和媒体片段。当客户端设备诸如客户端设备115尝试检索直播活动的流媒体时,其最初将请求该直播活动的播放列表,该播放列表不包括指定最新部分媒体片段的属性或在最新播放列表的末尾处的媒体片段,这些从源服务器或源系统获得。当内容分发网络接收到此类非属性化播放列表请求时,该CDN返回缓存的播放列表,其通常不是从源服务器获得的最新播放列表。然后,客户端设备可以尝试通过使用本文所述的方面检索从源服务器获得的最新播放列表。 [0023] 图2示出了被分成如本领域中已知的部分的流媒体的示例。每个部分均被称为媒体片段,它们可以通过媒体序号(MSN)来标识,并且在每个媒体序号内,可以存在多个部分。在图2所示的示例中,示出两个媒体片段151和153均已被分段成六个部分。媒体片段151之后是媒体片段153,如图2所示的媒体序号所指示。将媒体片段分成多个部分可以通过允许客户端设备请求由部分编号(诸如图2中所示的部分编号P1或P2)所指示的部分媒体片段来改善客户端设备的调谐操作。 [0024] 图3示出了根据一个方面的可以改善客户端设备调谐到诸如直播活动等流媒体内容所花费的时间的方法。该方法可以在操作301中开始。在操作301中,客户端设备可以请求初始媒体播放列表,该初始媒体播放列表不具有针对最新的可用缓存播放列表的属性。例如,客户端设备可以针对流内容发出通用媒体播放列表请求,而不包括指示从高速缓存服务器获得的最新播放列表的媒体序号和部分编号的属性。然后在操作303中,客户端设备可以接收初始媒体播放列表。根据一个方面,与接收的媒体播放列表相关联的标头可以包括表示被接收的缓存播放列表的时长的时长数据;根据一个方面,该时长数据可以表示播放列表已缓存(例如,缓存在CDN中的高速缓存代理服务器处)的时间长度(以秒为单位)。在一个方面,时长数据可以具有仅表示播放列表已处于代理缓存中的时间(以秒为单位)的整数值。在操作305中,客户端设备可以根据标头确定时长,并且还可以确定所接收播放列表中的最后部分媒体片段。任选地,客户端设备还可以确定播放列表中的媒体片段的部分目标持续时间值。例如,如果目标持续时间值(其指示最大媒体片段持续时间)为五秒,如播放列表中的参数所指定的,则播放列表还可以指定均小于五秒并且表示媒体片段的一部分的部分目标持续时间值。在操作305之后,客户端设备可以尝试预测或确定要向前跳过的至少部分媒体片段的数量,以便更快地调谐到流媒体内容中的当前时间。这如图3中的操作307所示。根据一个方面,客户端设备可以基于时长数据和最后部分媒体片段的媒体序号来确定要向前跳过的至少部分媒体片段的数量,以便调谐到流媒体内容。当确定要跳过的至少部分媒体片段的数量时,可以在操作307中任选地使用部分目标持续时间值。例如,如果时长是三秒,则基于部分目标持续时间数据,客户端设备可以向前跳过该部分媒体片段的数量,其超过在操作303中所接收的初始媒体播放列表中的最后部分媒体片段约三秒。操作307可以通过请求附加的播放列表和确定每个播放列表的时长来重复多次。因此,操作303、305和307可以由客户端设备重复进行,以便尝试获得从源服务器获得的最新播放列表。 [0025] 图4A中示出可以由客户端设备使用的另一方面。在该方面,客户端设备可以使用若干参数来计算或确定前进的量以在初始播放列表的末尾处的最后部分媒体片段之后跳过至少一个或多个部分媒体片段。例如,如果初始播放列表的末尾处的最后部分媒体片段具有媒体序号56和部分编号2,并且图4A所示的方法确定前进的量为一个完整的媒体片段(具有6个部分)和另外2个附加的部分(要前进或跳过的总量为8个部分),则客户端设备将请求具有指示msn=57,部分=5的属性的播放列表。在这种情况下,客户端设备通常还将通过将推送参数设置为零(推送=0)来指示其不希望有任何片段推送到其。关于推送参数的另外的信息可见于本公开的第一段中所提及的临时申请中。通常,当客户端设备处于调谐模式时,将推送参数设置为零,并且在离开调谐模式之后,客户端设备将推送参数设置为1或2(例如,推送=1)以便减少用于接收直播活动的媒体内容的内容流的延时。 [0026] 图4A中所示的方法在操作351中开始。在操作351中,客户端设备可以请求初始播放列表;播放列表请求不具有指定临近直播播放列表的属性。然后在操作353中,客户端设备接收初始播放列表并接收其他数据,例如标头中的时长数据。播放列表可以包括部分目标持续时间值,并且还可以包括播放列表中的各种媒体片段的媒体序号和部分编号。播放列表中的最后部分媒体片段包括该最后部分媒体片段的媒体序号和部分编号。然后,客户端设备可以使用接收到的数据来计算要前进的量。这些计算可以开始于操作355,其中客户端设备将部分目标持续时间与预定时长值进行比较。在一个方面,预定时长值可以是最小的非零时长。在一个具体实施中,预定时长值可以是一秒的值。在操作355中的比较之后,在操作357中,客户端设备可以设置目标值。该目标值可以是从在操作353中接收到的播放列表中的最后部分媒体片段向前跳过的时间量(以秒为单位)。在一个具体实施中,基于操作355中的比较来设置该目标。在一个具体实施中,如果部分目标持续时间值大于或等于预定时长值,则将该目标设置为时长数据的值,并且如果部分目标持续时间值小于预定时长值,则将该目标设置为时长数据的值加上恒定值(N)。然后在操作359中,将时长数据与最后接收的播放列表中指定的部分目标持续时间进行比较。如果时长数据大于或等于该部分目标持续时间,则处理进行到操作363,如图4A所示;另一方面,如果时长数据不大于或等于如操作359中确定的部分目标持续时间,则处理进行到操作361。 [0027] 在操作361中,客户端设备退出调谐模式。退出调谐模式通常意味着客户端设备将停止跳过媒体片段,并且将开始通过按播放列表中的顺序请求媒体片段来处理媒体片段。在一个方面,客户端设备可以使用非零推送值来引起未来媒体片段的推送,如本公开的第一段中所提及的临时专利申请中所述。一旦客户端设备已退出调谐模式,客户端设备就开始通过请求媒体片段并且接收它们并呈现它们来以正常方式处理媒体片段,而不是在本文所述的调谐模式的一些方面中发生的跳过并且不请求媒体片段。在操作363中,客户端设备将最后的前进量(从先前前进)与目标值进行比较,如操作363中所示。当正在处理初始播放列表时,最后的前进量为零,并且因此处理将进行到操作365。然而,如果最后的前进量为非零的,则可能超过或等于目标,在这种情况下,处理将返回到上文已描述的操作361。 [0028] 在操作365中,根据一个方面,客户端设备通过计算要前进的部分的数量来确定要前进的量,以跳过当前播放列表中最后部分媒体片段之后的媒体片段。在一个具体实施中,基于目标值来计算要前进的量,该目标值可以是时长数据值或时长加上恒定值(N)。目标值可以除以部分目标持续时间的值,并且该除法的结果产生可以向下取整到最接近整数的数字,以提供表示在当前播放列表中最后部分媒体片段之后要跳过的部分的数量的数字。例如,如果初始播放列表的末尾处的最后部分媒体片段具有媒体序号56和部分编号2,并且图4A所示的方法确定前进的量为一个完整的媒体片段(具有6个部分)和另外2个附加的部分(要前进或跳过的总量为8个部分),则客户端设备将请求具有指示msn=57,部分=5的属性的播放列表。在确定要前进的量之后,客户端设备在操作367中请求下一个更新的播放列表,该更新的播放列表具有如播放列表请求中的属性所指定的前进量。然后在操作369中,客户端设备接收所请求的播放列表并根据时长标头确定更新后的时长值。在操作369之后,客户端设备返回到操作359以重复图4A所示的过程,直到客户端设备离开调谐模式为止。在一个具体实施中,在操作369之后,客户端设备可以检查在操作369中接收的播放列表,以确定其与初始播放列表相比有多少媒体持续时间。如果部分片段小于部分目标持续时间,则操作369中所接收的播放列表可能不按预期量前进。如果发生这种情况,则可以基于预期的前进量与实际前进量之间的差值来增加目标。在一个方面,客户端设备可以保持在调谐模式中,直到过程指示其应该退出调谐模式为止;在另一方面,客户端设备还可以使用定时器(例如,看门狗定时器),即使图4A中所示的过程未致使设备退出调谐模式,该定时器也将强制该设备退出调谐模式。在又一方面,客户端设备可以在预定次数(例如,最大次数)的调谐尝试之后离开调谐模式(即使图4A中所示的过程未致使该设备退出调谐模式);例如,在6次调谐尝试之后,客户端设备可以退出调谐模式。 [0029] 图4B中所示的方法类似于图4A中所示的方法,不同的是图4B中所示的方法使用附加参数值来计算要前进的量以便跳过最后接收的播放列表中的最后部分媒体片段。在操作401中,客户端设备可以请求初始播放列表,该请求不具有指定临近直播播放列表的属性; 客户端设备存储此请求的时间,该时间稍后在计算中用于确定要前进的量。该存储的时间可被称为TimeOfFirstLoad。然后在操作403中,客户端设备接收所请求的播放列表并且根据播放列表确定(来自标头的)时长数据和部分目标持续时间值,并且还确定播放列表中的最后部分媒体片段的媒体序号和部分编号。然后在操作405中,客户端设备将部分目标持续时间与值1进行比较;在一个具体实施中,该比较可以是“PTD<1?”。该比较的结果可以用于在操作407中设置目标值。在操作407中,如果部分目标持续时间大于或等于1,则可以将目标值设置为时长数据值,并且如果部分目标持续时间小于1,则可以将目标值设置为时长数据值+1。然后,在操作409中,客户端设备可以执行比较操作。如果时长数据值大于或等于部分目标持续时间,则客户端设备进行到操作413;另一方面,如果时长数据小于PTD,则客户端设备进行到操作411,在该操作中,客户端设备退出调谐模式,如上所述。在操作413中,客户端设备将最后的前进量与目标值进行比较。如果最后的前进量超过或等于目标值,则处理进行到操作411,在该操作中,客户端设备退出调谐模式。另一方面,如果目标值大于最后的前进量,则处理进行到操作415。 [0030] 在操作415中,客户端设备确定要前进的量;例如,客户端设备可以通过至少目标加上自上最后接收的播放列表首次加载以来所经历的时间来计算跳过最后部分媒体片段的最后部分编号(在最后接收的播放列表中)的媒体序号和部分编号。在一个方面,这可以基于当前时间和存储在操作401中的存储时间(TimeOfFirstLoad)来计算;例如,要前进的量可以等于:目标+(当前时间–TimeOfFirstLoad)。然后,在操作417中,客户端设备可以请求下一个更新的播放列表,该播放列表请求中具有前进量属性。在操作419中,客户端设备然后可以接收所请求的播放列表并且基于与所接收的播放列表相关联的标头中的时长数据来更新时长值。然后处理可以返回到循环中的操作409,该操作可以继续直到客户端设备退出调谐模式为止。退出调谐模式可能由于图4B中所示的处理逻辑或由于看门狗定时器而发生,该看门狗定时器基于该看门狗定时器的到期而强制退出调谐模式。在一个方面,在图4B的方法中对存储时间(TimeOfFirstLoad)的使用可以是任选的,并且当存储时间和当前时间之间的差值超过阈值时,使用该存储时间(并且当该差值不超过阈值时,不使用该存储时间)。 [0031] 图5A示出了根据一个方面利用从源服务器中获得的标头中的附加数据的另一示例。在此方面,可使用相对于源服务器的某些规则来要求源服务器在播放列表附带的一个或多个标头中提供最后修改的日期数据。客户端设备可以使用此数据来计算要前进的量以加快调谐模式。在一个具体实施中,可能要求源服务器在请求的每个播放列表的一个或多个标头中提供最后修改的日期数据;在另一具体实施中,当客户端设备保持在调谐模式时,可能要求源服务器以根据来自客户端设备的请求提供最后修改的数据。客户端设备还可以使用日期数据,该日期数据可以是指示高速缓存服务器何时对播放列表的请求做出响应的时间的时间戳。最后修改的日期数据可以是指示播放列表在源服务器处的最后修改的时间的时间戳。图5A中所示的方法在操作501中开始,在该操作中,客户端设备请求初始非属性化的播放列表。然后在操作503中,客户端设备接收初始播放列表,并且还接收一个或多个标头中的时长数据和最后修改的数据。客户端设备还可以根据包含播放列表的响应中的标头确定日期数据。在操作503中,客户端设备还可以根据播放列表确定部分目标持续时间值。接下来,在操作505中,客户端设备确定时长数据是否等于零。如果是,则在操作507中,客户端设备退出调谐模式。另一方面,如果时长数据不等于零,则接着进行操作509,其中客户端设备确定日期值减去最后修改的时间值是否等于零。由于两个值是整数值,因此如果操作509中所示的减法产生零值,则客户端设备在源服务器处的最新播放列表的一秒钟内,在这种情况下,处理进行到操作517,该操作将在下文进一步描述。另一方面,如果操作509确定日期减去最后修改值不等于零,则处理进行到操作511,该操作计算要前进的量。在操作511中,计算可以基于部分目标持续时间、日期数据和最后修改日期。计算可以确定要向前跳过在操作503中最后接收的播放列表中的最后部分媒体片段的部分数量。在一个具体实施中,该计算可以是:N=[日期‑最后修改值+PTD‑c]/PTD,其中c是被设计用于确保N被向下取整的小值(例如,0.01)。然后,将来自操作511中的N的计算用于操作513中对下一个播放列表的请求。接收下一个播放列表,并且将时长数据与从源服务器接收到的最后修改日期值一起更新。然后,客户端设备执行515的比较操作;具体地,客户端设备确定时长数据是否等于零。如果不是,处理返回到操作511,如图5A所示。如果时长数据等于零,则处理进行到操作517。在一个方面,由于时长数据值仅为整数值,因此如果操作515确定该时长等于零,则客户端设备可能在直播活动的一秒钟内或在源服务器上的最新播放列表的一秒钟内。 [0032] 图5A和图5B中所示的其余操作旨在使客户端设备更靠近当前播放列表的当前直播边缘。在操作517中,客户端设备确定部分目标持续时间是否大于或等于一秒。如果是,则在操作519中,客户端设备退出调谐模式,因为每个部分目标持续时间大于一秒,因此客户端设备不太可能在此时改进延时。如果操作517确定部分目标持续时间小于一秒,则在操作521中,客户端设备确定部分目标持续时间是否大于或等于600ms。如果是,那么处理进行到操作523,在该操作中,客户端设备请求N值为+1的下一个播放列表以跳过一个播放列表,并且然后在假设下一个播放列表对于客户端设备来说足够最新的前提下退出调谐模式。如果在操作521中,客户端设备确定部分目标持续时间小于600ms,则处理进行到操作525,在该操作中,该客户端设备确定部分目标持续时间是否大于或等于400ms。如果是,则处理进行到操作527,在该操作中,客户端设备请求前进值或前进量等于两个部分的下一个播放列表,然后退出调谐模式。如果在操作525中,客户端设备确定部分目标持续时间小于400ms,则处理进行到图5B中所示的操作533。在操作533中,客户端设备请求下一个播放列表加上N=两个部分的前进量,并且在内容分发网络处寻找明显的阻塞行为。这种明显的阻塞行为在本公开的第一段中提及的先前的临时专利申请中有所描述。这种行为来自下述事实,即如果播放列表在请求之后快速返回,则其可能被缓存,而如果播放列表需要更多时间才能返回,则可能是由于内容分发网络处的阻塞行为造成的,该阻塞行为在先前的临时专利申请中有所描述。在一个方面,这可以通过测量请求与播放列表的接收之间的时间来实现。例如,如果测量的时间超过往返时间(RTT)加上部分目标持续时间,则可以假定已发生明显的阻塞行为,这意味着客户端设备可以退出调谐模式。具体地,重新参考图5B,决策框535可以通过测量的时间超过往返时间加上部分目标持续时间来检测到已发生明显的阻塞,并且然后可以使客户端设备退出调谐模式。另一方面,如果操作535指示未发生明显的阻塞,则客户端设备可以请求下一个播放列表加上N=1的前进量,并且然后可以退出调谐模式。 [0033] 应当理解,本文描述的方法的变型可以使用更少的参数或更少的决策框;例如,在这些变型中,可以消除决策框517、521和525中的一者或多者。 [0034] 图6示出了可与一个实施方案一起使用的数据处理系统800的一个示例。例如,系统800可被实现为提供如图1所示的客户端设备或其他系统。需注意,虽然图6示出了设备的各种部件,但其并不旨在表示使这些部件互连的任何特定架构或方式,因此此类细节与本公开并无密切关系。还应理解,具有较少部件或可能具有较多部件的网络计算机和其他数据处理系统或其他消费电子设备也可用于本公开的实施方案。 [0035] 如图6所示,数据处理系统形式的设备800包括耦接到微处理器805、ROM(只读存储器)807、易失性RAM 809和非易失性存储器811的总线803。该一个或多个微处理器805可从存储器807、809、811检索指令并执行所述指令以执行上述操作。该一个或多个微处理器805可包含一个或多个处理内核。总线803与这些各种部件互连在一起,并且还将这些部件805、807、809和811互连至显示控制器和显示设备813,以及互连至外围设备诸如输入/输出(I/O)设备815,该输入/输出(I/O)设备可以是触摸屏、鼠标、键盘、调制解调器、网络接口、打印机和本领域熟知的其他设备。通常,输入/输出设备815通过输入/输出控制器810耦接到系统。易失性RAM(随机存取存储器)809通常被实现为需要连续供电以刷新或保持存储器中的数据的动态RAM(DRAM)。 [0036] 非易失性存储器811通常为即使在系统断电后也保持数据(例如,大量数据)的磁性硬盘驱动器、或磁光驱动器、或光驱、或DVD RAM、或闪存存储器、或其他类型的存储器系统。通常,该非易失性存储器811也可以是随机存取存储器,虽然这并非是必需的。虽然图6显示该非易失性存储器811为直接耦接到数据处理系统中的其余部件的本地设备,但应当理解,本公开的实施方案可利用远离系统的非易失性存储器,诸如通过网络接口诸如调制解调器、以太网接口或无线网络而被耦接到数据处理系统的网络存储设备。该总线803可包括通过本领域熟知的各种桥接器、控制器和/或适配器相互连接的一个或多个总线。 [0037] 上文所述内容的部分可以利用诸如专用逻辑电路之类的逻辑电路或者利用微控制器或者其他形式的执行程序代码指令的处理核来实现。从而,可利用程序代码诸如机器可执行指令来执行上述讨论所教导的过程,该机器可执行指令使得机器执行这些指令以执行某些函数。在该上下文中,“机器”可为将中间形式(或“抽象”)指令转换为特定于处理器的指令(例如,抽象执行环境诸如“虚拟机”(例如,Java虚拟机)、解译器、公共语言运行时、高级语言虚拟机等)的机器,和/或设置在被设计用于执行指令的半导体芯片(例如,利用晶体管实现的“逻辑电路”)诸如通用处理器和/或专用处理器上的电子电路。上述讨论所教导的过程也可通过(作为机器的替代或与机器结合)电子电路来执行,该电子电路被设计用于执行过程(或其一部分)而不执行程序代码。 [0038] 本公开还涉及一种用于执行本文所述的操作的装置。该装置可专门被构造用于所需的目的,或者可包括由存储在设备中的计算机程序选择性地激活或重新配置的通用设备。此类计算机程序可被存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、CD‑ROM和磁光盘、DRAM(易失性)、闪存存储器、只读存储器(ROM)、RAM、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令的任何类型的介质,并且每一者均耦接到设备总线。 [0039] 机器可读介质包括用于以机器(例如计算机)可读形式存储信息的任何机构。例如,机器可读介质包括只读存储器(“ROM”);随机存取存储器(“RAM”);磁盘存储介质;光学存储介质;闪存设备;等。 [0040] 制品可用于存储程序代码。存储程序代码的制品可被实施为但不限于一个或多个存储器(例如,一个或多个闪存存储器、随机存取存储器(静态、动态或其他))、光盘、CD‑ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令的其他类型的机器可读介质。也可借助被包含在传播介质(例如,经由通信链路(例如网络连接))中的数据信号来将程序代码从远程计算机(例如,服务器)下载到请求计算机(例如,客户端)。 [0041] 已按照对设备存储器内的数据位进行操作的算法和符号表示来呈现前面的详细描述。这些算法描述和表示是数据处理领域的技术人员所使用的工具,而这些工具也能最有效地将其工作实质传达给该领域的其他技术人员。算法在这里并通常是指导致所希望的结果的操作的自相一致的序列。操作是需要对物理量进行物理操纵的那些操作。通常,尽管不是必须的,但这些量采用能够被存储、传送、组合、比较以及换句话讲操纵的电信号或磁信号的形式。已被证明其在主要出于通用原因而将这些信号指代为位、数值、元素、符号、字符、术语、数字等时是方便的。 [0042] 然而,应当牢记的是,所有这些以及类似的术语都与适当的物理量相关联,并且其只是应用于这些量的方便标签。除非另外特别说明,否则从上述讨论中显而易见的是,可以理解,在整个说明书中,使用术语诸如“接收”、“确定”、“发送”、“终止”、“等待”、“改变”等的讨论是指对设备或类似的电子计算设备的行动和处理,这些设备可对设备的寄存器和存储器内表示为物理(电子)量的数据进行操纵,并将其转换成在设备存储器或寄存器或其他此类信息存储、传输或显示设备中相似地表示为物理量的其他数据。 [0043] 本文中所呈现的过程和显示并不固有地与任何特定设备或其他装置相关。根据本文的教导内容,各种通用系统可与程序一起使用,或者可证明其便于构造用于执行所述操作的更专用的装置。根据下文的描述,用于各种这些系统的所需结构将是显而易见的。此外,本公开未参照任何特定的编程语言进行描述。应当理解,多种编程语言可用于实现如本文所述的本公开的教导内容。 [0044] 在上述说明书中,已描述特定示例性实施方案。显而易见的是,可在不脱离以下权利要求所给出的更广泛的实质和范围的情况下对那些实施方案作出各种修改。相应地,说明书和附图被视为是例示性意义而不是限定性意义。 |