片段质量导向的自适应流创建的制作方法

文档序号:28205691发布日期:2021-12-28 12:53阅读:108来源:国知局
片段质量导向的自适应流创建的制作方法

流传输服务(例如,视频流、音频流或多媒体流)已经变得愈发普遍并且被各种各样的用户所想要。流传输内容使用户能够在他们想要/需要多媒体的时候接收他们想要的多媒体,而不是提前下载多媒体。也就是说,不是迫使用户长时间等待大下载(例如整部电影,这也迫使用户存储大量数据),而是流传输使用户能够按需(例如,就在片段开始之前)获取较大视频的较小片段。

为了改进流传输服务,已经开发了自适应比特率流传输(ABR)。ABR的前提是提供不同比特率的多个流(常常称为变体),从而使客户端能够基于网络条件和其他因素动态地选择变体。这些变体使用具有多个梯级的编码阶梯进行编码,每个梯级对应于所需的输出比特率。常常,多个分辨率(例如,1920x1080、1280x720等)可以在一个编码阶梯上共存,其中给定分辨率在一个或多个连续梯级上。ABR流被分段(例如,分割为离散的子资产,每个子资产通常几秒钟长),并且客户端可以随着网络条件改变而在片段边界处从一种变体适应另一种变体。

附图说明

为了可以详细地理解获得上述方面的方式,可以通过参考附图对在上面简要概括的本文描述的实施例进行更具体的描述。

然而,要注意的是,附图示出了典型的实施例并且因此将不被认为是限制性的;其他同样有效的实施例被设想到。

图1描绘了根据本文公开的一些实施例的被配置为执行片段质量导向的自适应流创建的系统。

图2示出了根据本文公开的一个实施例的被配置为生成各种编码输出流以便提供片段质量导向的自适应流创建的系统。

图3描绘了根据本文公开的一个实施例的具有不同最大平均比特率的各种不同流的片段池。

图4示出了根据本文公开的一个实施例的为了提供片段质量导向的自适应流传输的片段质量分析。

图5A描绘了使用本文公开的片段质量导向的自适应技术生成的不同比特率流的集合。

图5B描绘了使用本文公开的片段质量导向的自适应技术生成的不同比特率流的优化集合。

图6示出了利用本文公开的片段质量导向的自适应技术对可用输出比特率的优化降低。

图7是示出根据本文公开的一些实施例的用于片段质量导向的自适应流生成的方法的流程图。

图8是示出根据本文公开的一些实施例的用于片段质量导向的自适应流生成的方法的流程图。

图9描绘了根据本文公开的一个实施例的被配置为提供片段质量导向的自适应流的流传输系统。

具体实施方式

本公开的实施例提供了用于片段质量导向的自适应(SQA)流生成的技术。SQA系统实现了减少的资源使用,包括更低的存储要求和传输SQA流所需的减少的网络带宽。现有ABR应用中的一个重大挑战是选择适当的ABR编码阶梯。编码栈或阶梯指的是一组变体/比特率,其中每个比特率对应于阶梯上的台阶或梯级,其中最高比特率位于阶梯顶部并且最低比特率位于底部。然而,不同的内容可以涉及显著不同的编码需求和复杂性。

以由其梯级(例如,分辨率或比特率)定义的输出为目标的给定编码阶梯可以容易地产生比某个内容所需的更多的比特。例如,每秒8.5兆位(Mb/s)的流适用于实景真人视频,但是对于简单的动画而言过大。更为受限的阶梯(例如,具有更低的比特率、更低的分辨率或两者兼有)对于这样简单的动画而言可能足够,但是很可能不足以为某个内容(例如,实景真人)产生足够的质量。在选择编码阶梯时,现有系统经常被迫在现有阶梯之间进行选择,其中一些产生足够的质量但浪费比特,而其他产生更保守的比特但以低于想要的质量。减轻这些担忧的一些尝试涉及基于标题的ABR编码,其中每个标题(例如,每个视频源)可以潜在地具有其自己的编码栈。

然而,不仅每个内容资产(标题)经常与其他内容资产不同,而且可以在单个资产内发生变化,这降低了选择单个预定义阶梯的功效。在没有自适应编码阶梯的情况下,系统再次必须要么选择一个阶梯,该阶梯当在资产内需要时足以产生想要的质量,但在不需要时产生浪费的(不必要的)比特,要么选择第二阶梯,该第二阶梯对于大部分资产而言是最佳的,但对于某些部分而言是不够的。许多现有系统选择较高的比特率阶梯,这导致过度产生的比特以确保高视频质量。然而,该选择导致提供商的浪费的成本(包括不需要的数据的存储和交付),以及增加的客户成本(包括增加的数据消耗,这在用户使用计量数据计划时尤其有害)。另外,该方法可以影响体验质量,诸如通过强制更高频率的重缓冲、更长的下载时间等。

虽然一些ABR格式协议允许资产内的动态阶梯变化,但许多则并不允许。本公开的实施例提供了用来提供协议格式不可知的动态标题内阶梯的技术。例如,在一些实施例中,可以向客户端设备呈现一组比特率选项(例如,8.5Mb/s流、7Mb/s流、5.5Mb/s流等)。在各种实施例中,客户端设备可以随着条件改变而自动在流之间进行选择,或者用户可以手动选择特定流。本公开的实施例使提供商系统能够在切换到较低比特率流不会损害用户体验时(例如,当片段质量不会受损害时)动态地切换到较低比特率流,这降低了网络负载和存储要求。尤其,在一些实施例中,系统在每个分辨率内动态地选择不同的比特率流。也就是说,可以在每个分辨率的基础上执行选择较低比特率片段的决定。在这样的实施例中,系统在具有与原始片段/流相同的分辨率的较低比特率片段中进行选择(例如,不会为1080p流选择720p片段)。

图1描绘了根据本文公开的一些实施例的被配置为执行片段质量导向的自适应流创建的系统100。在所示出的实施例中,可以提供媒体资产105。资产105可包括任何媒体,诸如音频、视频以及同时包括视频和音频的多媒体。在所示出的实施例中,资产105被描绘成片段110A-N的序列。可以使用任意数量的技术来执行这种分割。一般而言,每个片段110A-N是资产105的一部分或一段,并且片段110A-N与次序或顺序相关联。以这种方式,通过按顺序接收片段110A-N,可以接收整个资产105。

