使用命名域网络的自适应比特率系统架构的制作方法

文档序号:11293402阅读:193来源:国知局
使用命名域网络的自适应比特率系统架构的制造方法与工艺

本公开涉及自适应比特率系统架构。更具体地,本发明涉及用于以自适应比特率系统架构向客户端设备提供数字视频资产的方法和系统。



背景技术:

自适应比特率(abr)流架构可以动态地向客户端设备提供数字视频资产(例如,电影、视频等)的不同表示(例如,不同的比特率)。例如,数字视频资产可以具有在分辨率(例如,1080p、720p、480p等)、编码质量(例如,量化、运动补偿)和/或帧速率方面不同的多种表示,这可能产生一系列渲染视频质量。abr系统架构可以将流式视频的每个版本划分成更小尺寸的片段(例如,5秒长、1分钟长的片段等)。基于可用于客户端设备的带宽的变化,可以向客户端设备提供来自数字视频资产的不同表示的片段。客户端设备可以最初具有低带宽,并且abr系统架构可以最初向客户端设备提供来自数字视频资产的低质量表示的片段。如果客户端设备的带宽增加,则abr系统架构可以开始向客户端设备提供更高质量表示的片段。类似地,如果带宽降低,则abr系统架构可以切换到可以在较低带宽下传送的较低质量表示。

附图说明

为了使本公开可以被本领域普通技术人员理解,可以通过参考一些说明性实现的方面来进行更详细的描述,其中一些在附图中示出。

图1是示出了根据一些实施例的数字视频资产的表示的框图。

图2是示出根据一些实施例的图的框图。

图3是示出根据一些实施例的示例清单文件的图示。

图4是示出根据一些实施例的系统架构的框图。

图5是根据一些实施例的向客户端设备提供帧的方法的流程图。

图6是根据一些实施例的播放数字视频资产的方法的流程图。

图7是根据一些实施例的调整数字视频资产的回放的方法的流程图。

图8是根据一些实施例的计算设备的框图。

图9是根据一些实施例的计算设备的框图。

具体实施方式

这里描述了许多细节,以便提供对附图中示出的说明性实现的透彻理解。然而,附图仅示出了本公开的一些示例性方面,因此不被认为是限制性的。本领域普通技术人员将从本公开内容中理解,其它有效方面和/或变体不包括本文所描述的所有具体细节。此外,公知的系统、方法、组件、设备和电路没有详细描述,以免不必要地模糊本文描述的实现的更相关的方面。

概述

本文公开的各种实现包括用于以自适应比特率系统架构向客户端设备提供数字视频资产的装置、系统和方法。例如,在一些实现中,一种方法包括获得数字视频资产的多个表示。多个表示可以包括多个视频帧。该方法还包括产生第一数据,第一分组括指示多个帧的时间依赖性和帧解码依赖性的数据。帧解码依赖性可以包括数字视频资产的多个表示之间的多个切换点。该方法还包括从第一计算设备接收对数字视频资产的第一表示的请求,并且基于该请求将第一数据发送到第一计算设备。

在其他实现中,一种方法包括向第一计算设备发送对数字视频资产的多个表示中的第一表示的请求。多个表示可以包括多个帧。该方法还包括基于该请求接收包括指示多个帧的时间依赖性和帧解码依赖性的数据的第一数据。帧解码依赖性可以包括数字视频资产的多个表示之间的切换点。

具体说明

通常,abr系统架构使用域名系统(dns)查找、超文本传输协议(http)和传输控制协议(tcp)来向客户端设备提供数字视频资产的表示。当tcp片段丢弃或丢失时,tcp会强制顺序传送和串行化重传。此外,tcp不容纳tcp分组的多目的地传送(在ip协议架构中通过使用多播可以)。与简单的分组传输相比,使用http限制了由于http事务的高成本而可能请求的片段的粒度。例如,不是请求数字视频资产的特定帧,客户端设备可以被限制为请求数字视频资产的片段(例如,可能包括数十或数百帧的多个第二片段)。

信息中心网络(icn)系统架构越来越受欢迎。icn系统架构的例子包括命名数据网络(ndn)系统架构和内容中心网络(ccn)系统架构。使用基础icn系统架构(例如,ndn、ccn等)的abr视频系统架构可以允许客户端设备以更小的粒度请求数字视频资产(例如,可以允许客户端设备请求数字视频资产的特定帧),因为请求帧的事务成本可能小于http事务的成本。

在一些实施例中,abr系统架构可以使用ndn系统架构。在ndn系统架构中,消费者(例如,诸如膝上型计算机、智能电话等的客户端设备)可以发送按名称请求一段数据的兴趣分组。兴趣分组可以沿着路径被路由到数据的生成者(例如,服务器计算机),并且生成器可以沿着反向路径向消费者发送数据分组(例如,ndn数据对象)。生成者可以生成指示数字视频资产的帧之间的时间依赖性和帧解码依赖性的数据(例如,可以生成图形)。当消费者请求数字视频资产时,生成者可以将数据传送给消费者。ndn系统架构还可以允许abr系统架构减少拥塞和/或带宽使用,因为路由器可以缓存数据并且还可以向消费者提供所请求的数据。ccn架构还可以使用兴趣分组(例如,ccn兴趣分组)和名称(例如,ccn名称)来获取数据(例如,ccn数据对象)。

在一些实施例中,图形可以允许消费者逐帧改进和/或优化数字视频资产的回放。例如,消费者可以首先请求较高重要性的帧(例如,对渲染视频的质量贡献比其它帧更多的帧),以避免在数字视频资产的回放中的解码错误和停顿。当消费者无法获取(例如,请求和接收)针对数字视频资产的一部分的所有帧时,这也可以允许错误隐藏而不是停顿。例如,可以首先取出包围图像组(gop)的两个i帧,然后是p帧,然后是b帧。如果消费者无法获取一个或多个b帧,则消费者仍然可以使用i帧和p帧继续回放数字视频资产(例如,使用接收到的i帧和p帧)。另外,如果在获取帧中存在错误(例如,帧被破坏或未被接收),则消费者可以针对特定帧重新请求(例如,重新发送兴趣分组),而不是请求数字视频资产的整个片段(例如数十或数百个帧)。在一个实施例中,该图形还可以减少生产者的处理负荷量。

虽然本公开可以指代ndn系统架构,但是应当理解,ndn系统架构仅仅是可以用于abr系统架构的示例性架构。其他实施例可以在abr系统架构中使用其他类型的系统架构(例如,ccn、pursuit、netlnf等),并且本文描述的示例、实现和/或实施例可以与其他类型的系统架构一起使用。

图1是示出了根据一些实施例的数字视频资产100的表示110、120和130的框图。数字视频资产100可以是帧的n×m矩阵,其中“n”是每个表示110、120和130中的帧数,其中m是表示的数量。例如,如果每个表示110、120和130中存在1000个帧,则数字视频资产100可以是1000×3帧矩阵。数字视频资产的示例可以包括电影、体育视频、新闻广播、音乐和音乐会视频,以及各种其他类型的电视节目、在线视频、流媒体视频等。

