首页> 中国专利> 个人过顶网络视频记录器

个人过顶网络视频记录器

摘要

通过操纵共同清单或播放列表,处理并且存储实时流播视频内容用于内容的实时交付、内容的未来VoD查看以及内容的时移查看。之前存储的内容可重新排序和/或重新组合以便提供个性化内容查看体验。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-12

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):G06F15/16 申请日:20140117

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

技术领域

本发明一般涉及过顶(over-the-top,OTT)媒体交付。

背景技术

对于OTT媒体交付的一个已知技术采用媒体对象分段和由客户端(或它们的代理)使用播放列表或“清单”以为了媒体对象的本地客户端重放而采用有序方式检索段。除其他益处外,基于段的交付可以更容易由通用且广泛实现的网络协议(例如HTTP)提供,从而避免伴随更专用媒体交付协议的各种成本和复杂性。

发明内容

公开与实时交付、时移交付和未来按需视频(VoD)交付一起使用的实时流播内容的一次性处理的技术。该技术可大体上称为“网络个人视频记录器”或“npvr”。特别地,公开的技术采用客户端代理,其大量使用清单来向客户端装置提供各种交付功能。在使用清单中利用不同交付模式之中的某些共性,使得清单操纵功能可以在操作中跨不同用户调节。

特别地,公开对内容的服务器端处理来支持网络个人视频记录器功能的方法。该方法包括持续执行以下步骤:(i)获取包含节目的实时流播源内容,(ii)将获取的源内容转码成截然不同的编码来创建相应的内容流,以及(iii)将内容流分段成段并且将这些段上传到一个或多个内容交付网络(CDN)以用于在媒体播放器处渲染节目中检索和使用。在这里“节目”指实时流播内容的部分。它可对应于或可不对应于通常意义上的“节目”,例如电视演出等。节目边界可通过各种手段来检测,其包括带内SCTE-35提示音、带外信号等。

方法进一步包括对节目生成清单并且持续更新清单并且在将段上传到CDN时向CDN上传更新的清单。清单包括主清单和对于编码中相应编码的网络个人视频记录器(npvr)清单集,其中主清单包括对npvr清单集的引用,用于使得能够在媒体播放器处渲染节目中从编码之中选择,并且npvr清单是在上传新的段时更新的逐渐增长的非滑动窗口清单。

在源内容中检测到节目的节目边界时,在CDN的当前目录中完成npvr清单的当前集。然后在CDN中创建新的目录并且新的npvr清单集在这些新的目录中开始。后续段和npvr清单更新被上传到新的目录。

还公开用于渲染在一个或多个截然不同的编码中可用的内容的客户端方法,这些编码每个包括相应的有序段集。该方法包括代理从媒体播放器到内容服务器的清单请求、为要交付的请求内容选择优选编码、确定满足内容请求所需要的npvr清单集以及获得选择的与所选编码关联的npvr清单集中的一个或多个npvr清单规定相应编码的段的位点。从选择的npvr清单还创建变体清单并且将其提供给媒体播放器以供在获得相应编码段中使用以用于内容重放。可采用不同类型的变体清单来支持不同功能性,其包括滑动窗口型变体清单(即,从npvr清单生成),用于实时流播或时移重放。非滑动窗口型变体清单(即,npvr清单的修改版本)可以用于支持预录媒体的交付,例如,按需视频。

附图说明

前述和其他目标、特征和优势将从如在附图(其中类似的参考字符在不同视图中始终指相同零件)中图示的本发明的特定实施例的下列描述显而易见。

图1是根据各种实施例能够实施端到端内容交付过程的系统的框图;

图2是根据各种实施例能够实施端到端内容交付过程的系统的框图;

图3是示出根据各种实施例用于执行媒体预备的方法的流程图;

图4是示出根据各种实施例用于执行实时内容渲染的方法的流程图;

图5A和5B是示出根据各种实施例用于执行时移内容渲染的方法的流程图;以及

图6是示出根据各种实施例用于执行VoD内容渲染的方法的流程图。

具体实施例方式

在本文对于实施例的描述中,提供许多特定细节,例如部件和/或方法的示例,来提供全面理解。然而,相关领域内技术人员将认识到实施例可以在没有特定细节中的一个或多个的情况下或利用其他设备、系统、组件、方法、部件、材料、零件和/或类似物来实践。在其他实例中,未专门示出或详细描述众所周知的结构、材料或操作以避免使实施例的方面混淆不清。

图1中是对于系统100的一个实施例的框图。该系统具有多个网络连接的部件,其包括工作流程管理器(WFM)102、媒体处理服务器或“包装器”104、流播代理106、内容交付网络(CDN)108、客户端媒体播放器或“客户端”110和内容管理系统(CMS)112。它还包括广告决策管理器(ADM)114,其具有到代理106的连接。在图示的实施例中,代理106与客户端110分开-它可定位在远离其中定位客户端110的客户端型计算机(个人计算机,等)的服务器型计算机中。在下文描述的备选实施例中,代理106可作为客户端110的部分而包括。

一般,系统操作成使用例如HTTP实时流播(HLS)、基于HTTP的动态自适应流播(DASH)、SmoothStreaming(平滑流播)等基于段的内容交付机制或任何其他HTTP自适应流播(HAS)协议来将内容从CDN108交付给客户端110如本领域内技术人员应已知的。术语“基于段”应理解为意指比视频的全持续时间或长度更小的视频数据单位。尽管“段”文件与文件内的“片段”之间的语义区分应被本领域内技术人员所知,这里使用的术语“段”应理解为同样适用于段、片段、块等(如由指定协议描述的)-从较长内容块得到的部分视频数据单位。客户端110请求如由播放列表或“清单”描述的段,如本领域内大体上已知的。如在下文详细描述的,代理106在创建和使用清单来向客户端110提供某些重放功能中牵涉较多。

工作流程管理器(WFM)102从内容管理系统(CMS)112接收实时流播内容摄入请求。WFM102指示包装器104开始处理实施流播内容、将内容转码成如由CMS112定义并且通过WFM102配置的多个截然不同的编码(例如,以不同比特率/帧率/分辨率的音频或视频、采用不同语言或字幕的音频或不同的加密算法或密钥)、对个体比特率流分段、对段加密以及将段上传到多个内容交付网络(CDN)108。

媒体处理服务器104(在本文称为包装器104)从WFM102接收的编码配置生成主清单。包装器104对每个编码生成变体清单(在本文称为npvr清单)。对于指定编码的npvr清单是在生成对于编码的每个段时更新的非滑动窗口清单。段被上传并且然后npvr清单也被上传。npvr清单在大小上增长直到节目是完成的。在节目完成时,清单终结并且对下一个节目创建新的节目目录和新的npvr清单。每个新的清单包含到之前的有序npvr清单的指针。在清单终结时,用对下一个有序npvr清单的指针来更新它。