在所示出的实施例中,描绘了初始编码阶梯115。编码阶梯115包括四个梯级120A-D,每个梯级与相应的目标平均比特率(TAB)相关联。尽管描绘了四个梯级120,但是在各实施例中,编码阶梯115可包括任意数量的梯级/比特率。在所示出的实施例中,第一梯级120A对应于8.5Mb/s TAB,梯级120B对应于7Mb/s TAB,梯级120C对应于5.5Mb/sTAB,并且梯级120D对应于4.25Mb/s TAB。

在现有系统中,编码阶梯115用来对资产105的每个片段110进行编码。也就是说,每个片段110以由编码阶梯115的每个梯级120指定的比特率进行编码。因此,现有系统生成四个单独的输出序列,每个TAB一个,每个输出序列具有以对应TAB编码的片段序列。客户端然后可以指示其最大平均比特率(MAB),MAB用来选择四个流之一。例如,如果客户端请求8.5Mb/s MAB,则现有系统提供以8.5Mb/s编码的流(也就是说,该流中的每个片段110以8.5Mb/s编码)。类似地,如果客户端请求7Mb/s MAB,则现有系统提供以7Mb/s编码的流。这导致一些片段110被以不必要的/额外的比特传输。

在所示出的实施例中,用使用梯级125A-C示出的一组中间平均比特率(IAB)来补充现有的编码阶梯115。在所示出的实施例中,每个新梯级125A-C被插入在两个现有梯级120A-D之间。在各种实施例中,可以存在任意数量的IAB梯级125。例如,在现有TAB梯级之间可以存在两个或更多个IAB梯级,或者在两个给定TAB梯级之间可以存在零个IAB梯级。此外,在各实施例中,系统可以利用在最低比特率TAB下面的零个或更多个IAB梯级。在一些实施例中,IAB被选择为均匀划分现有TAB之间的(一个或多个)间隙。如图所示,将现有的编码梯级115与额外的IAB梯级125结合产生增强的编码梯级130,其具有额外的梯级。另外,在一些实施例中,MAB/TAB/IAB是在每个分辨率的基础上定义的。也就是说,视频的每个可用分辨率可具有关联的一组MAB、TAB片段和IAB片段。例如,在720p分辨率的最高TAB上面可能存在一个或多个IAB,因为这些更高的IAB是现有1080p分辨率集的一部分。

如图所示,该增强编码阶梯130可以用来生成一个或多个输出流135,这一个或多个输出流包括编码片段140A-N的序列。在本公开的实施例中,系统100允许每个输出流135包括以不同比特率编码的编码片段140A-N。也就是说,虽然现有系统强制给定流中的每个片段以相同比特率进行编码,但是输出流135可以变化。例如,编码片段140A可以使用8.5TAB进行编码,而编码片段140B使用6.25IAB进行编码并且编码片段140C使用7TAB进行编码。因此,尽管现有系统可以允许客户端在阶梯中向上移动和向下移动(例如,为当前片段或下一个片段选择更高或更低的比特率),但是本公开的实施例生成包括可以具有不同比特率的编码片段140的输出流135。因此,使用本公开的实施例,系统可以在可能的情况下输出/传输较低的比特率,即使客户端继续请求较高的比特率。

在本公开的实施例中,系统是质量导向的并且不仅仅基于可用带宽来选择比特率。反而,系统为阶梯的每个梯级自适应地选择最佳或最好的比特率,同时保持每个片段的质量水平。这允许系统保持与目标比特率类似或匹配的媒体质量,同时使提供内容所需的比特数最小化。

在一些实施例中,为由系统100提供的每个MAB生成单独的输出流135。在一些实施例中,可用的MAB对应于在编码阶梯115中指定的TAB。在为给定的MAB生成输出流135时,如在下面更详细讨论的,系统100可以动态地选择适当的编码片段140。在一个实施例中,这包括动态地在以MAB编码的片段和以较低比特率编码的片段之间进行选择,如果该较低比特率不降低片段质量的话。

在一个实施例中,为了这样做,系统100可以使用可用比特率中的每一个(例如,每个TAB和每个IAB)来迭代地编码每个片段110A-N。在一些实施例中,不是迭代编码或串行编码,系统100可以使用每个可用比特率并行地编码每个片段100A-N。然后可以评估和组合编码的片段以生成一组MAB流。在一些实施例中,该评估是在所有片段已经以可用比特率进行编码之后发生的后期处理步骤。一旦MAB流被生成,其就可以被流传输或传输到任意数量的客户端。有利地,通过在可能的情况下选择较低比特率的片段(例如,当这样做不会降低由客户端接收的片段的质量时),本公开的实施例降低了存储成本(因为可以用更少的资源来存储每个MAB流)以及网络成本(因为为给定MAB传输更少的比特)。

图2示出了根据本文公开的一个实施例的系统200,该系统200被配置为生成各种编码输出流以提供片段质量导向的自适应流创建。在所示出的实施例中,源205和编码阶梯210被提供给转码器215。源205通常是内容资产,诸如视频资产、音频资产或多媒体资产。如在上面讨论的,编码阶梯210通常指定多个比特率。在一些实施例中,基于源205的内容或类型来选择编码阶梯210。例如,系统200可以基于源205是否包括二维动画内容、三维计算机渲染内容或实景真人视频内容来利用不同的阶梯。其他增加复杂性(并因此建议具有高比特率、更大数量的梯级或两者兼有的更鲁棒的编码阶梯)的因素包括帧中的显著运动、广泛的颜色变化等。在一些实施例中,使用一个或多个现有技术来评估源205,以选择适合于源205的类型和内容的编码阶梯210。

在所示出的实施例中,转码器215利用多个编码器220A-N来使用编码阶梯210将源205编码成一组编码输出225A-N。具体而言,编码器220A生成编码输出225A,编码器220B生成编码输出225B,以此类推。在一个实施例中,对于由编码阶梯210指定的每个梯级/比特率,使用对应的编码器220。例如,如果编码阶梯210中的最高比特率为8.5Mb/s,则编码器220A可被配置为以8.5Mb/s对源205进行编码。在一些实施例中,已经在传统TAB之间用一个或多个IAB增强了编码阶梯210。在其他实施例中,转码器215基于在编码阶梯210中指定的TAB来选择一个或多个IAB,并针对TAB和IAB配置对应的编码器220。