如上所述,表示110、120和130可以是数字视频资产100的不同版本。表示110、120和130可以具有不同的视频质量度量。例如,表示110可以以比表示120更高的比特率被编码,并且表示120可以以比表示130更高的比特率进行编码。在另一示例中,表示110可以具有比表示120更高的分辨率(例如,以像素为单位),表示120可以具有比表示130更高的分辨率。视频质量度量(在数字视频资产100的表示110、120和130之间可能不同)的其他示例包括但不限于:帧的分辨率、比特率、帧的锐度(例如,帧中的细节量)、帧中的噪声量、帧的颜色范围(例如帧中的颜色量)等。表示110包括帧111a至111x,表示120包括帧121a至121x,并且表示130包括帧131a至131x。帧111a至111x、121a至121x和131a至13x可以包括帧内编码帧(i帧)、预测帧(p帧)和双向预测帧(b帧)。

在一个实施例中,帧111a至111x、121a至121x以及131a至131x可以在时间上同步。例如,每个帧可以与表示时间戳(pts)或电影电视工程师协会(smpte)时间码相关联。帧111a、121a和131a的pts可以相同,111b、121b和131b的pts可以相同,111c、121c和131c的pts可以相同,等等。

数字视频资产100可以包括在abr系统/架构中。abr系统/架构可以允许客户端设备在数字视频资产100的表示110、120和130之间切换。例如,数字视频资产100可以具有高质量(例如,1080p质量)的表示、中等质量的表示(例如720p)和低质量(例如,320p质量)的表示。客户端设备可以在切换点150处在不同表示110、120和130之间切换。切换点150可以是客户端设备可以被允许从一个表示切换到另一表示的帧。一种类型的切换点可以是切换帧。切换帧可以是可以依赖于来自数字视频资产的不同表示的帧的数字视频资产的帧(例如,可以使用来自数字视频资产的不同表示的帧来对切换帧进行解码)。另一种类型的切换点可以是瞬时解码器刷新(idr)帧。idr帧可以是指示idr帧之后的帧(例如,在idr帧之后若干pts的帧)不依赖于idr帧之前的帧的i帧的类型。另一种类型的切换点可以是p帧。例如,客户端设备可以在第二表示中的连续p帧处从第一表示切换到第二表示。

在一个实施例中,帧111a至111x、121a至121x和131a至131x中的每一个可以存储在ndn数据对象中。例如,帧111a可以存储在第一ndn数据对象中,帧131a可以存储在第二ndn数据对象中,等等。在另一个实施例中,帧111a到111x、121a到121x和131a到131x中的一个或多个可以存储在多个ndn数据对象中(例如,跨多个ndn数据对象划分)。例如,帧121a可以大于ndn数据对象的大小(例如,有效载荷)。帧121a可以被划分为多个块(例如,多个段、部分、片段等),并且帧121a的每个块可以存储在ndn数据对象中。

在一个实施例中,每个ndn数据对象(例如,包括帧或帧的块的每个ndn数据对象)可以具有可用于识别和/或引用ndn数据对象的名称(例如,可用于识别和/或引用ndn数据对象中的帧或帧的块)。ndn数据对象的名称对于abr视频系统架构可能是唯一的。ndn数据对象的名称可以具有分层结构,并且可以包括多个分部或部分。用于ndn数据对象的名称的分部或部分可以是由分隔符(例如,用于分隔或描述名称的分部或部分的文本或值)分隔的任何值(例如,二进制字符串/值、字母数字值)。ndn对象的名称也可以称为ndn名称。

在一个实施例中,ndn数据对象的名称的一部分可以包括名称前缀。名称前缀可以是用于识别数字视频资产的信息(例如,文本)。例如,名称前缀可以指示生成数字视频资产的工作室、导演、演员、广播数字视频资产的频道(例如,电视频道)、数字视频资产的标题(例如,电影的标题)、数字视频资产的季(例如,电视情景喜剧的季)、数字视频资产的剧集等中的一个或多个。在另一个实施例中,ndn数据对象的名称的一部分可以包括表示指示符。表示指示符可以是用于标识包括由该名称标识的帧的数字视频资产的表示的信息。表示指示符的示例包括但不限于“1080p”、“720p”、“hq”、“lq”、“hd”、“sd”等。在另一实施例中,ndn数据对象的名称的一部分可以包括帧序列。帧序列可以是用于指示表示内的帧的顺序的信息。例如,帧序列可以是数字或整数(例如,1,2,3…2335等)。在另一示例中,帧序列可以是时间戳或时间码,例如smpte时间码或pts。

在一个实施例中,ndn数据对象的名称的一部分可以包括块号。如上所述,表示的帧可以大于ndn数据对象的大小(例如,有效载荷),并且该帧可以被划分(例如,分割)成多个块。块号可以是用于标识帧的不同块的信息。例如,块号可以是数字(例如,整数)。在另一个实施例中,ndn数据对象的名称的一部分可以包括帧或帧的块的内容的散列(例如,加密散列)。例如,可以使用散列函数(例如,sha-1、md5等)在帧或帧的块上生成和/或获得散列。散列可以允许ndn对象的名称自我认证(例如,ndn对象的内容可以通过使用包括散列的名称的部分来验证)。在一个实施例中,用于帧的不同块的散列也可以被包括为帧的帧信息的一部分。

应当理解,当为ndn对象(包括帧和/或帧的块)生成名称时,可以使用各种模式和/或格式。这里描述的名称和/或名称的部分是示例,并且其他实施例可以使用其他方案和/或格式来命名ndn对象(例如,命名帧或帧的块)。

图2是示出根据一些实施例的图200的框图。如上面结合图1所讨论的,数字视频资产可以包括多个表示(例如,数字视频资产100包括表示110、120和130)。在一个实施例中,图200可以使用图200的节点来代表数字视频资产的帧。该图可以包括n×m个节点数,其中n是数字视频资产的表示中的帧数,m是数字视频资产中的表示的数量。图200中的每个节点可以表示来自数字视频资产的帧(例如,每个节点可以与数字视频资产中的帧相关联)。例如,参考图1,节点211a至211x代表表示110的帧111a至111x,节点221a至221x代表表示120的帧121a至121x,并且节点231a至231x代表表示130的帧131a至131x。图200还包括节点211a至211x、221a至221x以及231a至231x之间的弧。弧可以表示数字视频资产的帧之间的时间依赖性和帧解码依赖性(如下面更详细地讨论的)。弧也可以称为边缘或线。在一个实施例中,图200是非循环有向图(有向图)。应当理解,在其他实施例中,可以使用其他类型的图、数据表示和/或数据结构来表示帧、时间依赖性和/或帧解码依赖性。

节点211a到211x、221a到221x以及231a到231x可以包括关于各个帧的附加信息和/或数据。关于各个帧的附加信息和/或数据可以被称为帧信息。例如,参考图1,节点211a可以包括关于帧111a的信息,节点211b可以包括关于帧111b的信息,等等。在一个实施例中,帧信息可以包括以字节为单位的帧的总大小(例如,帧的总存储大小)。例如,参考图1,节点211a的帧信息可以指示帧111a是4096字节。应当理解,在其他实施例中,可以使用其他单位(例如,千字节、兆字节等)来表示帧的大小(例如,存储大小)。

在另一个实施例中,帧信息可以包括帧的重要性级别。帧的重要性级别可以指示帧相对于数字视频资产中的其他帧的重要性。例如,如上所述,数字视频资产中的帧可以是i帧、p帧或b帧。i帧可被认为比p帧和b帧更重要。p帧可以被认为比b帧更重要。帧的重要性级别可以是数字、文本、字母数字等。例如,值“1”可以指示帧具有高级别的重要性(例如,i帧),值“2“可以指示帧具有中等级别的重要性(例如,p帧),并且值”3“可以指示帧具有低级别的重要性(例如,b帧)。在其他实施例中,可以存在任何数量的重要性级别(例如,6个重要性级别、10个重要性级别)。