术语“节目”在本文主要用于描述对应于npvr清单的实时流播内容的部分。它可或可不对应于一般意义上的“节目”,例如电视演出等。在一个实施例中,节目边界经由带内SCTE-35提示音来检测。在另一个实施例中,节目边界基于带外SCTE-118或专有电子节目指南(EPG)协议数据来检测。在另一个实施例中,节目边界使用固定节目持续时间来定期生成(例如,每30分钟)。在另一个实施例中,节目可由用户通过提供固定时间范围(例如,规定对于记录的开始和结束时间或对于记录的开始时间和持续时间)来定义。如本领域内技术人员应已知的,存在定义节目边界的多种方式。应理解节目边界检测的任何方法可适用于本发明。

在一个实施例中,对于仅具有一个段的新节目的初始npvr清单可使用M3U8格式而看起来如下:

npvr清单用节目信息和到之前的npvr清单的指针来初始化。

在一个实施例中,挂钟时戳信息作为对于每个段的注释而包括。在一个实施例中,加密密钥ID信息作为对于每个段的注释而包括。在一个实施例中,评级信息被作为对于每个段的注释来包括。如本领域内技术人员应已知的,存在许多方式来代表挂钟时间、密钥信息和评级信息。对于挂钟时间、密钥信息和评级信息的任何有效表示应视为有效地与本发明一起使用。

继续上文描述的实施例的示例,在十秒(一个段持续时间)后,npvr清单应用第二段来更新并且看起来如下:

继续对于上文描述的实施例的示例,一旦节目稍后完成599个段,完成的清单将看起来如下:

npvr清单用到下一个有序npvr清单的指针和ENDLIST标记来更新。在上文的示例中,密钥旋转在某一点出现,从而对于最后段的加密密钥ID与第一段的加密密钥ID不同。

在一个实施例中,目录结构节目基于节目边界、处理节目的日期和时间以及源流ID和转码比特率而是分级的,例如:

其中<media_id>标识源流,<year>、<month>和<day>代表处理初始节目段的日期,<zp_seq>-<pid>代表对于词典编篡排序具有零填充序号的节目标识符,<bitrate>代表转码比特率(尽管更一般地描述编码,例如不同的比特率/分辨率音频/视频、不同的语言音频和字幕,和/或不同的加密算法),并且<limit>代表目录大小限制对于长运行节目可减弱的额外水平。在一个实施例中,<pid>对应于用于使节目元数据相关的唯一标识符。在一个实施例中,节目标识符可包含额外关系元数据,其使节目与以下中的一个或多个关联:特定内容提供者,特定节目系列、个别节目片段、在指定时间播放的节目的唯一实例,等。应理解节目标识符在该上下文中是对于要处理的npvr节目的通用标识符并且不一定与对于通用术语节目或在指定元数据定义的上下文内使用的术语节目的指定语义含义相关,如本领域内技术人员应已知的。在一个实施例中,当节目边界基于固定节目持续时间而确定时,<pid>可指示节目开始的挂钟时间。

在一个实施例中,npvr清单是HTTP实时流播变体清单。清单的完成牵涉将ENDLIST标记添加到npvr清单的末端并且添加注释以指向新节目目录中的下一个有序npvr清单。新的npvr清单应用指向刚刚完成的之前的有序npvr清单的注释来初始化。在一个实施例中,在节目边界上生成新的加密密钥并且对该新密钥的引用包括在新的npvr清单中。在另一个实施例中,最后的加密密钥从之前的npvr清单延续并且对应地生成初始化向量(IV)信息。在一个实施例中,IV信息在MEDIA-SEQUENCE标记中设置。在另一个实施例中,IV信息用KEY标记来显式设置。在一个实施例中,包装器104在与npvr清单中的每个段关联的注释中插入挂钟时戳、加密密钥和评级信息。在再另一个实施例中,在节目中间可存在密钥改变并且延续到下一个节目。

在一个实施例中,包装器104检测实时内容流中的广告。在一个实施例中,包装器104基于带内消息(例如,SCTE-35提示音)来检测广告。在另一个实施例中,使用挂钟开始时间和持续时间或对于广告的结束时间来告知包装器104广告播放时间的先验带外(prioriout-of-band)。如本领域内技术人员应已知的,存在多个方式来定义广告边界。应理解广告边界检测的任何方法可适用于本发明。在一个实施例中,广告开始和停止作为注释和/或间断指示符而包括在npvr清单中。在一个实施例中,即将到来的广告开始和停止指示符作为注释包括在npvr清单中。扩展上文的M3U8示例,下列清单示出这样的示例,其中节目出点(POP)间断(广告开始)和节目入点(PIP)间断(广告结束)通知在段1006(广告的第一段)之前和段1008(广告的最后的段)之后插入npvr清单内,从而标注由于广告插入引起的流中的可能间断。对于段1005和1008的EXT-AZK-SEG注释也分别标注即将到来的PIP和POP:

当客户端110希望重放实时流播内容时,它向代理106发出对主清单的请求。代理106使用从WFM102收集的信息来对客户端110生成主清单。在一个实施例中,代理106访问由包装器104生成的主清单,其被包装器104放置在CDN108中。主清单包含指向与可用变体流编码关联的不同npvr清单(例如,不同的比特率/分辨率音频/视频和/或不同的语言音频和字幕)的URL列表。在一个实施例中,从WFM102收集的信息包括权利信息,其限制主清单中所包括的编码(例如,基于对于内容或对于特定客户端110的最大可允许比特率/分辨率来限制比特率/分辨率,例如在国际专利申请出版WO2011/139305中描述的)。向客户端110返回主清单,该客户端110然后挑选编码用于重放并且向代理106发出对于变体流清单的请求。代理106使用例如在US专利申请出版US2012/0240176中示出的技术从CDN108中的一个检索当前npvr清单。代理106然后基于检索的npvr清单中的信息来生成变体清单。

根据当前重放模式,npvr清单的解析和变体清单的生成不同,如下文描述的。然后向客户端110返回变体清单。

1.实时重放

如果超过必需数量的N个段(例如,3个)在最新的npvr清单中可用,代理106将修整开始段,从而仅留下N个段(相应地调整加密密钥信息,例如通过选择在当前段之前规定的最后的密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)并且向客户端110返回滑动窗口清单。使用来自之前的示例的M3U8清单,假设仅节目Y的前300个段被包装器104处理,代理106将使用最后三个段生成下列清单:

如果最新的npvr清单包含少于N个段,代理106将使用之前的npvr清单指针来检索之前的npvr清单并且在必要时从之前的npvr清单抽取额外段来生成滑动窗口清单(相应地调整加密密钥信息,例如通过选择在当前段之前规定的最后的密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)并且向客户端110返回滑动窗口清单。使用来自之前的示例的M3U8清单,假设仅节目Y的第一段被包装器104处理,代理106将使用来自节目Y的第一段和来自之前的节目X的两个段生成下列清单:

2.时移重放(暂停、倒带、快进)