在一个实施例中,使用给定的编码器220对源205进行编码包括:以该编码器220的比特率对源205的每个单独片段进行编码,以使得可以以对应的比特率传输(例如,通过网络)这些片段。因此,编码输出225可以包括源205的编码片段的序列。在一些实施例中,如在下面更详细地讨论的,当针对给定MAB构建输出流时,系统200将从编码输出225A-N中选择编码片段。

在一个实施例中,在编码阶梯210中指定的每个TAB通常相当于对应的MAB。也就是说,在传统系统中,当客户端请求给定MAB的流时,系统选择并输出等于该比特率的编码视频。然而,在本公开的实施例中,系统200可以智能地选择较低的比特率(例如,一个或多个IAB或较低的TAB)来输出,这降低了计算负载。例如,这样的实施例可以通过提供比所请求的更低比特率的片段来降低存储要求和交付成本。

尽管未被包括在所描绘的实施例中,但是在一些实施例中,系统200额外对每个编码输出225执行质量评估。也就是说,系统200可以评估每个编码输出225的每个单独片段,以便为每个编码片段生成定量且客观的质量分数。这允许系统200知道每个片段在每个可用的比特率和分辨率下的视觉质量。在各种实施例中,质量评估可以利用一种或多种客观质量算法,诸如峰值信噪比(PSNR)、结构相似性(SSIM)、视频多方法评估融合(VMAF)等。这产生每个片段的质量评估,其可以是单个值(例如,一个或多个客观分数的加权组合)或一组值(例如,最低分数、最高分数、平均分数、标准偏差、滚动平均分数等)。

图3是描绘根据本文公开的一个实施例的具有不同最大比特率的各种不同流的片段池的图表300。在所示出的实施例中,增强编码阶梯130被描绘以使可用比特率可视化,并且针对一些潜在的MAB 305A-C描绘了一组池315A-C。在一些实施例中,在对每个编码片段的质量评估完成之后,针对每个MAB从编码TAB/IAB片段的池中选择一片段。也就是说,对于输出的每个片段,系统可以为每个MAB选择编码的IAB或TAB片段。例如,对于原始输入源的第一片段,系统将针对(8.5Mb/s的)第一MAB 305A选择第一编码版本的第一片段,针对(7Mb/s的)MAB 305B选择第二编码版本的第一片段,针对(5.5Mb/s的)MAB 305C选择第三编码版本的第一片段,依此类推。针对输入源的每个片段(并针对每个可用的MAB)重复该过程。

如在上面讨论的,在传统的系统中,系统简单地选择对应于与所请求的MAB相同的比特率的TAB片段。因此,对于MAB 305A,现有系统简单地选择按8.5Mb/s TAB编码的片段。然而,在所示出的实施例中,系统针对每个MAB 305A-C定义潜在片段的池。MAB 305的潜在编码片段的池包括MAB 305的对应TAB,以及在对应TAB之下包括的一组一个或多个TAB、IAB或IAB和TAB两者。如图所示,对于MAB 305A(对应于8.5Mb/s),池315A包括对应于8.5Mb/s TAB的片段、对应于7.75Mb/sIAB的片段、对应于7Mb/s TAB的片段、对应于6.25Mb/s IAB的片段以及对应于5.5Mb/s TAB的片段。

因此,在针对MAB 305A的片段选择期间,系统可以选择在8.5Mb/s和6.25Mb/s之间的任何片段。在各种实施例中,池315可以是静态的或动态的。在一个实施例中,池315利用静态配置(例如,预定义的固定深度)。在另一个实施例中,每个池315的深度(例如,所包括的梯级或比特率的数量)是预定的。在又一个实施例中,例如基于内容特征、机器学习等动态地设置深度。在各实施例中,给定池315的最低深度(比特率)表示给定MAB 315的最佳情况(例如,最低)平均比特率输出。例如,在所示出的实施例中,在其最低端具有4.8Mb/s IAB的MAB 305B的池315b(7Mb/s最大比特率输出)表明7Mb/s输出的最终平均比特率将大于或等于4.8Mb/s,并且小于或等于7Mb/s。

在各实施例中,可以在编码器自身内或在一个或多个下游组件中定义或配置这些池315。尽管所示出的增强编码阶梯130利用七个梯级,但在各实施例中,如在上面讨论的,当然可以存在任意数量的层/比特率。另外,尽管在所示出的实施例中包括三个MAB 305A-C,但是系统当然可以提供任意数量和种类的MAB。此外,尽管所描绘的实施例包括深度分别为五、四和三的池315A-C,但是在各实施例中,每个池315的深度当然可以是任意值,并且每个池可包括任意数量的潜在比特率。另外,如图所示,每个池315不仅可以包括较低的(一个或多个)IAB,而且可以包括较低的TAB。

图4描绘了根据本文公开的一个实施例的图表400,其示出了为了提供片段质量导向的自适应流传输的片段质量分析。在一些实施例中,(上面讨论的,从池315中进行的)针对给定MAB的片段选择过程包括对先前为给定(原始)片段的每个编码版本生成的质量分数的评估。在一个实施例中,为了为给定MAB选择编码片段,评估对应池中的每个片段的质量。系统可以选择下述具有最低比特率的编码片段:该编码片段的质量分数距离MAB的对应TAB片段的质量分数在预定义的容差范围内。

在一些实施例中,该容差被配置为小于恰可察觉差(JND),以使得典型用户无法注意到TAB片段与所选择的较低比特率片段之间的视觉质量的任何差异。在使最终输出比特率最小化的同时,这确保了所选择的片段质量在视觉上不比将通过选择MAB的对应TAB片段而产生的片段质量更差。例如,对于8.5Mb/s MAB,系统可以确定对应TAB片段(例如,以8.5Mb/s编码的片段)的质量分数。该TAB片段质量分数然后可以用来选择MAB池中包含的较低比特率片段。

在所示出的图表400中,在垂直轴上画出片段质量分数,而在水平轴上画出输出中的各个片段。点405、410和415表示各种编码片段的质量分数。例如,点405A-D表示Seg1的四个不同变体(例如,不同比特率)的质量分数。类似地,点410A-D表示Seg2的四个不同变体(例如,不同比特率)的质量分数,并且点415A-D表示SegN的四个不同变体(例如,不同比特率)的质量分数。在所示出的实施例中,所描绘的MAB的池的深度是四。也就是说,当以给定MAB生成输出流时,有四个片段变体可供选择。因此,对于流中的每个片段,系统可以在四个潜在的编码片段(例如,四个比特率)之间进行选择。