在一个实施例中,帧信息可以包括一个或多个视频质量度量。一个或多个视频质量度量可以指示帧的视频质量。例如,视频质量度量可以指示帧的分辨率、比特率、帧的锐度(例如,帧中的细节量)、帧中的噪声量、帧的颜色范围(例如,帧中的颜色量)等。一个或多个视频质量度量还可以被称为视频质量度量群组,视频质量度量集合或视频质量度量向量。

在一个实施例中,图200可以表示数字视频资产的表示中的帧的时间依赖性(例如,帧的顺序)。例如,参考图1,图200可以表示表示110内的帧111a至111x的顺序,表示120内的帧121a至121x的顺序,以及表示130内的帧131a至131x的顺序。数字视频资产的帧的时间依赖性使用节点之间的实弧(例如,实线或实边)来表示。例如,参考图1,节点221b和221c之间的实弧可以指示帧121b在帧121c之后(例如,121b显示在帧121c之后)。

在另一个实施例中,图200可以表示数字视频资产的表示中的帧的帧解码依赖性。帧解码依赖性可以指示用于解码帧的帧间依赖性。例如,p帧可以依赖于先前的i帧以便被正常解码(例如,可以使用先前的i帧来解码p帧)。图200中的虚线弧可以表示数字视频资产的帧的帧解码依赖性。虚线弧(例如线)可以指示哪些帧是帧的可能后继。例如,参考图1,帧111a(由节点211a表示)可以是i帧,并且帧111b(由节点211b表示)可以是依赖于帧111a来进行正常解码的b帧。节点211a和211b之间的虚线弧可以指示帧111b取决于帧111a,并且帧111b是帧111a的可能后继。在一个实施例中,如果第一帧可以使用第二帧进行解码,则第一帧可以是第二帧的可能后继。在另一个实施例中,如果第一帧可以在不使用第二帧的情况下对进行解码,则第一帧可以是第二帧的可能后继。

在一个实施例中,帧解码依赖性可以指示数字视频资产中的切换点。一种类型的切换点可以是切换帧。切换帧可以是可以依赖于来自数字视频资产的不同表示的帧的数字视频资产的帧。例如,参考图1,帧111d可以是切换帧。帧111d可以使用帧111c(由节点211c表示)、帧121c(由节点221c表示)或131c(由节点231c表示)来解码。多个虚线弧从节点211c、221c和231c导向节点211d,因为帧111d可以是切换帧,因此可以是帧111c、121c和131c的后继帧。通向节点211d的多个虚线弧也可以指示帧111d是切换帧。

另一种类型的切换点可以是瞬时解码器刷新(idr)帧。例如,参考图1,帧111j(由节点211j表示)、帧121j(由节点221j表示)和帧131j(由节点231j表示)可以是idr帧。具有在帧111j、121j和131j的pts之后的pts的帧可以不依赖于帧111j、121j和131j之前的帧,因为帧111j、121j和131j可以是idr帧。多个虚线弧导向节点211j、221j和231j,因为帧111j、121j和131j可以是idr帧,并且因此可以是前面帧的后继帧(例如,帧111j可以是帧111i、121i和131i的后继帧)。通向节点211j、221j和231j的多个虚线弧可以指示帧111j、121j和131j是idr帧。

另一类型的切换点可以是p帧。例如,如上所述,数字视频资产中的帧可以在时间上同步。在连续p帧处从第一表示的p帧切换到第二表示可能导致数字视频资产的回放的视频质量下降或降低(即使从低切换到高的整体视频质量切换表示)。例如,连续p帧(例如,切换点)可能不包括足够的数据来解码第二表示的帧。视频质量的这种降低可以通过用质量损失度量来标记虚线弧来指示。如果客户端设备在p帧处(例如,在切换点处)在表示之间切换,则质量损失度量可以是指示视频质量的下降量一个或多个值。例如,质量损失度量可以是1到10量级的数字,其中10表示高视频质量下降量,1表示低视频质量下降量。参考图1,帧121d(由节点221d表示)可以是第一表示(例如,表示120)的p帧,并且帧111g(由节点211g表示)和131g(由节点231g表示)可以是来自不同表示(例如,表示110和130)的连续p帧。如果客户端设备切换到表示110,则从节点221d到211g的虚线弧被标记为值“3”,以指示视频质量的下降量。如果客户端设备切换到表示130,从节点221d到231g的虚线弧被标记为值“5”以指示视频质量的下降量。

在其他实施例中,图200可以以各种方式指示帧解码依赖性。例如,图200通过使用虚线弧来指示帧解码依赖性,以指示哪些帧是给定帧的可行后继(例如,可行后继帧)。因此,虚线弧(表示帧解码依赖性)向前或向下。在另一示例中,图200可以指示给定帧取决于哪些帧(例如,哪些帧用于解码给定帧)。因此,虚线弧可以向后(例如,向上)到先前的帧(图中未示出)。

在一个实施例中,数字视频资产可以是实况事件(例如,实况数字视频资产)的数字视频资产。例如,在实况事件正在发生或正在进行时,可以更新数字视频资产(例如,可以添加帧和/或表示)。在一个实施例中,图200可以随事件发生而被更新。例如,实况事件可能是新闻发布会。随着新闻发布会进行,abr系统架构可以周期性地(例如,每几秒钟、几分钟等)更新图200。在另一个实施例中,abr系统架构可以为实况事件的不同部分创建不同的图。例如,abr系统架构可以每隔实况事件的几秒钟、几分钟等创建不同的图。不同的图可以表示在实况事件的相应部分中的帧的时间依赖性和/或帧解码依赖性。

图3是示出根据一些实施例的示例清单文件300的图示。如上所述,abr系统架构可以为abr系统架构的数字视频资产生成图(例如,图2所示的图200)。该图可以指示数字视频资产中的帧的时间依赖性(例如,回放顺序),并且可以指示数字视频资产中的帧的帧解码依赖性。abr系统架构可以使用一个或多个清单文件来向客户端设备提供指示该图的数据。例如,清单文件可以包括数字视频资产中的帧的列表(例如,数字视频资产的每个表示中的帧的列表),并且可以指示数字视频资产中的帧的时间依赖性和帧解码依赖性。

如图3所示,清单文件300包括部分310和部分320。在一个实施例中,部分310包括数字视频资产的每个帧的条目(例如,行)。条目(例如行)包括ndn对象的名称(例如,ndn名称),其包括数字视频资产的帧和/或帧的块。例如,部分310包括名称为“/studio/movies/movie_1/1080p/00:05:25:02/2”的条目,其可以在00:05:25(例如5分25秒)时标识电影“movie_l”的帧2。包括在部分310中的名称还可以标识数字视频资产的帧(例如,数字视频资产的不同表示中的帧)。如上所述,当数字视频资产的帧的大小(例如,以字节为单位的大小)大于ndn对象的大小(例如,大于ndn对象的有效负载)时,ndn名称还可以包括标识帧的不同块的部分(图3中未示出)。同样如上所述,ndn名称可以可选地包括可以用于验证和/或认证ndn数据对象的内容(例如,用于验证和/或认证帧或帧的块)的散列(例如,加密散列)。