当客户端110希望在查看实时流播内容时暂停或倒带,或随后在查看实时流播内容时在暂停或倒带后快进,它向代理106发出对应的请求。在一个实施例中,客户端110将重启媒体播放器。当媒体播放器重启时,它将发出对于主清单和变体清单的新请求。当代理106在重启后接收新清单请求时,它将基于暂停/倒带/快进请求生成新的清单。在另一个实施例中,客户端110将允许媒体播放器继续而不重启。在该情况下,媒体播放器将在经过段持续时间后自然地请求新的变体清单,如本领域内技术人员应已知的。

在一个实施例中,在接收暂停请求时,代理106存储对于当前段的当前npvr清单位点、当前段号和对应挂钟时戳。在下一个清单请求时,代理106使用存储的段号来对客户端110生成滑动窗口清单。在另一个实施例中,客户端110发送对应于下一个清单请求中的暂停请求的挂钟时戳。在一个实施例中,挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)以来重放的持续时间。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定重放位置(即,对应于上个重放动作的挂钟时间)的任何方法应适合于本发明。

在一个实施例中,代理106将找到跟随存储的段号(考虑节目边界并且使用下一个npvr清单指针来分辨边界交叉并且在必要时调整加密密钥,例如通过选择在当前段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)的下一个段并且生成滑动窗口清单。在另一个实施例中,代理106将找到具有最新关联挂钟时戳(其超出保存的挂钟时戳)或清单请求中所包括的挂钟时戳的段。使用来自之前的示例的M3U8清单,假设客户端110在实时查看流并且最后呈现有在它请求暂停时在段seg-01100中结束的滑动窗口请求,并且持续2分钟未恢复重放:最新的实时段(假设未生成短的段,例如由于广告边界截断)将是seg-01220,并且启动新的播放器将生成这样的滑动窗口清单,其包含段seg-01220、seg-01219和seg-01218,然而,由代理106生成的暂停后清单将包含seg-01099、seg-01100和seg-01101,从而允许客户端110在它中断的地方继续。如果客户端110未实时查看流,但由于之前已经暂停/倒带/快进,使用已经呈现给客户端110媒体播放器的最新段,原理同样适用。

在一个实施例中,在接收倒带请求时,代理106使用当前段号和对于当前段的对应挂钟时戳以基于用户希望倒带的秒数来计算目标挂钟时间。在另一个实施例中,客户端110发送对应于下一个清单请求中的倒带操作的目标挂钟时间的挂钟时戳。在一个实施例中,目标挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来的重放持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)减去用户希望倒带的秒数。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定目标挂钟时间的任何方法应适合于本发明。

使用目标挂钟时间,代理通过搜索npvr清单来确定对应于挂钟时间的段号。在一个实施例中,如果目标挂钟时间未驻存在当前npvr清单中,代理106使用之前的npvr清单指针以通过使npvr清单链指针走动直到找到包含目标挂钟时间的npvr清单来找到包含目标段(其对应于目标挂钟时间)的npvr清单。代理106然后存储目标-npvr清单位点连同目标段号和对应的目标挂钟时间。在另一个实施例中,代理106使用由WFM102提供的信息来确定与保存的挂钟时戳或清单请求中包括的挂钟时戳关联的npvr清单。在一个实施例中,代理106定期使来自WFM102的npvr清单信息同步(例如,使用流播数据库复制)。在另一个实施例中,代理106从由WFM102管理和更新的共享分布式数据库检索npvr清单信息。

在一个实施例中,代理106使用存储的目标段号来生成对于客户端110的滑动窗口清单(考虑节目边界并且使用下一个npvr清单指针来分辨边界交叉并且在必要时调整加密密钥信息,例如通过选择在当前段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)。在另一个实施例中,代理106将找到具有最新关联挂钟时戳(其超出保存的目标挂钟时戳或清单请求中所包括的目标挂钟时戳)的段。使用来自之前示例的M3U8清单,假设客户端110在实时查看流并且最后呈现有在它请求30秒的倒带时在段seg-01100中结束的滑动窗口清单。通常(假设未生成短的段,例如由于广告边界截断),后续清单请求将生成这样的滑动窗口清单,其包含段seg-01101、seg-01100和seg-01099,然而,由代理106生成的倒带后清单将包含段seg-01097、seg-01096和seg-01095,从而允许客户端110(重新)查看之前渲染的内容。如果客户端110不在实时查看流,但由于之前已经暂停/倒带/快进,使用呈现给客户端110媒体播放器的最新段,原理同样适用。

快进操作与倒带相似。在一个实施例中,在接收快进请求时,代理106使用当前段号和对于当前段的对应挂钟时戳以基于用户希望快进的秒数来计算目标挂钟。在另一个实施例中,客户端110发送挂钟时戳,其对应于下一个清单请求中快进操作的目标挂钟时间。在一个实施例中,目标挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)加上用户希望快进的秒数。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定目标挂钟时间的任何方法应适合于本发明。

使用目标挂钟时间,代理通过搜索npvr清单来确定对应于挂钟时间的段号。在一个实施例中,如果目标挂钟时间未驻存在当前npvr清单中,代理106使用下一个npvr清单指针以通过使npvr清单链指针走动直到找到包含目标挂钟时间的npvr清单来找到包含目标段(其对应于目标挂钟时间)的npvr清单。代理106然后存储目标-npvr清单位点连同目标段号和对应的目标挂钟时间。在另一个实施例中,代理106使用由WFM102提供的信息来确定与保存的挂钟时戳或清单请求中包括的挂钟时戳关联的npvr清单。在一个实施例中,代理106定期使来自WFM102的npvr清单信息同步(例如,使用流播数据库复制)。在另一个实施例中,代理106从由WFM102管理和更新的共享分布式数据库检索npvr清单信息。

在一个实施例中,代理106使用存储的目标段号来生成对于客户端110的滑动窗口清单(考虑节目边界并且使用下一个npvr清单指针来分辨边界交叉并且在必要时调整加密密钥信息,例如通过选择在当前段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)。在另一个实施例中,代理106将找到具有最新关联挂钟时戳(其在保存的目标挂钟时戳或清单请求中所包括的目标挂钟时戳之前)的段。如果目标挂钟时间代表将来超出由包装器104生成的最新段的挂钟时戳的挂钟时间,代理106转回实时查看并且使用最新N个段生成滑动窗口清单(考虑节目边界并且使用下一个npvr清单指针来分辨边界交叉并且在必要时调整加密密钥信息,例如通过选择在当前段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)。使用来自之前示例的M3U8清单,假设客户端110在已经暂停或倒带后查看流,其中在客户端110请求30秒的快进时,呈现给客户端110媒体播放器的最后滑动窗口清单在段seg-01100中结束,并且由包装器104生成的最新段是seg-01200。在没有快进的情况下,后续时移清单请求将生成这样的滑动窗口清单,其包含段seg-01101、seg-01100和seg-01099,然而,由代理106生成的快进后清单(假设未生成短的段,例如由于广告边界截断)将包含段seg-01104、seg-01103和seg-01102,从而允许客户端110往前跳跃。在快进情况下,因为实时快进没有效果,客户端110不可实时查看流。

3.记录内容(VOD)的重放

在该章节中,术语“节目”指对于指定npvr清单的内容以及客户端所请求的重放单位(其可是不同的)两者。从上下文将清楚要意指哪个意思。