例如,假设所描绘的图表400用于8.5Mb/s MAB。在这样的实施例中,每个编码片段的最高质量变体(最高点405、410和415)可能是以8.5Mb/s TAB编码的片段(例如,点405A、410A和415A)。继续该示例,下一较低点(例如,点405B、410B和415B)对应于下一较低比特率(例如,7.75Mb/s IAB),而超越7.75Mb/s速率的下一较低点(点405C、410C和415C)对应于7Mb/s TAB。另外,池中的质量最低的片段(由点405D、410D和415D表示)对应于以6.25Mb/s IAB编码的片段。

如图所示,取决于给定片段的具体内容,每个较低比特率的质量可以显著不同。例如,对于第一片段(Seg1),以8.5Mb/s、7.75Mb/s和7Mb/s编码的片段具有类似的质量分数,而以6.25Mb/s编码的片段明显较低。对于第二片段(Seg2),所有四个编码片段都具有类似的质量分数。此外,对于第N片段(SegN),8.5Mb/s编码的片段具有相对高的质量,并且(以较低比特率编码的)剩余片段没有几乎一样高的视觉质量。

在各实施例中,如在上面讨论的,系统将质量分数与一个或多个阈值进行比较以确定应该为给定片段选择哪个编码变体。在所示出的实施例中,这些阈值由容差420A-C描绘。在至少一个实施例中,容差420A-C对应于典型人类用户不可察觉的视觉质量差异。如在上面讨论的,最小可接受质量分数是基于最高质量片段(例如,以对应于MAB的TAB编码的片段)的质量来定义的。因此,容差420A-C被描述为测量低于每个片段的最高得分编码变体的质量的容许方差。

在一些实施例中,可以另外或替代地利用其他技术来定义容许方差。例如,在一个这样的实施例中,系统可以可选地利用预定义的下限,其中低于该下限的片段即使落在容差内也被忽略。类似地,在一些实施例中,系统可以利用预定义的上限,其中如果质量分数高于预定义的上限,则可以忽略预定义的容差。

对于第一片段(Segl),由点405C表示的编码变体在容差420A内,而下一个较低的点405D则不在。因此,在所示出的实施例中,系统将选择由点405C表示的编码片段(例如,7Mb/s TAB),以用作8.5Mb/sMAB流上的输出的第一片段。对于第二片段(Seg2),落于容差420B内的最低比特率片段是池中由点410D表示的最低片段(例如,6.25Mb/s片段)。因此,对于第二片段,系统将选择该编码变体。另外,对于第N片段(SegN),只有8.5Mb/s TAB片段在容差420C内。因此,对于该片段,系统将利用最高比特率的变体。

有利地,这使系统能够在动态地选择以较低比特率编码的片段不会影响流的视觉质量时动态地选择以较低比特率编码的片段。这可以在不影响用户体验的情况下显著减少所需的网络带宽。另外,在一些实施例中,系统可以仅存储流的选中编码片段,并丢弃所有其他编码片段。例如,系统可以存储由点405C、410D和415A表示的片段,并丢弃剩余的编码片段。这大大降低了存储MAB输出流所需的存储成本。可以针对每个可用的MAB执行类似的评估。另外,如在下面更详细讨论的,在一些实施例中,系统可以智能地识别在多于一个MAB流中使用的(一个或多个)片段,并将这些合并为单个共享副本,从而进一步降低存储成本。

图5A描绘了使用本文公开的片段质量导向的自适应技术生成的不同比特率流的集合500A。所示出的实施例包括8.5Mb/s MAB输出505A,7Mb/s MAB输出505B,以及5.5Mb/s MAB输出505C。尽管描绘了三个MAB,但在各实施例中,当然可以存在任意数量的可用MAB。如在上面讨论的,在各实施例中,每个MAB通常对应于对应输出将使用的最高比特率。客户端或提供系统通常可以基于网络条件、计算条件和其他因素来为给定客户端选择MAB。每个MAB输出505A-C包括一系列编码片段510。

如在上面讨论的,在传统(非SQA)转码系统中,MAB输出将仅包含与MAB的TAB相对应的片段。例如,8.5Mb/s MAB输出将仅包含来自8.5Mb/s TAB编码器的片段。然而,利用本公开的实施例,如果视觉质量不会受损害,则每个MAB输出可以包括针对各种片段的较低比特率。然而,值得注意的是,每个MAB输出505A-C为输出的对应部分输出同一原始片段的编码变体。例如,所有三个MAB输出505A-C以与“Seg1”相对应的编码片段(片段510A、510G和510M)开始,并按顺序进行到“Seg7”。然而,每个的编码比特率不同。

例如,在所示出的实施例中,MAB输出505A包括:以5.5Mb/s编码的片段510A,以8.5Mb/s编码的片段510B,以8.5Mb/s编码的片段510C,以6.25Mb/s编码的片段510D,以6.25Mb/s编码的片段510E,以及以8.5Mb/s编码的片段510F。MAB输出505B包括:以5.5Mb/s编码的片段510G,以7Mb/s编码的片段510H,以6.25Mb/s编码的片段510I,以5.5Mb/s编码的片段510J,以6.25Mb/s编码的片段510K,以及以7Mb/s编码的片段510L。另外,MAB输出505C包括:以5.5Mb/s编码的片段510M,以4.8Mb/s编码的段510N,以5.5Mb/s编码的片段510O,以5.5Mb/s编码的片段510P,以4.8Mb/s编码的片段510Q,以及以5.5Mb/s编码的片段510R。

因此,如图所示,通过利用本文公开的实施例,每个MAB输出505A-C可以选择性地利用具有显著减少带宽的片段。在一个实施例中,该流生成是在准备阶段期间(例如,当资产被摄取时)执行的,并且MAB输出505A-C被存储在一个或多个存储位置中。这可包括存储顺序片段510A-R本身、存储片段的顺序列表(例如,使用指向每个片段的实际存储位置的指针或链接)等。随后,当任何客户端请求最大比特率的流时,系统可以取回匹配的MAB输出505,并开始按顺序传输对应的段510。

尤其,如在上面讨论的,与传统系统相比,MAB输出505需要更少的存储资源。例如,在8.5MB/s MAB输出505A中,只有510B、510C和510F这三个分段实际上是8.5MB/s片段。剩余片段针对较低比特率进行编码,因此是更小文件大小并需要更少的资源来进行存储、处理和传输。在一些实施例中,可以应用额外的优化以进一步减少计算资源。