在一个实施例中,每个条目还包括用于数字视频资产的帧的帧信息。如上所述,帧的帧信息可以包括帧的大小(例如,以千字节为单位的字节大小)、帧的重要性级别、一个或多个视频质量度量(例如,视频质量度量群组、集合或向量)和一组散列(例如,加密散列)中的一个或多个。该组散列可用于验证和/或认证帧的块。该组散列可以是以块310中列出的块的顺序。如图3所示,每个条目包括数字视频资产的帧的名称和该帧的帧信息。例如,部分310的第二条目(例如,第二行)包括标识电影“movie_l”在时间00:05:25(例如5分25秒)的帧2的名称“/studio/movies/movie_l/1080p/00:05:25:02/2”。电影“movie_l”在时间00:05:25的帧2与帧信息“(4578,3,[x,y,z],[h1,h2])”相关联。数字“4578”可以指示帧的大小为4578字节。数字“3”可以指示帧的重要性级别(例如,可以指示帧的重要性低)。值[x,y,z]可以指示帧的视频质量度量(例如,视频质量度量x可以是分辨率,视频质量度量y可以是锐度,视频质量度量z可以是颜色数量等)。值[h1,h2]可以是电影“movie_l”在时间00:05:25的帧2的块的散列值。例如,该帧可以被分成两个块。h1可以是第一块的散列,h2可以是第二块的散列。

在一个实施例中,清单文件300还可以包括指示数字视频资产的帧的时间依赖性(例如,基于帧的pts的帧的时间顺序)的部分(图3中未示出)。例如,数字资产中的帧的顺序可能不基于部分310中的名称来确定(例如,部分310中的帧的名称可能不以时间顺序列出)。该部分可以包括用于指示数字视频资产的帧的时间依赖性的文本和/或其他值。指示时间依赖性的部分也可以使用帧的标识符。例如,该部分可以包括以下文本“a->b”。这可以指示具有标识符b的帧是具有标识符a的帧之后的下一连续帧。可以对标识符使用各种值。例如,标识符可以是部分310中的名称的一部分。在另一示例中,部分310中的每个名称可以与索引值相关联(例如,第一名称与索引值“1”相关联,第二名称与索引值“2”相关联,等等)。索引值(例如,数字)可以用于指示帧的时间顺序。

如图3所示,清单文件300不包括用于指示数字视频资产的帧的时间依赖性的部分,因为可以基于部分310中的名称来确定帧的时间顺序。例如,部分310中的名称包括指示帧的pts的部分(例如,名称的部分包括格式为hh:mm:ss:ff的pts,其中hh是小时,mm是分钟,ss是秒,ff是帧)。可以基于名称中的pts来确定帧的时间依赖性(例如,时间顺序)。

部分320包括用于数字视频资产的帧的每帧解码依赖性的条目(例如,行)。例如,参考图2,部分320可以包括针对图200中的每个虚线弧和点线弧的条目。如图3所示,一些条目具有指示帧y是帧x的可能后继帧的第一格式“x->y”。其他条目可以具有第二格式“x->y(z)”。第二格式可以指示帧y是帧x的可能后继帧,并且可以指示与弧相关联的质量损失度量(例如,“z”)。例如,参考图2,弧可以标识不同表示的两个连续p帧之间的切换点。弧可以包括质量损失度量,以指示如果回放切换到包含帧y的表示时的视频质量的下降量。在一个实施例中,部分320中的条目可以使用包括在部分310中的帧的枚举。枚举可以是隐式的(例如,部分310中的条目的词法顺序可以用于标识条目的帧)。例如,第一条目可以枚举为“1”,第二条目可以枚举为“2”,等等。枚举也可以是显式的。例如,部分310中的每个条目可以包括用于标识条目的额外字段(例如,索引号或其他标识符)。

图4是示出根据一些实施例的系统架构400的框图。系统架构包括媒体服务器410、数据存储420、网络405、网络406、路由器430和客户端设备450。系统架构400可以是abr系统架构。如上所述,abr系统架构可以允许客户端设备在数字视频资产的回放期间在数字视频资产的不同表示切换(例如,基于带宽的变化切换到较高质量的表示或较低质量的表示)。系统架构400也可以是ndn系统架构。例如,系统架构400可以使用兴趣分组来请求数据,并且可以使用数据对象(例如,ndn数据对象)来发送所请求的数据。媒体服务器410可以被称为生成器,并且客户端设备450可以被称为消费者或请求者

媒体服务器410可以是一个或多个计算设备(例如机架安装服务器、路由器计算机、服务器计算机、个人计算机、大型计算机、智能电话、个人数字助理(pda)、膝上型计算机、平板计算机,台式计算机等)。客户端设备450还可以是计算设备(例如,个人计算机、智能电话、个人数字助理(pda)、膝上型计算机、平板计算机、台式计算机等)。网络405和/或网络406可以包括公共网络(例如,因特网)、专用网络(例如,局域网(lan)或广域网(wan))、有线网络(例如以太网)、无线网络(例如,802.11网络或wi-fi网络)、蜂窝网络(例如,长期演进(lte)网络)、路由器、集线器、交换机、服务器计算机中的一个或多个和/或其组合。数据存储420可以是存储器(例如,随机存取存储器)、高速缓存、驱动器(例如,硬盘驱动器)、闪存驱动器、数据库系统或能够存储数据的其他类型的组件或设备。数据存储420还可以包括也多个存储组件(例如,多个驱动器或多个数据库),其还可以跨越多个计算设备(例如,多个服务器计算机)。数据存储420包括数字视频资产421,数字视频资产421包括表示422。数据存储420还包括图形数据423。图形数据423可以是指示数字视频资产421中的帧的时间依赖性和/或帧解码依赖性的数据。例如,图形数据423可以包括图3所示的清单文件300和/或图2所示的图200的其他表示。在一个实施例中,媒体服务器410可以直接耦合到数据存储420。在另一个实施例中,媒体服务器可以经由网络405耦合到数据存储420。

媒体服务器410包括视频资产模块415。数字视频资产421包括多个表示422。在一个实施例中,视频资产模块415可以生成针对数字视频资产421的帧(例如,针对数字视频资产421的表示422中的帧)的ndn对象。例如,视频资产模块415可以为数字视频资产421的每一帧生成ndn对象。在另一示例中,视频资产模块415可以将数字视频资产421的帧划分成块,并且可以针对每个块生成ndn对象(如上面结合图1-3所讨论的)。视频资产模块415还可以为每个ndn对象生成名称(例如,ndn名称)(如上面结合图1-3所讨论的)。在一个实施例中,视频资产模块415可以是视频编码器的一部分,并且视频编码器可以产生和/或生成数字视频资产421(例如,可以生成不同的表示422)。在另一个实施例中,视频资产模块415可以与视频编码器分开。

视频资产模块415可以分析数字视频资产421的表示422。视频资产模块415可以识别数字视频资产421的帧的时间依赖性和/或帧解码依赖性。例如,视频资产模块415可以分析数字视频资产421的帧,并且可以确定帧是否取决于数字视频资产421中的其他帧(例如,帧是否取决于视频资产412中的其他帧以被正常解码)。在另一示例中,视频资产模块415可以分析用于帧的pts以识别帧的时间依赖性(例如,时间顺序)。