在客户端110希望重放之前记录的节目(其已经从实时内容流记录)时,它向代理106发出对主和变体清单的请求。在处理变体清单请求中,如果由包装器104生成的完整npvr清单包含用于重放请求节目所需要的所有段和密钥信息,以及仅仅对于请求节目的段和密钥信息,代理将来自CDN108的npvr清单透明地返回给客户端110。

如果由包装器104生成的单个完整npvr清单包含超过必需数量的段,代理106从npvr清单的开始和结束修整段(相应地调整加密密钥信息,例如通过选择在指定段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)来创建对应于期望节目的清单并且将它返回给客户端110。使用来自之前示例的M3U8清单,我们可以从节目Y的开始和结束修整两分钟来生成下列清单:

如果节目跨越多个npvr清单文件,代理106使用下一个和/或之前的npvr清单指针来定位必需的npvr清单文件,然后使段信息串联并且从开始和结束削掉任何多余段(相应地调整加密密钥信息,例如通过选择在指定段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)来对期望节目生成清单并且返回给客户端110。在一个实施例中,节目边界由挂钟时戳定义。在一个实施例中,开始段确定为包含开始挂钟时戳的段,而结束段确定为包含结束挂钟时戳的段。使用来自之前示例的M3U8清单,我们可以从之前的节目X和下一个节目Z两者抽取额外的两分钟来生成下列清单,其跨越三个npvr清单(即,http://.../001-X,http://.../002-Y和http://.../003-Z):

在一个实施例中,对于变体清单中的段的基URL被修改以指向代理106,其中段被高速缓存以用于离线重放。在一个实施例中,生成的对于节目的主和变体清单在从CDN108初始检索并且随后来自本地高速缓存时在代理106中本地高速缓存。在一个实施例中,段从CDN108预先提取并且随后来自本地高速缓存。

4.广告替换

在一个实施例中,如npvr清单包含广告指示符,代理106可用为查看内容的个体个性化的广告替换来自源实时内容的原始广告。在一个实施例中,包装器104将指示广告边界的位置的注释插入npvr清单,如例如在国际专利申请出版WO2010/111261中示出的。在一个实施例中,在即将到来的广告的npvr清单中检测到注释时,代理106将向广告决策管理器(ADM)114发出请求并且ADM114将用备选广告做出响应来呈递。在一个实施例中,ADM114对备选广告提供段位点。在另一个实施例中,代理106从WFM102请求对于备选广告的段位点。当代理106生成清单文件以呈现给客户端110媒体播放器时,它将用对于备选广告的段URL替换来自npvr清单的段URL。

扩展之前的实时重放示例,代理106将如下生成一系列清单,从而用备选广告段替换段1006至1008(相应地调整加密密钥信息,例如通过选择在指定段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的):

在一个实施例中,由WFM102对代理106提供多个ADM服务器114。在一个实施例中,代理106所选的优选ADM114基于简单的轮询方案。在另一个实施例中,对于每个ADM114的优先级由WFM102提供并且代理106使用加权轮询方案来选择优选ADM114。在另一个实施例中,代理106基于随机选择来选择优选ADM114。如本领域内技术人员应已知的,存在用于从服务器列表选择优选服务器的许多算法。应理解用于选择优选ADM114的任何方法应视为有效地与本发明一起使用。

图2中是对于另一个实施例的框图。系统200与系统100相同,所不同的是嵌入客户端110内的代理。

图3中是对于在包装器104处执行、用于处理实时流播内容并且生成npvr清单以供在实时、时移或VoD重放中使用的过程300的流程图。

在步骤302中,包装器104处理下一个段,其中该段从转码的实时流播输入编译。在一个实施例中,生成具有固定目标持续时间的段。在一个实施例中,段可比固定目标持续时间更短,例如,节目边界或广告边界之前的最后的段可缩短使得该节目或广告边界之后的第一段在新的段边界上开始。在一个实施例中,节目边界信息和/或广告边界信息经由SCTE-35提示音而带内提供。在另一个实施例中,节目边界信息和/或广告边界信息经由SCTE-118、SCTE-130或其他专有信令协议而带外提供。如本领域内技术人员应已知的,存在信号传递节目边界信息和/或广告边界信息的许多方式。应理解用于检测节目边界信息和/或广告边界信息的任何方法应视为有效地与本发明一起使用。

在步骤304中,包装器104检查来看看是否达到节目边界或广告边界。如果还未达到节目边界或广告边界,处理持续到步骤308,在这里当前npvr清单用新的段信息更新并且在新的段上传到CDN108后上传到CDN108。如果达到节目边界或广告边界,处理持续到步骤306,其中在行进到步骤308之前包装器在CDN108中为下一个节目创建新的目录、用新的段信息更新当前npvr清单、通过添加下一个npvr清单指针和ENDLIST标记来完成当前npvr清单并且为新的节目创建新的npvr清单文件,其中段和两个清单(当前和新的)上传到CDN108。

图4中是描述在代理106处执行、用于对客户端110生成滑动窗口清单文件以用于实时流播内容的实时重放的过程400的流程图。

在步骤402中,代理106从客户端110接收对于主清单的请求。主清单包含变体清单URL列表,其对应于不同的可用编码(例如,不同的比特率/分辨率音频/视频和/或不同的语言音频和字幕)。在一个实施例中,变体清单URL回指代理106。在一个实施例中,变体清单URL包含主清单请求的挂钟时戳。在一个实施例中,代理106基于由WFM102提供的信息来确定可用比特率。在另一个实施例中,代理106基于由包装器104产生并且放置在CDN108中的主清单来确定可用比特率。在一个实施例中,代理106确定要呈现给客户端110的比特率子集。在一个实施例中,比特率集基于由WFM102为客户端110配置的用户限制而确定。在另一个实施例中,比特率集基于由WFM102提供的网络限制而确定。在另一个实施例中,比特率集基于由代理106基于清单请求的聚集数量和在指定时间窗口(例如,最后30秒)内看到的它们的对应比特率而估计的当前网络负载来确定。对于这些操作的技术在国际专利申请出版WO2011/139305中描述。代理106向客户端110返回主清单并且行进到步骤404。

在步骤404中,代理106从客户端110接收变体清单请求,例如特定比特率。在一个实施例中,代理106选择CDN108,客户端110应从其检索段。在一个实施例中,CDN108基于由WFM102提供的严格优先级排定而选择。在另一个实施例中,CDN108基于轮询或加权轮询方案而选择,其中权重由WFM102提供。在另一个实施例中,CDN108基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。CDN108基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。CDN选择的技术在US专利申请出版US2012/0240176中描述。在一个实施例中,代理106选择比特率以服务于客户端110,其中比特率可低于客户端110所请求的比特率。在一个实施例中,比特率基于由WFM102为客户端110配置的用户限制而确定。在另一个实施例中,比特率基于由WFM102提供的网络限制而确定。比特率选择的技术在国际专利申请出版WO2011/139305中描述。在另一个实施例中,比特率基于由代理106基于清单请求的聚集数量和在指定时间窗口(例如,最后30秒)内看到的它们的对应比特率而估计的当前网络负载来确定。在另一个实施例中,比特率基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。在另一个实施例中,比特率基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。

在步骤404中,代理106还确定满足请求所需要的段范围。在一个实施例中,代理106存储来自之前的清单清单或来自之前的重放动作(即,暂停、播放、倒带、快进)的段范围。在另一个实施例中,客户端110对之前的重放动作(即,暂停、播放、倒带、快进)提供目标挂钟时间。在一个实施例中,客户端110在每个重放动作重启媒体播放器,这导致新的主清单请求,这导致生成有对于该重复动作的当前挂钟时间的新的变体清单URL。在另一个实施例中,挂钟时戳由客户端110计算为对应于上个重放动作(即,暂停、播放、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异),分别加上或减去用户希望快进或倒带的秒数。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定目标挂钟时间的任何方法应适合于本发明。

一旦确定段范围并且已经选择比特率和CDN,处理持续到步骤416,其中代理106检查来看看已经高速缓存的npvr清单文件是否包含满足请求的必需段信息。如果已经高速缓存的npvr清单文件不包含必需的段信息,处理持续到步骤418,在这里代理106检索需要的npvr清单文件。如果客户端110当前在播放实时流播内容,代理106从所选的CDN108为所选的比特率检索最新npvr清单。在一个实施例中,代理106仅检索它还没有高速缓存的最新npvr清单的部分。在一个实施例中,代理106使用HTTP范围请求以仅检索从一开始的大于之前检索直到文件当前末端的最后字节的那些字节。否则,如果客户端110当前不在播放实时流播内容,必须确定需要的npvr清单的位点。在一个实施例中,代理106使用下一个npvr清单指针以通过使npvr清单链指针走动直到找到包含目标挂钟时间的npvr清单来找到包含目标段(其对应于目标挂钟时间)的npvr清单。这可需要从所选的CDN108检索多个npvr清单文件。在另一个实施例中,代理106使用由WFM102提供的信息来确定与目标挂钟时间关联的npvr清单。在一个实施例中,代理106定期使来自WFM102的npvr清单信息同步(例如,使用流播数据库复制)。在另一个实施例中,代理106从由WFM102管理和更新的共享分布式数据库检索npvr清单信息。一旦确定需要的npvr清单位点,代理106从所选的CDN108为所选的比特率检索需要的npvr清单。

如果找到在步骤416中本地高速缓存的必需段,处理直接持续到步骤410。否则,在检索需要的npvr清单后,处理持续到步骤410,在这里代理106检查来看看在当前npvr清单中是否存在足够段来生成滑动窗口清单。如果存在足够的段,处理持续到步骤412,在这里代理106使用之前的npvr清单来得到必要数量的段(例如,三个)来生成滑动窗口清单。如果之前的npvr清单未被本地高速缓存,代理106使用之前的npvr清单指针URL来检索之前的npvr清单。在一个实施例中,代理106总是高速缓存两个最新npvr清单文件使得它可以容易应对边界交叉状况。在一个实施例中,代理106高速缓存所有之前下载的完整npvr清单文件。

如果在步骤410中在当前清单中找到必需的段,处理直接持续到步骤406。否则,在查阅之前的npvr清单后,处理持续到步骤406,在这里代理106检查来看看当前npvr清单现在是否是完整的。如果当前npvr清单是完整的,处理持续到步骤408。在一个实施例中,在持续到步骤414之前,代理106维持会话状态并且将当前清单更新为下一个npvr清单指针所指示的下一个npvr清单。如果npvr清单在步骤406中不是完整的,处理直接持续到步骤414。

在步骤414中,代理106生成包含所选的N个段的滑动窗口清单并且向客户端110返回它。在一个实施例中,如果当前滑动窗口清单包含广告段,当在步骤414中生成滑动窗口清单时,代理106用备选广告段来替换在npvr清单中规定的段。在一个实施例中,代理106基于npvr清单中的注释来检测即将到来的广告。在一个实施例中,代理106向ADM114发出请求来确定向客户端110呈现哪个备选广告。在一个实施例中,备选广告段位点由ADM114规定。在另一个实施例中,代理106对于由ADM114规定的备选广告从WFM102检索备选广告段位点。

图5A和5B中是描述在代理106处执行、用于应对来自客户端110的重放动作请求(即,暂停、播放、倒带和快进)以实现实时流播内容的时移重放的过程500A和500B的流程图。如之前指出的,对于倒带和快进大致紧接着并且在暂停情况下恢复重放时,这些重放动作中的每个后跟由客户端110媒体播放器生成的新的清单请求。在图5A中示出的一个实施例中,重放动作请求是到代理106内的直接API调用。在图5B中示出的另一个实施例中,在客户端110中应对重放动作,并且客户端110生成目标挂钟时戳,其对应于重放动作(即,暂停后播放、倒带或快进)的目标重放位置。在一个实施例中,暂停后播放目标挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)。在一个实施例中,倒带目标挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)减去用户希望倒带的秒数。在一个实施例中,快进目标挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)加上用户希望快进的秒数。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定重放位置(即,对应于上个重放动作的挂钟时间)的任何方法应适合于本发明,以供在计算目标挂钟时戳中使用。