图5B描绘了使用本文公开的片段质量导向的自适应技术生成的不同比特率流的一个这样的优化集合500B。如在上面讨论的,利用本文公开的SQA转码技术,每个输出中的片段是从MAB的池中选择的,因此给定的MAB输出可以包含针对比MAB更低的比特率进行编码的片段。此外,因为池可以重叠,因此在多个输出中可能存在相同的编码片段。例如,如图3所示,池315A和315B重叠(例如,都包括7MB/s TAB和6.25MB/s IAB),表明8.5MB/s MAB输出和7MB/s MAB输出都可使用相同的编码片段(例如,以7MB/s或6.25MB/s编码的片段)。

在本公开的一些实施例中,编码过程包括将独特的标识符附加到每个编码片段(同时包括TAB和IAB片段)。在一个这样的实施例中,附加的下游处理可以识别变体之间的公共/共享的编码片段,并存储和递送共享片段的公共单个副本。与存储相同编码片段的副本相比,这提高了效率和存储资源。也就是说,系统仅需要存储每个编码片段的一个副本,并且每个MAB输出505可以根据需要包括指向该副本的指针。

此外,优化这些公共片段可以减少由于通过内容递送网络(CDN)递送重复片段而导致的所需网络资源。在一些实施例中,许多CDN在相对本地的位置缓存片段。例如,接收到的片段可以由因特网服务提供商(ISP)等在企业内本地缓存、在所在地缓存。这些缓存可以显著降低网络负载。当多个客户端流传输相同的MAB输出505时,本地缓存可以用于提供下一个片段(当它可用时),而不是向原始流提供者请求它。

通过标注公共片段的标识符,缓存可以提供最初为任何MAB输出下载的本地缓存的片段。例如,假设编码片段作为第一流的一部分而以第一带宽(例如,8.5Mb/s流)下载到第一客户端。如果使用相同MAB的另一个客户端开始该流,则缓存可用来提供下一个片段。然而,在现有系统中,使用另一个MAB(例如,7Mb/s MAB)的客户端被迫从源提供商下载对应的变体。然而,通过标注重叠的片段(例如,如果8.5Mb/s和7Mb/s流都对输出的一个或多个部分使用相同的编码片段),缓存可以向(流传输7Mb/s输出的)第二客户端提供公共片段的缓存副本。这大大减少了所需的带宽。

如图5A所示,所有三个MAB输出505A-C都对Segl(片段510A、510G和510M)使用5.5Mb/s比特率。因此,在图5B所示的实施例中,系统已经将这些公共片段合并为单个共享片段510A,并将(MAB输出505B和505C中的)其他副本替换为指向共享副本的指针。尽管被描绘为与MAB输出505A一起存储,但是在一些实施例中,系统可以将共享副本存储在单独的位置,并且在所有MAB输出505A-C内包括指向该副本的指针。

在流的第四和第五片段中示出了类似的优化。也就是说,MAB输出505B和505C在Seg4中都使用5.5Mb/s编码片段510,并且系统因此消除了片段510P的一个副本,将它替换为指向共享片段510J的指针。另外,因为MAB输出505A和505B对于Seg5共享6.25Mb/s编码片段510,因此系统已经类似地将一者或两者替换为指向该编码片段的共享副本的指针。

图6描绘了图表600,其示出了利用本文公开的片段质量导向的自适应技术对可用输出比特率的进一步优化的降低。如在上面讨论的,给定MAB输出的平均比特率可以是MAB的最高比特率(MAB本身)与池中包括的最低比特率之间的任何值。因此,在不同的MAB之间(在给定的屏幕分辨率下),平均输出比特率经常可以是非常类似的。另外,如果MAB池中的两者或更多者共享相同的最低比特率,则这样的MAB输出的平均比特率可能完全相同(如果每个MAB使用池中的最低比特率),或者彼此非常接近。这可以为进一步优化提供各种机会。

图表600描绘了SQA输出比特率的可能分布的视觉表示。在所描绘的实施例中,沿着水平轴绘制各种资产,并且在垂直轴上绘制资产的每个MAB的平均比特率。例如,最上面的线605A、610A和615A可以表示最高的可用MAB(例如,8.5Mb/s),接下来的线605B、610B和615B可以表示次低的MAB(例如,7Mb/s),并且最低的线605C、610C和615C可以表示最低的MAB(例如,5.5Mb/s)。当然,尽管示出了三个MAB,但是在各实施例中,当然可以存在任意数量的可用MAB。

如图所示,对于第一媒体源(标记为Assetl),取决于所选择的MAB,平均比特率显著变化。也就是说,取决于他们选择的MAB,客户端接收的实际平均比特率存在巨大差距。这通过线605A-C之间相对较远的传播来可视化。然而,对于Asset3,线615A-C之间的间隙显著减小,表明无论所选择的MAB如何,平均比特率极少改变。在最极端的示例中,线将收敛到单个点(例如,如果MAB输出中的两者或多者都选择了相同的片段比特率)。

在许多实施例中,呈现给客户端的ABR阶梯被设计成具有速率既不太近也不太远的梯级。如果梯级相距太远,则系统可能尽力提供更高比特率所需的带宽,但是以次低比特率提供较低质量的视频。利用之间的额外梯级,系统可以找到平衡点。如果梯级太近,则客户可能随着条件稍微改变而频繁地将阶梯上下移动到相邻的速率。这显著降低了可以通过本地缓存获得的效率。然而,如图6所示,本公开的一些实施例通过优化输出比特率在一些情况下可以产生具有彼此相当靠近的梯级的阶梯。

因此,在一些实施例中,系统可以采取进一步的行动。在至少一个实施例中,ABR变体的主列表仍然可以包括所有MAB,即使这些变体中的每个变体的实际平均比特率可能远小于它们的宣传速率。如果资产的峰值比特率与平均比特率显著不同,这可能是有益的。也就是说,给定的MAB输出仍然可具有一些以原始MAB峰值速率编码的片段,即使大多数片段被低得多地编码。通过保留所有MAB输出,内容提供商可以确保每个输出流保持高质量,包括其中的任何峰值。

在一些实施例中,可以执行对作为结果的MAB输出平均比特率、片段峰值速率等的分析。基于该分析,系统可以确定去除MAB输出变体中的一个或多个。例如,假设所有MAB输出都已优化到使用完全相同的编码片段集。在这种情况下,所有MAB输出都将完全相同(具有相同的平均比特率和峰值比特率)。因此,在这样的实施方式中,保留所有MAB输出或将它们呈现给客户没有益处。