在一个实施例中,视频资产模块415可以生成可以图(例如,图2所示的图200),该图可以表示数字视频资产421的帧、时间依赖性和/或帧解码依赖性的形帧(如上文结合图1-3所讨论的)。视频资产模块415还可以生成包括和/或表示图的清单文件(如上面结合图1-3所讨论的)。视频资产模块414可以从客户端设备450(例如,从媒体应用451)接收针对一个或多个表示422的请求(例如,兴趣分组),并且视频资产模块414可以向客户端设备450提供清单文件。客户端设备450可以发送针对表示422的帧的额外请求(例如,额外的兴趣分组),并且基于从客户端设备450接收到的针对帧的请求,视频资产模块415还可以向客户端设备450发送ndn数据对象(其可以包括帧或帧的块)。

客户端设备450包括媒体应用451。媒体应用451可以是应用(例如,web浏览器、嵌入式媒体播放器、独立应用),其允许用户查看或消费数字视频资产。如上所述,媒体应用451可以请求数字视频资产421的表示422(例如,可以发送兴趣分组以请求表示422)。媒体应用451可以基于该请求从视频资产模块415接收图(例如,清单文件或其他数据)。媒体应用451可以使用和/或包括缓冲器(例如,数据缓冲器或高速缓存)来存储数字视频资产的帧。缓冲器可以允许媒体应用451在媒体应用451获取(例如,请求和接收)数字资产的帧的同时,连续回放数字视频资产。例如,如果在一个或多个网络405和406中存在拥塞(例如,发送/接收数据的延迟和/或带宽的减少),则媒体应用451可以使用存储在缓冲器中的帧继续回放,直到拥塞降低。如果缓冲器中没有帧,并且媒体应用451不能(例如,暂时不能)获取额外帧,则数字视频资产的回放可能会停顿(例如,回放可能会暂停或不顺畅)。

在一个实施例中,媒体应用451可以基于该图、缓冲器中的可用空间量、客户端设备450的当前带宽使用量和/或客户端设备450的估计带宽使用中的一个或多个,来调整数字视频资产的回放。例如,媒体应用451可以确定客户端设备450的估计带宽量(例如,确定客户端设备450在一段时间内可能具有多少带宽)。媒体应用451可以分析图和缓冲器,并且可以基于所估计的带宽量和缓冲器中的可用空间量来标识要请求的一组帧(如下面更详细地讨论的)。这可以允许媒体应用451以帧的粒度(例如,逐帧)而不是以较粗的粒度(例如,以几秒片段的粒度)来管理缓冲器和数字视频资产的回放。在一个实施例中,媒体应用451可以在调整数字视频资产的回放时使用一个或多个准则。一个准则可以是缓冲区应该保持非空,因为如果缓冲区为空,数字视频资产的回放可能会停顿。另一个准则可以是客户端设备450所使用的当前或瞬时带宽不应该太大(为了防止客户端设备450在媒体服务器410不实施带宽/拥塞控制时使用太多带宽)。另一个准则可以是应遵循帧的时间依赖性和/或帧依赖性以允许数字视频资产正常播放。另一个准则可以是媒体应用不能溢出缓冲区(例如,不能获取比缓冲区可以存储的更多的帧)。

在一个实施例中,媒体应用451可以通过分析由客户机设备450在间隔/时间段上使用的带宽量(例如,获取的帧量)来确定(例如,计算)估计带宽。例如,媒体应用451可以通过确定获取一个或多个帧的获取延迟(例如,往返时间(rtt))(例如,请求和接收一个或多个帧所花费的时间)来确定估计带宽。当媒体应用451首先开始回放数字视频资产并获取一些初始帧时,媒体应用451将在时间间隔内没有获取的帧。例如,如果时间间隔为10秒,并且媒体应用451刚刚开始回放数字视频资产3秒(例如,仅获取帧达3秒),则时间间隔尚未达到。媒体应用451可以使用初始帧的获取延迟来确定初始估计带宽。由于时间间隔尚未过去,初始估计带宽可能不准确和/或可能波动(例如,可能会有噪音)。然而,媒体应用451仍然能够继续回放数字视频资产并且防止解码错误,因为媒体应用451能够使用该图来获取特定帧(例如具有较高重要性级别的帧)。在媒体应用451已经获取帧达该时间间隔之后,估计带宽可能更稳定和/或准确,这是因为带宽的暂时变化将不太影响估计带宽。在一个实施例中,可以周期性地更新估计带宽。例如,每次获取帧时或以规律的间隔(例如,每2秒、每5秒、每分钟等),可以更新(例如,重新计算)估计带宽。

在一个实施例中,媒体应用451可以基于估计带宽和缓冲器中的可用空间量(例如,空闲空间量)来分析图。媒体应用可以基于估计带宽和可用空间量来标识图的子集或子图(例如,可以修剪图)。媒体应用451可以标识与在数字视频资产的当前播放时间相关联的节点(例如,正在被观看的数字视频资产的当前点)处开始的图的子集(例如,子图)。例如,参考图2,媒体应用451当前可能正在显示由节点211d表示的帧。媒体应用451可以标识从节点211d、221d和231d开始的图200中的节点的子集250。子集250(例如,子图)的大小可以基于估计带宽和缓冲器中的可用空间量中的一个或多个。

在一个实施例中,媒体应用451可以基于图的子集来标识提供最佳视频质量的一组帧。例如,如果估计带宽较低,则媒体应用451可以使用图的子集来标识来自较低质量表示的帧(例如,可以在切换点处切换到较低质量表示),因为估计带宽可能不足以从更高质量的表现中获取帧,同时保持缓冲器非空。在另一示例中,如果估计带宽较高并且缓冲器中的可用空间量较高,则媒体应用451可以使用图的子集来标识来自更高质量表示的帧(例如,可以在切换点处切换到更高质量表示),因为估计带宽足以获取更高质量表示的更大帧,并且缓冲器具有足够的空间来存储更大的帧。在另一示例中,如果估计带宽低并且缓冲器中的可用空间量较低,则媒体应用451可以使用图的子集,基于帧的重要性来标识一组帧(例如,可以首先获取包围图像组(gop)的两个i帧,然后获取p帧)。

应当理解,可以使用各种方法、算法、等式和/或功能来基于图的子集来标识提供最佳视频质量的一组帧。其他实施例可以使用方法、算法、等式和/或功能的任何组合来基于图的子集来标识提供最佳视频质量的一组帧。

在一个实施例中,媒体应用451可以基于帧的重要性级别和帧的时间顺序来获取使用图的子集标识的帧。例如,媒体应用可以以时间顺序获取具有高重要性级别的帧(例如,i帧),随后是以时间顺序具有中等重要性级别的帧(例如,p帧),随后是以时间顺序具有低重要性级别的帧(例如,b帧)。媒体应用451还可以获取非连续顺序的帧(例如,可以获取非时间顺序的帧)。

在一个实施例中,媒体应用451可以周期性地重新标识图的子集。例如,媒体应用451可以每隔几秒、每分钟等来标识图的子集。在另一示例中,媒体应用451可以在每次获取帧时标识图的子集。附加子集还可以从数字视频资产的当前播放时间开始(例如,当播放时间进行时,子集可以在图上向前或向下滑动),并且附加子集的大小也可以基于估计带宽和缓冲器中的可用空间。

在一个实施例中,当媒体应用451获取帧(例如,从媒体服务器410请求和/或接收帧)时,可能发生错误。一种类型的错误可能是所请求的帧不可用。例如,媒体服务器410可能不运作(例如,故障)。另一种类型的错误可能是媒体服务器410可能不可达(例如,没有到媒体服务器410的路由)。另一种类型的错误可能是由于网络405和/或406上的拥塞而无法获取所请求的帧。错误可能导致对帧的请求(例如,对ndn对象的请求)超时。例如,如果在一段时间内没有接收到所请求的帧,则对帧的请求可能会超时。当帧出现错误时,媒体应用451可以从图中除去与该帧相关联的节点。媒体应用451还可以重新分析该图,以确定数字视频资产的后续帧是否仍可以被解码(例如,数字视频资产是否仍然可以适当地显示给用户)。例如,媒体应用可以重新标识图的子集,并且可以在从图中去除与该帧相关联的节点之后重新标识一组帧。