过程500A以步骤502开始,在这里代理106从客户端110接收时移请求(即,暂停、快进或倒带)。处理然后持续到步骤508,在这里代理106检查来看看时移请求是否是暂停请求。如果请求是暂停请求,处理持续到步骤510,在这里代理106标注服务于客户端110的最新段(和段的关联挂钟时戳)并且然后行进到步骤526。在一个实施例中,代理106维持关于客户端110当前是否在查看实时流播内容(由设置为真的实时流播标志指示)或客户端110是否时移(由设置为假的实时流播标志指示)的会话状态。当出现暂停操作时,实时流播标志设置为假。

如果请求不是暂停请求,处理持续到步骤512,在这里代理106检查来看看时移请求是否是倒带请求。如果请求是倒带请求,处理持续到步骤514,在这里代理106标注服务于客户端110的最新段的挂钟时戳、通过从最新段的关联挂钟时戳扣除倒带距离来计算对于服务于客户端110的下一个段的倒带目标挂钟时间、在当前npvr清单中向后搜索对应于倒带目标时戳的段(在必要时下载额外npvr清单文件来对于跨越节目边界的倒带请求搜索额外npvr清单),并且标注倒带目标段连同倒带目标时戳,然后行进到步骤526。在一个实施例中,如果倒带目标挂钟时间未驻存在当前npvr清单中,代理106使用之前的npvr指针以通过使npvr清单链指针走动直到找到包含倒带目标挂钟时间的npvr清单来找到包含目标段(其对应于倒带目标挂钟时间)的npvr清单。在另一个实施例中,代理106使用由WFM102提供的信息来确定与倒带目标挂钟时戳关联的npvr清单。在一个实施例中,代理106定期使来自WFM102的npvr清单信息同步(例如,使用流播数据库复制)。在另一个实施例中,代理106从由WFM102管理和更新的共享分布式数据库检索npvr清单信息。在一个实施例中,代理106维持关于客户端110当前是否在查看实时流播内容(由设置为真的实时流播标志指示)或客户端110是否时移(由设置为假的实时流播标志指示)的会话状态。当出现倒带操作时,实时流播标志设置为假。