因此,在一些实施例中,系统可以评估和识别应当去除的MAB输出。在所示出的实施例中,对于Asset1(资产1),系统已经确定平均比特率是充分分散的,所以所有MAB选项都应当被保留。然而,对于Asset2(资产2),系统已经确定由线610B表示的变体距由线610A或610C(或两者)表示的变体在预定义的阈值距离内。因此,如虚线所示,系统已经确定去除由线610B指示的变体。在这样的实施例中,当流传输Asset2时,客户端可以被呈现两种变体:由线610A表示的一种(例如,以8.5Mb/s),或者由线610C表示的一种(例如,以5.5Mb/s)。除了去除所宣传的中间变体(例如,7Mb/s)之外,在一些实施例中,系统还可以从其存储中删除该MAB输出,以减少存储使用。

类似地,对于Asset3(资产3),基于确定最高变体(由虚线615A表示)和最低变体(由虚线615C表示)距由线615B表示的变体在预定义的阈值差异内,系统已经决定剔除最高变体和最低变体。因此,在一个实施例中,系统可以确定去除这些变体(例如,通过避免宣传它们、删除它们等)。这可以显著提高存储效率,并进一步改善系统的整体操作。

在一些实施例中,消除MAB流包括避免向客户端宣传MAB,以及迫使客户端从剩余的(一个或多个)MAB中进行挑选。然而,在至少一个实施例中,流传输系统可以继续宣传所有传统的MAB。在接收到对已被剔除的MAB流的请求时,系统可改为提供识别出的类似MAB流。这允许系统优化其资源,而没有对客户端设备的任何改变或对客户端设备进行通知。

图7是示出根据本文公开的一些实施例的用于片段质量导向的自适应流生成的方法700的流程图。方法700开始于块705,其中流传输系统接收源资产。在各实施例中,如在上面讨论的,该资产可以包括音频、视频、具有视频和音频的多媒体流等。在一个实施例中,该源资产可以包括可以以任何比特率进行压缩/编码的未压缩资产。方法700然后继续到块710。

在块710处,流传输系统接收编码阶梯以供在对源资产进行编码时使用。在一些实施例中,如在上面讨论的,这是预定义的阶梯。在至少一个实施例中,阶梯是已经基于资产的类型或内容所选择的特定于类型或特定于内容的阶梯。在一些实施例中,阶梯具有已经集成到其中的IAB。在另一个实施例中,流传输系统可以首先基于在阶梯中指定的TAB来选择一个或多个IAB。

方法700然后继续到块715,其中流传输系统选择视频的片段。在一些实施例中,资产先前已被划定为片段。在另一个实施例中,流传输系统使用一种或多种已知技术来评估资产以定义片段。在片段已被选择之后,方法700进行到块720,其中流传输系统选择在(增强的)编码阶梯中指定的编码梯级之一。在块725处,流传输系统以所选择的比特率对所选择的片段进行编码。

在块730处,流传输系统然后使用一种或多种质量评估技术来评估片段以针对编码片段(也就是说,针对以所选择的比特率进行编码的所选择的片段)生成质量分数。方法700然后进行到块735,其中流传输系统确定是否存在编码阶梯中指定的至少一个额外梯级(即,比特率)。如果是,则方法700返回到块720以选择下一个梯级。否则,如果所选择的片段已经以所有可能的比特率进行编码,则方法700继续到块740。

在块740处,流传输系统确定在资产中是否存在至少一个尚未编码的额外片段。如果是,则方法700返回到块715以选择下一个片段。否则,方法700进行到块745。以这种方式,流传输系统可以以每个可能的比特率生成每个片段的编码变体。这些编码片段被存储以供评估和分析,以便生成MAB输出集。在各种实施例中,该存储可以包括任意数量的合适的备选方案,包括在一个或多个硬盘驱动器或固态驱动器上、在存储器(例如,随机存取存储器)中等。

在块745处,流传输系统选择可用/潜在的MAB输出之一。如在上面讨论的,在各实施例中,每个MAB表示最大平均比特率选项。客户端可以在MAB中进行选择,并且流传输系统按顺序将来自所选择的MAB的片段传输到客户端。方法700然后继续到块750,其中流传输系统选择基本片段之一。在一个实施例中,基本片段指的是以所选择的MAB的TAB编码的片段。例如,对于8.5Mb/s MAB,每个基本片段是源资产中的以8.5Mb/s编码的片段之一。在另一个实施例中,基本片段指的是源资产中的原始(未编码)片段。

方法700然后进行到块755,其中流传输系统识别基本片段的潜在片段的池。在一个实施例中,如在上面讨论的,这包括确定池深度。该池深度可以是静态的或动态的,并且可以基于机器学习等来手动选择。在一个实施例中,如果基本片段是MAB的TAB片段,则识别池包括识别该选定片段的潜在替代片段(例如,以较低比特率进行编码的同一片段的变体)。在基本片段指的是原始源中的片段的实施例中,识别池包括(在所选择的MAB的池的深度内)识别与所选择的基本片段相对应的所有编码片段。

在块760处,流传输系统选择并识别池中的最小比特率片段。在一个实施例中,如在上面讨论的,该选择基于每个片段的质量分数。例如,流传输系统可以选择池中具有最低比特率的潜在片段,只要质量分数在预定义的判据(例如,最高质量片段的容差或阈值)内即可。如果质量分数太低,则流媒体系统可选择次高比特率的片段。一旦识别出基本片段的最小比特率可接受片段,方法700就继续到块765,其中流传输系统确定对于所选择的MAB是否存在至少一个额外的基本片段要进行评估。

如果是,则方法700返回到块750。否则,方法700继续到块770。因此,流传输系统可以迭代地在源资产中的每个片段中进行,以便为每个相应的源片段识别对所选择的MAB而言具有足够质量的最低比特率编码片段。在块770处,流传输系统将所选择的编码片段序列存储为所生成的MAB输出。以这种方式,流传输系统可以为所选择的MAB生成优化的输出,这在不降低质量的情况下降低一些片段的比特率。这提高了计算使用率。