系统架构400还包括路由器430。路由器430可以是可以在媒体服务器410和客户端设备450之间路由和/或转发数据的通信设备(例如,诸如路由器、交换机等的计算设备)。例如,路由器430可以接收对帧的请求(例如,兴趣分组),并且可以将该请求转发到媒体服务器410。媒体服务器可以接收该请求,并且可以根据该请求将帧(例如,ndn数据对象)发送到客户端设备450。每个路由器430可以包括高速缓存441。如上所述,系统架构400可以是ndn系统架构。ndn系统架构可以允许路由器430将ndn数据对象(例如,帧或帧的块)存储(例如,高速缓存)在它们各自的高速缓存441中。当路由器430接收到来自客户端设备450的针对ndn数据对象的请求,并且路由器430具有存储在其高速缓存441中的ndn数据对象,路由器430可以响应于该请求向客户端设备450发送ndn数据对象,而不是将该请求转发到媒体服务器410。这可以减少由媒体服务器410执行的处理量并且可以减少网络405中的网络拥塞量。在一个实施例中,高速缓存441还可以允许多路径和多目的地路由,而不使用域名系统(dns)查找、负载平衡器和代理。

在一个实施例中,系统架构400可以减少拥塞和/或带宽使用,因为路由器可以缓存数据并且还可以向消费者提供数据。系统架构还可以允许客户端设备450逐帧改进和/或优化数字视频资产的回放。当消费者不能获取(例如,请求和接收)数字视频资产的所有帧或一部分时,这也可以允许错误隐藏而不是停顿。另外,如果在获取帧中存在错误(例如,帧被损坏或未被接收到),则系统架构400可以进一步减少拥塞和/或带宽使用,因为客户端设备450可以重新请求特定帧,而不是请求数字视频资产的整个或部分片段(例如,多个帧)。系统架构还可以减少媒体服务器410的处理负载量,因为媒体服务器可以将是否切换表示以及要请求哪些帧的确定卸载到客户端设备450。另外,媒体服务器410可以处理较少对帧的请求,因为路由器430可以缓存ndn数据对象并且可以直接向客户端设备提供ndn数据对象。

虽然本公开可以参考ndn系统架构,但是应当理解,ndn系统架构仅仅是可以在abr系统架构中使用的示例性架构。其他实施例可以在abr系统架构中使用其他类型的系统架构(例如,ccn、pursuit、netlnf等)。

图5是根据一些实施例的向客户端设备提供帧的方法500的流程图。在一些实现中,方法500可以由视频资产模块(如图4所示)和/或一个或多个计算设备(例如,一个或多个服务器计算机,例如图4所示的媒体服务器410)来执行。简而言之,方法500包括获得数字视频资产的多个表示,产生指示数字视频资产中的帧的依赖性的第一数据,以及将第一数据发送到客户端设备。方法500开始于框505,其中方法500获得数字视频资产的多个表示(例如,获得图1所示的数字视频资产100的表示110、120和130)。在一些实施例中,获得多个表示包括在框506处生成多个ndn对象。例如,方法500可以为数字视频资产中的每个帧生成ndn对象。在另一示例中,方法500可以将每个帧划分成块(例如,帧的部分),并且可以为每个块生成ndn对象。在另一个实施例中,方法500可以为数字视频资产中的每个帧生成ccn对象。在一些实施例中,获得多个表示包括在框507处生成ndn对象的名称。例如,方法500可以为数字视频资产的每个帧生成ndn名称(如上面结合图1-4所讨论的)。在另一个实施例中,方法500可以为数字视频资产中的每个帧生成ccn名称。

方法500可以在框510处生成指示数字视频资产的帧的时间依赖性和帧解码依赖性的第一数据。例如,方法500可以生成包括图的清单文件(例如,图2中所示的图200),该图包括数字视频资产的帧作为节点,并且将时间依赖性和帧解码依赖性表示为节点之间的弧(例如,线或边)。该图可以是非循环有向图。在另一示例中,方法500还可以生成表示和/或包括图的其他数据(例如,其他数据结构或文件)。在一些实施例中,生成第一数据可以包括在框511处标识数字视频资产的帧的时间依赖性。例如,方法500可以分析帧的pts以确定帧的时间顺序。在一些实施例中,生成第一数据可以包括在块512处标识数字视频资产的帧的帧解码依赖性。例如,方法500可以分析数字视频资产的每个帧以确定该帧是否依赖于其他帧以进行正常解码。

方法500可以在框515处从客户端设备接收对数字视频资产的第一表示的请求。例如,参考图4,方法500可以从客户端设备450(例如,从媒体应用451)接收针对数字视频资产的第一表示的请求(例如,兴趣分组)。在框520,方法500可以基于(例如,响应于)对数字视频资产的第一表示的请求,向客户端设备450发送第一数据(例如,包括该图和/或表示该图的其他数据的清单文件)。在框525,方法500可以接收对数字视频资产的一个或多个相应帧的一个或多个请求(如上面结合图1-4所讨论的)。例如,方法500可以接收针对与第一重要性级别相关联的帧的第一组请求(例如,第一组兴趣分组),并且可以接收针对与第二重要性级别相关联的帧的第二组请求。在另一示例中,方法500可以接收针对不以时间呈现顺序的帧(例如,无序的帧)的请求。在另一示例中,方法500可以接收针对来自数字视频资产的不同表示的帧的请求。在框525,方法500基于一个或多个请求将一个或多个所请求的帧发送到客户端设备。

图6是根据一些实施例的播放数字视频资产的方法600的流程图。在一些实现中,方法600可以由媒体应用(例如,图4所示的媒体应用451)和/或一个或多个计算设备(例如,图4所示的客户端设备450)来执行。简而言之,方法600包括请求数字视频资产的第一表示,接收指示数字视频资产中帧的依赖性的第一数据,接收数字视频资产的一个或多个帧,以及调整数字视频资产的回放。方法600开始于框605,其中方法600发送针对数字视频资产的第一表示的请求(例如,发送兴趣分组)。例如,参考图4,媒体应用451可以向媒体服务器410发送对数字视频资产的第一表示的请求。在框610,方法600接收指示数字视频资产的帧的时间依赖性和帧解码依赖性的第一数据。例如,方法600可以接收包括图和/或表示该图的清单文件(如图2和图3所示)的ndn数据对象。

在框615,方法600可以发送针对一个或多个帧的一个或多个请求(例如,一个或多个兴趣分组)。例如,参考图4,媒体应用451可以向媒体服务器410和/或路由器430发送针对一个或多个帧的一个或多个请求。方法600可以在框620接收一个或多个帧(例如,可以接收一个或多个ndn对象,其包括一个或多个帧和/或一个或多个帧的块)。例如,参考图4,媒体应用451可以从媒体服务器410和/或路由器430接收一个或多个帧。在框630,方法600可以基于第一数据来调整数字视频资产的回放。例如,如上面结合图4所讨论的,方法600可以基于媒体应用451可用的缓冲器空间量和针对客户端设备450的估计带宽来标识图的子图。方法600可以基于图的子集来标识提供改善的、更好的和/或最优的视频质量的一组帧(如上面结合图1-4所讨论的)。例如,媒体应用451可以播放数字视频资产的高质量表示。由于客户端设备450的带宽可能减小并且媒体应用可能无法获取高质量表示的较大帧,所以高质量表示的回放可能会停顿或停止。方法500可以通过将回放切换到较低质量的表示和/或首先请求具有较高重要性级别的帧来改进或优化回放。