如果请求不是倒带请求,处理持续到步骤516,在这里代理106检查来看看时移请求是否是快进请求。如果请求不是快进请求,处理持续到步骤524,在这里生成“未知动作”错误。在图示的实施例中,因为仅支持暂停、快进和倒带,可以推断错误。在备选实施例中可采用其他错误检测逻辑,尤其是具有额外有效、非错误请求类型的那些。如果在516处请求是快进请求,处理持续到步骤518,在这里代理106标注服务于客户端110的最新段的挂钟时戳、通过将快进距离添加到最新段的关联挂钟时戳来计算对于服务于客户端110的下一个段的快进挂钟目标时间并且检查来看看快进目标挂钟时间是否在将来,即超出由包装器104生成的最新实时段的时戳。如果快进目标时间在将来(即,超出由包装器104生成的最新实时段的时戳),处理持续到步骤522,在这里代理106使用最新的N个段从由包装器104生成的最新npvr清单来生成实时流播变体清单。在一个实施例中,代理106维持关于客户端110当前是否在查看实时流播内容(由设置为真的实时流播标志指示)的会话状态。如果实时流播标志已经在步骤522中设置,不需要做什么。如果实时流播标志还未在步骤522中设置,设置实时流播标志使得可忽略后续快进请求。

如果在518处快进目标时间仍然在已经处理的段的范围内,处理持续到步骤520,在这里代理106在当前npvr清单中向前搜索对应于快进目标时戳的段(在必要时下载额外npvr清单文件来对于跨越节目边界的快进请求搜索额外npvr清单),并且然后行进到步骤526。在一个实施例中,如果快进目标挂钟时间未驻存在当前npvr清单中,代理106使用下一个npvr清单指针以通过使npvr清单链指针走动直到找到包含快进目标挂钟时间的npvr清单来找到包含目标段(其对应于快进目标挂钟时间)的npvr清单。在另一个实施例中,代理106使用由WFM102提供的信息来确定与快进目标挂钟时戳关联的npvr清单。在一个实施例中,代理106定期使来自WFM102的npvr清单信息同步(例如,使用流播数据库复制)。在另一个实施例中,代理106从由WFM102管理和更新的共享分布式数据库检索npvr清单信息。在一个实施例中,代理106维持关于客户端110当前是否在查看实时流播内容(由设置为真的实时流播标志指示)或客户端110是否时移(由设置为假的实时流播标志指示)的会话状态。当出现未导致恢复实时流的快进操作时,实时流播标志应已设置为假,但另外可重设为假。

在步骤526中,代理106从客户端110接收对于特定比特率的变体清单请求。在一个实施例中,代理106选择CDN108,客户端110应从其检索段。在一个实施例中,CDN108基于由WFM102提供的严格优先级排定而选择。在另一个实施例中,CDN108基于轮询或加权轮询方案而选择,其中权重由WFM102提供。在另一个实施例中,CDN108基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。在另一个实施例中,CDN108基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。在一个实施例中,代理106选择比特率以服务于客户端110,其中比特率可低于客户端110所请求的比特率。在一个实施例中,比特率基于由WFM102为客户端110配置的用户限制而确定。在另一个实施例中,比特率基于由WFM102提供的网络限制而确定。在另一个实施例中,比特率基于由代理106基于清单请求的聚集数量和在指定时间窗口(例如,最后30秒)内看到的它们的对应比特率而估计的当前网络负载来确定。在另一个实施例中,比特率基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。在另一个实施例中,比特率基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。

代理106对从在步骤510、514或520中确定的目标段向后运作的所选比特率和CDN108生成滑动窗口清单。代理106向客户端110返回滑动窗口清单并且等待新的请求。对于后续变体清单请求,处理行进回到步骤526,在这里代理106使目标段递增(对于跨越节目边界的增量跟随下一个npvr清单指针)并且生成更新的滑动窗口变体清单以返回给客户端110。在一个实施例中,如果对应于目标时间的滑动窗口清单包含广告段,当在步骤526中生成滑动窗口清单时,代理106用备选广告段替换在npvr清单中规定的段。在一个实施例中,代理106基于npvr清单中的注释来检测即将到来的广告。在一个实施例中,代理向ADM114发出请求来确定向客户端110呈现哪个备选广告。在一个实施例中,在步骤526中接收变体清单请求之前,如果目标段是广告段,代理106通过检索对于目标段的npvr清单、确定是否需要广告段以及在步骤510、514或520中向ADM114发出请求来优化对ADM114的请求。在另一个实施例中,代理106对于由ADM114规定的备选广告从WFM102检索备选广告段位点。

应注意触发步骤502中的过程的重放动作API调用可独立于步骤526中的应对变体清单请求并且与之异步。尽管它作为单个过程在图5A中绘制,步骤502-524代表用于改变由在步骤526中描述的清单生成任务使用的状态(即,目标段)的过程。在一个实施例中,步骤502-524中的过程迫使重启或重新初始化步骤526中的清单生成任务,这有效地使步骤526在过程500A中变成相关步骤。在另一个实施例中,步骤502-524中的过程简单地更新步骤526中的独立清单生成任务(例如,独立操作系统线程或操作系统进程)的当前段和当前npvr清单变量。

现在转向图5B,过程500B以步骤550开始,在这里客户端110从用户接收时移请求(即,暂停、快进或倒带)。处理然后持续到步骤558,在这里客户端110检查来看看时移请求是否是暂停请求。如果请求是暂停请求,处理持续到步骤560,在这里代理106标注当前重放挂钟时戳并且然后行进到步骤576。在一个实施例中,当前重放挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定重放位置(即,对应于上个重放动作的挂钟时间)的任何方法应适合于本发明,以供在计算当前重放挂钟时戳中使用。在一个实施例中,客户端110维持关于用户当前是否在查看实时流播内容(由设置为真的实时流播标志指示)或用户是否时移(由设置为假的实时流播标志指示)的会话状态。当出现暂停操作时,实时流播标志应设置为假。

如果在558处请求不是暂停请求,处理持续到步骤562,在这里客户端110检查来看看时移请求是否是倒带请求。如果请求是倒带请求,处理持续到步骤564,在这里客户端110通过从当前重放挂钟时戳扣除倒带距离来计算倒带目标挂钟时间,然后行进到步骤576。在一个实施例中,当前重放挂钟时戳计算为对应于上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定重放位置(即,对应于上个重放动作的挂钟时间)的任何方法应适合于本发明,以供在计算当前重放挂钟时戳中使用。在一个实施例中,客户端110维持关于用户当前是否在查看实时流播内容(由设置为真的实时流播标志指示)或客户端110是否时移(由设置为假的实时流播标志指示)的会话状态。当出现倒带操作时,实时流播标志应设置为假。