方法700然后进行到块775,其中流传输系统确定是否存在至少一个额外的尚未评估/生成的MAB。如果是,则方法700返回到块745。否则,如果所有MAB输出都已被创建,则方法700继续到块780。以这种方式,流传输系统可以迭代地或并行地为所有可用的MAB生成优化的MAB输出。在块780处,如在上面讨论的,流传输系统可以可选地继续优化片段存储、输出或存储和输出两者。

例如,在一个这样的实施例中,如在上面关于图5讨论的,流传输系统可以识别不同MAB输出之间的共同编码片段,并将这些共同片段合并成一个共享副本。每个MAB输出然后可以被修改为包括指向该单个共享副本的链接或指针。在一些实施例中,如在上面参考图6讨论的,流传输系统可以分析每个总体MAB输出之间的相似性以便识别足够相似的输出。可以从系统中消除足够相似的MAB输出。

尽管为了概念清楚而将方法700描绘为顺序过程或串行过程,但在一些实施例中,可以同时(例如,并行地)有效地执行方法700的各方面。例如,在一些实施例中,系统可以以给定的比特率对片段进行编码并确定该比特率的片段的质量,然后针对每个比特率和片段迭代地重复这些步骤。然而,在一些实施例中,系统可以并行地以多个比特率对片段进行编码,这可以减少过程的等待时间。

图8是示出根据本文公开的一些实施例的用于片段质量导向的自适应流生成的方法的流程图。方法800开始于块805,其中流传输系统接收包括多个片段的视频。在块810处,流传输系统接收指定多个最大平均比特率(MAB)的编码阶梯。另外,在块815处,流传输系统选择散布在多个MAB之间的多个中间比特率。方法800然后继续到块820,其中流传输系统通过使用多个MAB中的第一MAB对多个片段中的第一片段进行编码来生成第一目标平均比特率(TAB)片段。在块825处,流传输系统通过使用多个中间比特率中的第一中间比特率对第一片段进行编码来生成第一中间平均比特率(IAB)片段。此外,在块830处,流传输系统为第一TAB片段和第一IAB片段生成相应的质量分数。方法800然后进行到块835,在那里,流传输系统基于相应的质量分数为第一MAB的第一片段选择第一输出片段,其中第一输出片段是(i)第一TAB片段或(ii)第一IAB片段。在块840处,在接收到对第一MAB的第一片段的请求时,流传输系统输出第一输出片段。

图9描绘了根据本文公开的一个实施例的被配置为提供片段质量导向的自适应流的流传输系统905。尽管被描绘为实体设备,但是在各实施例中,流传输系统905可被实现为虚拟设备或服务,或者在多个设备之间(例如,在云环境中)实现。如图所示,流传输系统905包括处理器910、存储器915、存储装置920、网络接口925以及一个或多个I/O接口930。在所示出的实施例中,处理器910取回和执行在存储器915中存储的编程指令,以及存储和取回驻留在存储装置920中的应用程序数据。处理器910通常代表单个CPU、GPU、CPU和GPU,多个CPU,多个GPU,具有多个处理核心的单个CPU或GPU等。通常包括存储器915以代表随机存取存储器。存储装置920可以是磁盘驱动器、基于闪存的存储设备等的任意组合,并且可包括固定存储设备、可移动存储设备或两者的组合,诸如固定磁盘驱动器、可移动存储卡、高速缓存、光存储、网络附加存储(NAS)或存储区域网络(SAN)。

在一些实施例中,输入和输出设备(诸如鼠标、键盘、监视器、触摸屏等)经由(一个或多个)I/O接口930而连接。另外,经由网络接口925,流传输系统905可以与一个或多个其他设备和组件通信地耦合(例如,直接耦合或经由网络980耦合,网络980可包括因特网、(一个或多个)局域网等)。此外,网络980可包括有线连接、无线连接或有线和无线连接的组合。如图所示,处理器910、存储器915、存储装置920、(一个或多个)网络接口925和(一个或多个)I/O接口930通过一个或多个总线975通信耦合。在各实施例中,流传输系统905可被实现为独立设备,实现为云部署的一部分,实现为在用户的电话或计算机上执行的应用程序等。

在所示出的实施例中,存储装置920包括一个或多个源资产960以及一个或多个对应的编码流965。尽管被描绘为驻留在存储装置920中,但是源资产960和编码流965可以存储在任何合适的位置。在一个实施例中,如在上面讨论的,源资产960是能够被编码和流传输的视频、音频或多媒体内容。编码流965通常是源资产960的编码版本。在一些实施例中,如在上面讨论的,每个编码流965与对应的MAB相关联。另外,在一些实施例中,单个源资产960可以与任意数量的对应编码流965(例如,以不同的MAB)相关联。如在上面讨论的,在一个实施例中,每个编码流965被生成为包括以编码流965的MAB进行编码或在该MAB以下进行编码的片段序列。在一些实施例中,如在上面讨论的,编码流965可以利用指向共享/重叠公共片段的指针。

在所示出的实施例中,存储器915包括流应用程序935。流应用程序935通常被配置为执行本文讨论的实施例中的一个或多个。尽管被描绘为驻留在存储器915中的软件,但是在各实施例中,流应用程序935的功能可以使用软件、硬件或软件和硬件的组合来实现。如图所示,流应用程序935包括编码组件940、质量组件945、选择组件950和优化器955。尽管为了概念清楚而被描绘为离散组件,但是在各实施例中,编码组件940、质量组件945、选择组件950和优化器955的操作可被组合或分布在任意数量的组件和设备之间。

在一个实施例中,编码组件940被配置为接收源资产960和以一个或多个比特率对每个片段进行编码以便为源资产960生成一组编码片段。如在上面讨论的,在一些实施例中,编码组件940以每个可用的比特率(例如,以每个TAB和IAB)生成每个源片段的单独编码变体。然后可以随后分析这些变体以便构造优化的编码流965。

质量组件945通常被配置为评估由编码组件940生成的每个编码片段的视觉质量。为了这样做,质量组件945可以使用任意数量和组合的视觉质量算法。在一个实施例中,质量组件945基于该分析为每个编码片段生成质量分数。该质量分数可以是单个值,或是复合值集。

在所示出的实施例中,选择组件950被配置为针对每个编码流965的每个片段选择最佳编码片段。在各实施例中,选择组件950部分地基于所生成的质量分数来这样做。在一些实施例中,如在上面讨论的,选择组件950通过针对源资产960中的每个片段识别(编码流965的MAB的)潜在编码片段的池来这样做。选择组件950然后可以选择具有最低比特率的编码片段,只要该片段与足够的质量分数相关联即可。可以重复该过程直到生成整个编码流965为止。选择组件950然后可以针对源资产960可用的每个MAB迭代地重复该过程。