图7是根据一些实施例的调整数字视频资产的回放的方法700的流程图。在一些实现中,方法700可以由媒体应用(例如,图4所示的媒体应用451)和/或一个或多个计算设备(例如,图4所示的客户端设备450)来执行。简而言之,方法700包括从多个节点标识一组节点,标识与该组节点相关联的一组帧,请求该组帧,以及使用该组帧来播放数字视频资产。在框705,方法700基于当前带宽、估计带宽、媒体应用451使用的缓冲器中的可用空间量以及重要性级别中的一个或多个来从多个节点中标识一组节点(例如,从图200中的节点中标识子集250中的节点,如图2所示)。例如,方法500可以基于估计带宽和缓冲器中的可用空间量来标识与来自不同表示的帧相关联的一组节点。在另一示例中,方法700可以基于估计带宽和缓冲器中的可用空间量来标识与具有较高重要性级别的帧相关联的一组节点。在另一示例中,方法700可以基于估计带宽和缓冲器中的可用空间量来标识与非连续顺序的帧相关联的一组节点。

在框710,方法700可以标识与在块705处标识的一组节点相关联的一组帧。如上面结合图1-5所讨论的那样,该组帧(与该组节点相关联)可以在播放数字视频资产时提供改进的、更好的和/或最优的视频质量。在框715,方法700可以发送针对该组帧的一组请求。例如,方法700可以发送针对该组帧的一组兴趣分组。在框720,方法700可以接收该组帧,并且可以使用该组帧来播放数字视频资产。例如,方法700可以接收包括该组帧或该组帧的块的ndn对象,并且可以使用该组帧来播放数字视频。

图8是根据一些实施例的计算设备800的框图。尽管说明了某些具体特征,但是本领域技术人员将从本公开中理解,为了简洁起见,尚未示出各种其它特征,并且不会模糊本文公开的实施例的更相关的方面。为此,作为非限制性示例,在一些实施例中,计算设备800包括一个或多个处理单元(cpu)802(例如,处理器)、一个或多个输出接口803、存储器806、编程接口808、以及用于互连这些和各种其它组件的一个或多个通信总线804。

在一些实施例中,通信总线804包括互连和控制系统组件之间的通信的电路。存储器806包括诸如dram、sram、ddrram或其它随机存取固态存储器件的高速随机存取存储器;并且可以包括诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备或其它非易失性固态存储设备的非易失性存储器。存储器806可选地包括远离cpu803的一个或多个存储设备。存储器806包括非暂态计算机可读存储介质。此外,在一些实施例中,存储器806或存储器806的非暂态计算机可读存储介质存储包括可选的操作系统830和视频资产模块840的以下程序、模块和数据结构或其子集。在一些实施例中,逻辑和非暂态存储器的组合中包括一个或多个指令。操作系统830包括用于处理各种基本系统服务和执行与硬件相关的任务的过程。在一些实施例中,视频资产模块840可以被配置为获得数字视频资产的表示,生成指示数字视频资产的帧的时间依赖性和帧解码依赖性的第一数据(例如,图或清单文件),将第一数据发送到客户端设备,并向客户端设备发送帧。为此,视频资产模块840包括图模块841、帧模块842和依赖性模块843。

在一些实施例中,依赖性模块843被配置为标识数字视频资产的帧的时间依赖性和/或帧解码依赖性。为此,依赖性模块843包括一组指令843a以及启发式数据和元数据843b。在一些实施例中,图模块841被配置为生成指示数字视频资产的帧的时间依赖性和帧解码依赖性的第一数据(例如,图或清单文件)。图模块841还可以被配置为向客户端设备提供第一数据。为此,图模块841包括一组指令841a以及启发式数据和元数据841b。在一些实施例中,帧模块842可以被配置为接收对一个或多个帧的请求(例如,接收兴趣分组),并且基于请求将一个或多个帧发送到客户端设备。为此,帧模块842包括一组指令842a以及启发式数据和元数据842b。虽然视频资产模块840、图模块841、帧模块842和依赖性模块843被示为驻留在单个计算设备800上,但是应当理解,在其他实施例中,可以使用视频资产模块840、图模块841、帧模块842和依赖性模块843的任何组合。例如,图模块841、帧模块842和依赖性模块843中的每一个可以驻留在分离的计算设备上。

图9是根据一些实施例的计算设备900的框图。尽管说明了某些具体特征,但是本领域技术人员将从本公开中理解,为了简洁起见,尚未示出各种其它特征,并且不会模糊本文公开的实施例的更相关的方面。为此,作为非限制性示例,在一些实施例中,计算设备900包括一个或多个处理单元(cpu)902(例如,处理器)、一个或多个输出接口903、存储器906、编程接口908、以及用于互连这些和各种其它组件的一个或多个通信总线904。

在一些实施例中,通信总线904包括互连和控制系统组件之间的通信的电路。存储器906包括诸如dram、sram、ddrram或其它随机存取固态存储器件的高速随机存取存储器;并且可以包括诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备或其它非易失性固态存储设备的非易失性存储器。存储器906可选地包括远离cpu902的一个或多个存储设备。存储器906包括非暂态计算机可读存储介质。此外,在一些实施例中,存储器906或存储器906的非暂态计算机可读存储介质存储包括可选操作系统930和媒体应用940的以下程序、模块和数据结构或其子集。在一些实施例中,在逻辑和非暂态存储器的组合中包括一个或多个指令。操作系统930包括用于处理各种基本系统服务和执行与硬件相关的任务的过程。在一些实施例中,媒体应用940可以被配置为请求数字视频资产的帧,分析表示数字视频资产的帧的时间依赖性和帧解码依赖性的数据,并且调整数字视频资产的回放。为此,媒体应用940包括调整模块941、带宽模块942和回放模块943。

在一些实施例中,带宽模块942被配置为确定计算设备900的估计带宽和/或当前带宽。为此,带宽模块942包括一组指令942a以及启发式数据和元数据942b。在一些实施例中,调整模块941被配置为基于当前带宽、估计带宽、由媒体应用940使用的缓冲器中的可用空间量以及数字视频资产中帧的重要性级别中的一个或多个来标识节点集合(例如,帧集合)。为此,调整模块941包括一组指令941a以及启发式数据和元数据941b。在一些实施例中,回放模块943被配置为发送针对帧的请求(例如兴趣分组),接收所请求的帧(例如,接收ndn数据对象),以及基于所接收的帧来播放数字视频资产。为此,回放模块943包括一组指令943a以及启发式数据和元数据943b。

虽然媒体应用940、调整模块941、带宽模块942和回放模块943被示为驻留在单个计算设备900上,但是应当理解,在其他实施例中,媒体应用940、调整模块941、带宽模块942和回放模块943的任何组合可以驻留在分离的计算设备上。例如,媒体应用940、调整模块941、带宽模块942和回放模块943可以驻留在分离的计算设备上。