如果在562处请求不是倒带请求,处理持续到步骤566,在这里代理106检查来看看时移请求是否是快进请求。如果请求不是快进请求,处理持续到步骤574,在这里因为在图示的实施例中仅支持暂停、快进和倒带而生成“未知动作”错误。至于过程500A,在支持额外有效的非错误请求类型的实施例中可采用其他错误逻辑。如果在566处请求是快进请求,处理持续到步骤568,在这里客户端110通过将快进距离添加到当前重放挂钟时戳来计算快进挂钟目标时间。在一个实施例中,当前重放挂钟时戳计算为上个重放动作(即,开始、暂停、倒带、快进)的视频位置的挂钟时间加上自上个重放动作以来重放的持续时间(例如,以自由运行计时器为基础或使用与媒体播放器的呈现时戳差异)。如本领域内技术人员应已知的,存在跟踪重放位置和进度的许多方法,应理解用于确定重放位置(即,对应于上个重放动作的挂钟时间)的任何方法应适合于本发明,以供在计算当前重放挂钟时戳中使用。客户端还检查来看看快进目标挂钟时间是否在将来,即超出客户端110操作系统的当前挂钟时间。如果快进目标时间不是将来(即,在客户端110操作系统的当前挂钟时间之前),处理持续到步骤576。如果快进目标时间是将来(即,超出客户端110操作系统的当前挂钟时间),处理持续到步骤578,在这里客户端检查来看看用户是否已经在查看实时流播内容。在一个实施例中,客户端110维持关于用户当前是否在查看实时流播内容(由设置为真的实时流播标志指示)。在另一个实施例中,客户端110总是假设用户当前不在查看实时流播内容(由设置为假的实时流播标志指示)。当出现未导致恢复实时流的快进操作时,实时流播标志应已设置为假,但另外可重设为假。

在步骤572中,实时流播标志已经设置为真,则没有理由试图恢复实时流播内容的重放,因为用户已经在查看实时流播内容,因此处理持续到步骤580,在这里客户端110忽略请求。如果实时流播标志未设置为真,处理持续到步骤572,在这里客户端110将目标挂钟时戳设置成等于客户端110操作系统的当前挂钟时间并且实时流播标志设置为真。处理然后持续到步骤576。

在步骤576中,客户端110重设媒体播放器并且用包含新目标挂钟时戳的新主清单请求URL来重启它,以由代理106应对。

图6中是描述在代理106处执行、用于生成VoD清单文件以用于重放之前记录的实时内容的过程600的流程图。在步骤602中,代理106从客户端110接收对于主清单的请求。主清单包含对应于不同可用比特率的变体清单文件列表。在一个实施例中,代理106基于由WFM102提供的信息来确定可用比特率。在另一个实施例中,代理106基于由包装器104产生并且放置在CDN108中的主清单来确定可用比特率。在一个实施例中,代理106确定要向客户端110呈现的比特率子集。在一个实施例中,比特率集基于由WFM102为客户端110配置的用户限制而确定。在另一个实施例中,比特率集基于由WFM102提供的网络限制而确定。在另一个实施例中,比特率集基于由代理106基于清单请求的聚集数量和在指定时间窗口(例如,最后30秒)内看到的它们的对应比特率而估计的当前网络负载来确定。代理106向客户端110返回主清单并且行进到步骤604。

在步骤604中,代理106从客户端110接收对于特定比特率的变体清单请求。在一个实施例中,代理106选择CDN108,客户端110应从其检索段。在一个实施例中,CDN108基于由WFM102提供的严格优先级排定而选择。在另一个实施例中,CDN108基于轮询或加权轮询方案而选择,其中权重由WFM102提供。在另一个实施例中,CDN108基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。在另一个实施例中,CDN108基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的段检索而选择。在一个实施例中,代理106选择比特率以服务于客户端110,其中比特率可低于客户端110所请求的比特率。在一个实施例中,比特率基于由WFM102为客户端110配置的用户限制而确定。在另一个实施例中,比特率基于由WFM102提供的网络限制而确定。在另一个实施例中,比特率基于由代理106基于清单请求的聚集数量和在指定时间窗口(例如,最后30秒)内看到的它们的对应比特率而估计的当前网络负载来确定。在另一个实施例中,比特率基于对于清单的聚集延迟测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。在另一个实施例中,比特率基于对于清单的聚集带宽测量和/或由代理106在指定时间窗口(例如,最后30秒)内执行的从CDN108的段检索而选择。代理从用于所选的比特率的所选的CDN108检索对应于节目开始时间的第一npvr清单。

处理然后持续到步骤606,在这里代理106检查来看看节目是否跨越多个npvr清单(即,在步骤604中检索的第一npvr清单不包含为请求节目创建VoD清单所必需的所有段)。如果第一清单包含所有必需段,处理持续到步骤610。如果第一清单不包含必需段,处理持续到步骤608,在持续到步骤610之前,在这里代理106使用下一个有序清单指针来检索额外清单文件、使段信息串联并且去除不必要的标志,如本领域内技术人员应熟悉的。

在步骤610中,代理106检查来看看第一npvr清单中的第一段的挂钟时戳是否与节目的开始时间对准。如果挂钟时戳对准,处理持续到步骤614。如果时戳不对准,处理持续到步骤612,在这里代理106在持续到步骤614之前削掉其挂钟时戳与节目的挂钟时间范围不重叠的那些初始段(相应地调整加密密钥信息,例如通过选择在指定段之前规定的最后密钥并且根据需要应用正确的IV,如本领域内技术人员应熟悉的)。

在步骤614中,代理106检查来看看最后的npvr清单中的最后段的挂钟时戳是否与节目的开始时间对准。如果挂钟时戳对准,处理持续到步骤618。如果时戳不对准,处理持续到步骤616,在这里代理106在持续到步骤618之前修剪掉其挂钟时戳与节目的挂钟时间范围不重叠的那些初始段。

在步骤618中,代理106使用余下的段来生成VoD清单文件并且将它返回给客户端110。在一个实施例中,如果变体清单包含广告段,当在步骤618中生成变体清单时,代理106用备选广告段来替换在npvr清单中规定的广告段。在一个实施例中,代理106向ADM114(每个广告一个)发出一个或多个请求来确定要向客户端110呈现哪个(些)备选广告。在一个实施例中,备选广告段位点由ADM114规定。在另一个实施例中,代理106从WFM102检索对于由ADM114规定的备选广告的备选广告段位点。

从而公开用于处理内容来支持网络个人视频记录器功能的方法,其包括

持续执行以下步骤:(i)获取包含节目的实时流播源内容,(ii)将获取的源内容转码成截然不同的编码来创建相应的内容流,以及(iii)将内容流分段成段并且将这些段上传到一个或多个内容交付网络(CDN)用于在媒体播放器处渲染节目中检索和使用;

对节目生成清单并且持续更新清单并且在将段上传到CDN时将更新的清单上传到CDN,清单包括主清单和对于编码中相应编码的网络个人视频记录器(npvr)清单集,主清单包括对npvr清单集的引用,用于实现在媒体播放器处渲染节目中从编码之中选择;以及