在一些实施例中,优化器955通常被配置为执行其他优化,诸如减少编码流965之间的重复,如在上面讨论的。为了这样做,优化器955可以识别不同编码流965中的共享编码片段,并将其中的一个或多个替换为指向编码片段的单个共享副本的指针。在一些实施例中,优化器955还可以评估可用于给定源资产960的编码流965,以便识别足够相似(例如,高于预定义的阈值)的编码流965。相似的流可以被紧缩成单个编码流965(例如,通过删除相似的编码流965中的一个或多个)。在这样做时,优化器955可以降低流传输系统905的存储和传输要求。

尽管被描绘为流应用程序935内的组件,但是在一些实施例中,优化器955可以是系统中的独立组件,或者可以作为分布在系统中的一组一个或多个功能而运行。例如,在一个这样的实施例中,在流应用程序935已经生成TAB和IAB片段并将其存储(例如,在存储装置920中或在存储器915中)之后,单独的优化器955(或一组优化器955)可以访问和评估这些存储的片段(例如,存储器915中的数据或存储装置920中的文件)并基于重叠和共享使用来优化它们,如在上面讨论的。

在所示出的实施例中,流传输系统905可以经由网络980与客户端系统985进行通信。尽管描绘了单个客户端系统985,但是当然可以存在任意数量的客户端系统985。客户端系统985通常代表被配置为接收来自流传输系统905的数据(例如,编码流965)的任何计算设备,包括但不限于智能电话、膝上型计算机、台式计算机、因特网连接的游戏系统、平板计算机、电视等。客户端系统985被描绘为包括流传输客户端990。尽管未被包括在所示出的实施例中,但是客户端系统985通常可包括任意数量和种类的计算元件,诸如处理器、存储装置、存储器、接口等。

在各种实施例中,可以使用硬件、软件或硬件和软件的组合来实现流传输客户端990。在一个实施例中,流传输客户端990可以用来选择由流传输系统905提供的一个或多个资产。例如,用户可以使用流传输客户端990来选择他们希望流传输的电影或节目。在一些实施例中,流应用程序935然后提供资产的可用MAB的集合或列表,并且流传输客户端990可以在它们之中进行选择。在一个实施例中,流传输客户端990自动选择MAB(例如,基于可用带宽、本地计算资源等)。在一个这样的实施例中,流传输客户端990可以基于变化的条件在流期间自动且动态地改变所选择的MAB(例如,当可用带宽减少时请求较低的MAB)。在至少一个实施例中,用户可以手动选择MAB或质量,并将流锁定为该质量。

如在上面讨论的,在一些实施例中,流应用程序935动态地选择可能与流传输客户端990所请求的比特率对齐或不对齐的输出片段。例如,即使流传输客户端990请求8.5Mb/s流,如果以较低的比特率动态地提供片段不会使质量降低超过预配置的阈值,则流应用程序935也可以以较低的比特率动态地提供片段。该改变可以是格式/协议不可知的,并且流传输客户端990可能完全不知道正在利用的变化的比特率。有利地,流传输客户端990因此不需要被重新编程或重新配置以应用本文公开的实施例。

在本公开中,参考了各种实施例。然而,应当理解,本公开不限于具体描述的实施例。相反,以下特征和元素的任何组合无论是否与不同的实施例有关都被预期到,以实施和实践本文提供的教导。此外,当以“A和B中的至少一个”的形式描述实施例的要素时,将理解的是,独占地包括要素A的实施例、独占地包括要素B的实施例以及包括要素A和B的实施例各自被预期到。另外,尽管一些实施例可以实现优于其他可能的解决方案或优于现有技术的优势,但是特定优势是否由给定的实施例实现不是限制本公开。因此,本文公开的方面、特征、实施例和优势仅是示例性的,并且不被认为是所附权利要求的要素或限制,除非在(一个或多个)权利要求中明确叙述。同样,对“本发明”的引用不应被解释为对本文公开的任何发明主题的概括,并且不应被认为是所附权利要求的要素或限制,除非在(一个或多个)权利要求中明确叙述。

如本领域技术人员将理解的,本文描述的实施例可以体现为系统、方法或计算机程序产品。因此,实施例可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,这些实施例在本文中都可以统称为“电路”、“模块”或“系统”。另外,本文描述的实施例可以采用在(一个或多个)计算机可读介质中体现的计算机程序产品的形式,这些计算机可读介质具有体现在其上的计算机可读程序代码。

体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,该介质包括但不限于无线、有线、光缆、RF等,或者前述的任何合适的组合。

用于执行本公开的实施例的操作的计算机程序代码可以用一个或多个编程语言的任意组合编写,这一个或多个编程语言包括诸如Java、Smalltalk、C++等的面向对象的编程语言以及传统的过程编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后者的情况下,可以通过包括局域网(LAN)或广域网(WAN)在内的任何类型的网络将远程计算机连接到用户的计算机,或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。

本文中参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示或框图来描述本公开的各方面。将理解的是,流程图图示或框图的每个块以及流程图图示或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图图示或框图的(一个或多个)块中指定的功能/动作的装置。

这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以引导计算机、其他可编程数据处理装置或其他设备以特定方式运行,使得存储在该计算机可读介质中的指令产生制品,该制品包括实现在流程图图示或框图的(一个或多个)块中指定的功能/动作的指令。

计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备上,以导致在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在该计算机、其他可编程数据处理装置或其他设备上执行的指令提供用于实现在流程图图示或框图的(一个或多个)块中指定的功能/动作的过程。

附图中的流程图图示和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。就这一点而言,流程图图示或框图中的每个块可表示模块、片段或代码部分,其包括用于实现所指定的(一个或多个)逻辑功能的一个或多个可执行指令。还应当注意的是,在一些替代实施方式中,块中标注的功能可以不按照图中标注的顺序发生。例如,根据所涉及的功能,实际上可以基本上同时执行接连示出的两个块,或者有时可以以相反的顺序或乱序执行这些块。还将注意到,框图或流程图图示的每个块以及框图或流程图图示中的块的组合可以由执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。

虽然前述针对本公开的实施例,但是在不脱离其基本范围的情况下可以想出本公开的其他和进一步的实施例,并且其范围由所附权利要求书确定。

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