此外,图8和图9更多地是与特定实施例中可能存在的各种特征的功能描述,而不是本文所述的实施例的结构示意图。如本领域普通技术人员所认识到的,单独示出的项目可以组合并且一些项目可以被分离。例如,图8和图9中分别示出的一些功能模块可以在单个模块中实现,并且单个功能块的各种功能可以在各种实施例中由一个或多个功能块来实现。模块的实际数量和特定功能的划分以及它们之间的特征如何被分配将在实施例之间变化,并且可以部分地取决于为特定实施例选择的硬件、软件和/或固件的特定组合。

本公开描述了各种特征,其中没有一个单独的特征独自对本文描述的益处负责。应当理解,本文描述的各种特征可以组合、修改或省略,这对于普通技术人员将是显而易见的。与本文中具体描述不同的其它组合和子组合对于普通技术人员将是显而易见的,并且旨在形成本公开的一部分。本文结合各种流程图步骤和/或阶段描述了各种方法。应当理解,在许多情况下,某些步骤和/或阶段可以组合在一起,使得流程图中所示的多个步骤和/或阶段可以作为单个步骤和/或阶段来执行。此外,某些步骤和/或阶段可以被分解成要分开执行的附加子组件。在一些情况下,步骤和/或阶段的顺序可以重新排列,并且可以完全省略某些步骤和/或阶段。此外,本文描述的方法应被理解为是开放式的,使得也可以执行与本文所示和所述的那些附加的步骤和/或阶段。

本文描述的系统和方法的一些方面可以有利地使用例如计算机软件、硬件、固件或计算机软件、硬件和固件的任何组合来实现。计算机软件可以包括存储在计算机可读介质(例如,非暂态计算机可读介质)中的计算机可执行代码,其在执行时执行本文所述的功能。在一些实施例中,计算机可执行代码由一个或多个通用计算机处理器执行。鉴于本公开,本领域技术人员将理解,可以使用在通用计算机上执行的软件来实现的任何特征或功能也可以使用硬件、软件或固件的不同组合来实现。例如,这样的模块可以使用集成电路的组合在硬件中完全实现。或者或另外,这样的特征或功能可以完全地或部分地使用被设计为执行本文所描述的特定功能而不是通用计算机的专用计算机来实现。

多个分布式计算设备可以代替本文描述的任何一个计算设备。在这样的分布式实施例中,一个计算设备的功能被分布(例如,通过网络),使得在每个分布式计算设备上执行一些功能。

可以参考等式、算法和/或流程图来描述一些实施例。可以使用可在一个或多个计算机上执行的计算机程序指令来实现这些方法。这些方法也可以单独实现为计算机程序产品,也可以作为装置或系统的组件来实现。在这方面,流程图的每个等式、算法、块或步骤及其组合可以由硬件、固件和/或包括体现在计算机可读程序代码逻辑中的一个或多个计算机程序指令的软件来实现。如将理解的,任何这样的计算机程序指令可以被加载到一个或多个计算机上,包括但不限于通用计算机或专用计算机或其他可编程处理装置来产生机器,使得计算机程序指令在计算机或其他可编程处理设备实现等式、算法和/或流程图中指定的功能。还将理解,流程图中的每个等式、算法和/或块及其组合可以由执行指定功能或步骤的特殊目的的基于硬件的计算机系统或专用硬件和计算机的组合来实现可读程序代码逻辑手段。

此外,诸如体现在计算机可读程序代码逻辑中的计算机程序指令也可以存储在可以将一个或多个计算机或其他可编程处理设备引导到的计算机可读存储器(例如,非暂态计算机可读介质)中以特定方式进行功能,使得存储在计算机可读存储器中的指令实现在流程图的块中指定的功能。计算机程序指令还可以被加载到一个或多个计算机或其他可编程计算设备上,以使一系列操作步骤在一个或多个计算机或其他可编程计算设备上执行以产生计算机实现的过程,使得指令其在计算机或其他可编程处理装置上执行提供用于实现等式、算法和/或流程图的块中指定的功能的步骤。

本文描述的方法和任务中的一些或全部可以由计算机系统执行和完全自动化。在一些情况下,计算机系统可以包括通过网络通信和互操作以执行所描述的功能的多个不同的计算机或计算设备(例如,物理服务器、工作站、存储阵列等)。每个这样的计算设备通常包括执行存储在存储器或其他非暂态计算机可读存储介质或设备中的程序指令或模块的处理器(或多个处理器)。本文公开的各种功能可以体现在这样的程序指令中,尽管所公开的功能中的一些或全部可替代地在计算机系统的应用专用电路(例如asic或fpga)中实现。在计算机系统包括多个计算设备的情况下,这些设备可以但不一定位于同一位置。所公开的方法和任务的结果可以通过将诸如固态存储器芯片和/或磁盘的物理存储设备转换成不同的状态来持续存储。除非上下文另有明确要求,否则在整个说明书和权利要求书中,词语“包括”、“包含”等等将以包容性的意义来解释,而不是排他性或全面性的意义;也就是说,在“包括但不限于”的意义上。本文通常使用的“耦合”一词是指可以直接连接或通过一个或多个中间元件连接的两个或多个元件。另外,在本申请中使用时,“本文”、“上文”、“以下”和类似导入的词语均应参照本申请作为整体,而不是本申请的任何特定部分。在上下文许可的情况下,使用单数或复数的上述详细描述中的单词也可以分别包括复数或单数。关于两个或多个项目的列表中的“或”一词,该单词涵盖该单词的所有以下解释:列表中的任何项目,列表中的所有项目以及项目的任何组合在列表中。单词“示例性”在此仅用于表示“用作示例、实例或说明”。本文中描述为“示例性”的任何实施方式不一定被解释为比其他实施方式优选或有利。

还将理解,尽管术语“第一”、“第二”等可以用于描述各种要素,但这些要素不应受这些术语的限制。这些术语仅用于将一个元素与另一个元素区分开。例如,第一接触可以被称为第二接触,并且类似地,第二接触可被称为第一接触,其改变了描述的含义,只要所有出现的“第一接触”被重新命名为一致,所有出现的第二个联系人都被重新命名。第一个联系人和第二个联系人都是联系人,但他们不是同一个联系人。同样如实施例和所附权利要求书的描述中所使用的,单数形式“一”和“该”也旨在包括复数形式,除非上下文另有明确指示。还将理解,本文所用的术语“和/或”是指和包括一个或多个相关列出的项目的任何和所有可能的组合。

此外,如本文所使用的,当“或”基于“或”响应于确定“或”根据确定“或”响应于检测“,术语”如果可以被解释为意味着“,则所述同样地,“如果确定[所述条件先例为真]”或“如果[所述条件先例为真]”或“当[所述条件先例为“可以被解释为意味着”在确定“或”响应于确定“或”根据确定“或”在检测到“或”响应于检测到“所述条件先例为真时,这取决于上下文。

本公开不旨在限于本文所示的实现。在本公开中描述的实施方案的各种修改对于本领域技术人员来说是显而易见的,并且在不脱离本公开的精神或范围的情况下,本文定义的一般原理可以应用于其他实现。本文提供的本发明的教导可以应用于其它方法和系统,并且不限于上述方法和系统,并且上述各种实施例的元件和动作可以组合以提供其他实施例。因此,本文描述的新颖方法和系统可以以各种其他形式实施;此外,在不脱离本公开的精神的情况下,可以对本文所述的方法和系统的形式进行各种省略,替换和改变。所附权利要求及其等同物旨在涵盖落入本公开的范围和精神内的这些形式或修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1