检测源内容中节目的节目边界,并且作为响应:

在CDN的当前目录中完成npvr清单的当前集;

在CDN中创建新的目录并且在这些新的目录中开始新的npvr清单集;以及

将后续段和npvr清单更新上传到新的目录。

源内容可以是音频/视频内容。

节目边界可用内容(例如,SCTE-35提示音)带内规定。

节目边界可以挂钟时间(例如,SCTE-118、专有EPG数据或固定持续时间调度)为基础而带外规定。

对于每个节目的新目录可具有分级目录结构,其具有基于节目边界、处理节目的日期和时间以及源流和编码的相应标识符的截然不同的分级级别。

可对每个新节目生成新的加密密钥。

现有的加密密钥可延续到新的节目npvr清单。

主清单可以是HTTP实时流播主清单,段是HTTP实时流播段,并且npvr清单是持续增长直到完整并且以ENDLIST标志结束的非滑动窗口变体流清单,每个npvr清单包括对节目的所有段的有序引用。

节目可跨越多个有序npvr清单,并且方法进一步包括将指针添加到每个npvr清单来识别按顺序在前的npvr清单和按顺序在后的npvr清单。

方法可进一步包括检测广告边界并且在npvr清单中包括广告边界信息来识别内容流中的中断。

广告边界可基于带内SCTE-35提示音和SCTE-130放置机会信息来检测。

广告边界可以挂钟时间为基础而带外提供。

注释可添加到npvr清单来指示包含广告的第一和最后的段。

公开的用于渲染内容的方法(该内容在一个或多个截然不同的编码中可用,这些编码每个包括相应的有序段集)包括:

代理从媒体播放器到内容服务器的清单请求;

为要交付的请求内容选择优选编码;

确定满足内容请求所需要的npvr清单集并且获得与所选的编码关联的npvr清单集中所选的一个,npvr清单规定相应编码的段的位点;

从所选的npvr清单构造变体清单;以及

向媒体播放器提供变体清单以供在获得相应编码的段以用于重放内容中使用。

方法可进一步包括:

在对应于可替换的广告的内容中检测规定段;

从多个广告服务器选择优选广告服务器;

对于备选广告询问优选广告服务器;以及

用由变体流清单中的优选广告服务器规定的段替换npvr清单中的规定段。

方法可进一步包括:

从包含相同内容的多个内容交付网络(CDN)选择优选CDN并且重写npvr清单的段统一资源定位符(URL);以及

用变体流清单中的优选CDN的第二基URL替换指向初始CDN的第一基URL。

变体清单可通过添加对下一个段的新引用并且去除对最新段的预定窗口中最早段的现有引用而构造为滑动窗口变体清单。

内容可以是实时流播内容并且滑动窗口变体清单在生成实时流播内容的新的段以充当对于由媒体播放器实时重放实时流播内容的实时流播清单时持续更新。

滑动窗口变体清单的持续更新可包括:

找到并且检索最新npvr清单;

如果最新的npvr清单包含预定窗口中的所有最新段,则从最新npvr清单提取段;

如果最新的npvr清单不包含预定窗口中的所有最新段,则找到下一个按顺序在前的npvr清单并且从最新和下一个按顺序在前的npvr清单两者提取预定窗口中的最新段;以及

从提取的段构造实时流播清单。

方法可进一步包括定期检索对于最新npvr清单的更新。

方法可进一步包括使用字节范围请求以通过仅请求超出直至文件结束的之前npvr清单检索的字节范围的数据来限制在后续npvr清单检索中的数据量。

方法可进一步包括:

检测当前npvr清单的完成;

确定对于下一个有序npvr清单的位点;以及

发出对下一个有序npvr清单的位点的后续请求。

内容可以是实时流播内容并且滑动窗口变体清单基于时移重放请求的目标段创建以充当对于由媒体播放器时移重放实时流播内容的一部分的时移清单。

方法可进一步包括:

找到并且检索包含目标段的偏移npvr清单;

如果偏移npvr清单包含预定窗口中的所有最新段,则从偏移npvr清单提取段;

如果偏移npvr清单不包含预定窗口中的所有最新段,则找到下一个按顺序在前或在后的npvr清单并且从偏移或下一个按顺序在前或在后的npvr清单两者提取预定窗口中的最新段;以及

从提取的段构造时移清单。

方法可进一步包括使用时移清单中的单调递增序号来模拟连续流播重放,同时维持当前时移清单序号与目标段的序号之间的映射。

方法可进一步包括每当出现新的寻找操作时重启媒体播放器并且重设时移清单序号。

方法可进一步包括如果寻找请求超出生成的最新段则重启媒体播放器并且转回实时清单文件。

方法可进一步包括在时移重放请求牵涉寻找新的重放位置时将中断指示符插入时移清单。

找到偏移清单可包括从在最近使用的npvr清单中的最近使用段计算相对时间,并且将对应于该相对时间的npvr清单识别为偏移清单。

偏移可基于自最后的媒体播放器重启以来特定用户的聚集重放请求而计算,该计算使对于观看的时间和快进操作的偏移增加,并且使倒带操作的偏移减小。

将变体清单构造为滑动窗口变体清单可包括利用进一步包括以下的方法来找到并且检索多个最新npvr清单以从最新npvr清单提取预定窗口中的所有最新段:(i)高速缓存最近完成的npvr清单以及(ii)从高速缓存的完成npvr清单检索最新npvr清单。

方法可进一步包括:

找到与变体清单中的每个段关联的正确加密密钥;

使用对于变体清单中的每个段的正确加密密钥;以及

调整对于正确加密密钥的初始化向量(IV)信息以与变体清单中的每个段相一致。

内容可以是记录的内容并且变体清单构造为按需视频(VOD)非滑动窗口变体清单,其不能用于媒体播放器对记录内容的VOD重放。

方法可进一步包括:

找到并且检索称为开始清单(其包含对于节目的开始时间)的第一npvr清单,并且找到称为开始清单中的开始段的第一段,该开始段具有期望节目开始时间之前最接近的开始时间。

找到称为结束清单(其包含对于节目的结束时间)的第二npvr清单,并且找到称为结束清单中的结束段的第二段,该结束段具有期望节目结束时间之后最接近的结束时间;

检索所有npvr清单,其对应于开始清单与结束清单之间的时间;以及

通过使以开始清单开始并且以结束清单结束的所有npvr清单串联来构造VoD非滑动窗口变体清单,同时排除在开始清单中的开始段之前的段和在结束清单中的结束段之后的段。

npvr清单集可定义这样的节目,其以邻接挂钟时间范围为基础来确定。

方法可进一步包括基于特定用户的个人记录准则来使时间范围个性化。

上文的方法能在一起和/或独立使用。它们可在相应的计算机化装置中实现。

尽管已经特别示出和描述本发明的各种实施例,本领域内技术人员将理解在可在其中做出形式和细节上的各种改变而不偏离如由附上的权利要求定义的本发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号