促进实时视频流送的系统、设备和方法

文档序号:7793447阅读:297来源:国知局
促进实时视频流送的系统、设备和方法
【专利摘要】在本公开中提供了用于从至少两个实时视频流生成主视频流的系统和方法。所述系统包括将实时视频流组合以生成主视频流的组合部件。在一方面,实时视频流可以是根据用户数据报协议从不同位置多播的同一记录的副本。所述实时视频流由于传输而遭受不同的错误,诸如流毁坏或流错误。所述组合部件消除了由于传输而引起的实时视频中的错误且创建基本上无错误的主视频流。
【专利说明】促进实时视频流送的系统、设备和方法
[0001]相关申请的交叉引用
[0002]本申请要求于2012年4月12日提交的题为“SYSTEM, APPARATUS AND METHOD TOFACILITATE LIVE VIDEO STREAMING”的美国专利申请序号13/445,588的权益。其全部内容被通过引用合并到本文中。

【技术领域】
[0003]本公开涉及媒体流送,更具体地涉及利用数字视频流以进行实时视频流送。

【背景技术】
[0004]媒体共享服务随着连接速度增加而在因特网上变得丰富,为消费者提供了上传例如其自己的个人视频的能力。大多数媒体共享服务严格地充当中介,例如其为用户提供显示用户的视频版本的论坛。媒体共享服务然后可托管用户上传的媒体,允许因特网上的其他用户有观看上传媒体的能力。媒体共享服务还能够将来自实时事件的媒体流送。例如,媒体共享服务可以托管能够被显示给媒体共享服务的用户的实时体育事件。
[0005]媒体共享服务常常经由协议通过网络来接收经受流毁坏或流错误的实时视频流。流毁坏或流错误可在播放期间引起可见的伪像。甚至更坏,流毁坏或流错误在某些情况下甚至可导致后续解码器系统崩溃。


【发明内容】

[0006]下面提出了本说明书的简化概要以提供本说明书的某些方面的基本理解。此概要不是本说明书的全面概述。既不意图识别本说明书的关键或必需元素,也不意图描述本说明书的特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式提出本说明书的某些改变作为稍后提出的更详细描述的前奏。
[0007]根据一个或多个实施例和相应公开,结合提供实时视频流来描述各种非限制性方面。
[0008]根据非限制性实施例,提供了一种包括生成至少两个实时视频流的至少一个媒体内容生成器的系统。所述至少两个实时视频流被组合部件所组合。该组合部件从组合的至少两个实时视频流生成主视频流。根据一方面,该系统进一步包括使所述至少两个实时视频流同步的同步部件。该同步部件通过使各个段的指纹或其他元数据匹配来使所述至少两个实时视频流同步,以促进其组合。
[0009]根据另一非限制性实施例,提供了一种用于生成主视频流的方法。接收至少两个实时视频流并将其组合。从所述至少两个实时视频流的组合生成主视频流。根据一方面,主视频流是基本上没有错误的。通过修正每个可遭受流毁坏或流错误或经受其他形式的数字错误(诸如毁坏或重复数据)的至少两个实时视频流来生成基本上没有错误的主流。通过使所述至少两个实时视频流中的分组(packet)的指纹匹配并用另一数据流的相应分组来替换一个数据流中的丢失分组来修正所述至少两个实时视频流的流毁坏或流错误。
[0010]在另一非限制性实施例中,提供了能够执行促进主视频流的生成的操作的计算机可读存储介质。该操作包括接收至少两个实时视频流并通过将所述至少两个实时视频流组合来生成主视频流。根据一方面,该操作还包括向所述至少两个实时视频流分配权值并根据所分配的权值将所述至少两个实时视频流组合。可基于能够比较的视频流的发起位置、可靠性或任何其他参数来分配权值。
[0011]以下描述和附图阐述了本说明书的某些说明性方面。然而,这些方面指示可用以采用本说明书的原理的几个不同方式。当结合附图来考虑时,从本说明书的以下详细描述,本说明书的其他目的、优点和新型特征将变得显而易见。

【专利附图】

【附图说明】
[0012]在考虑结合附图进行的以下详细描述时,本发明的许多方面、实施例、目的和优点将是显而易见的,在附图中相同的附图标记自始至终指示相同的部分,并且在所述附图中:
[0013]图1图示出根据本文所述的各个方面和实施方式的促进主媒体流的生成的示例性非限制性系统;
[0014]图2图示出根据本文所述的各个方面和实施方式的使至少两个媒体流同步以促进所述至少两个实时视频流的组合的示例性非限制性系统;
[0015]图3图示出根据本文所述的各个方面和实施方式的至少两个实时视频流的生成的示例性非限制性描述;
[0016]图4图示出根据本文所述的各个方面和实施方式的不同地理位置处的视频流的处理的示例性非限制性描述;
[0017]图5图示出根据本文所述的各个方面和实施方式的促进给最终用户的主视频流的服务的示例性非限制性系统;
[0018]图6图示出根据本文所述的各个方面和实施方式的示出了在视频流中发送的不同类型的分组的图例的示例性非限制性描述;
[0019]图7图示出根据本文所述的各个方面和实施方式的在主视频流的生成中利用的具有不同流毁坏或流错误的不同视频流的示例性非限制性描述;
[0020]图8图示出根据本文所述的各个方面和实施方式的通过根据处方(recipe)将视频流组合来促进数据中心处的主视频流生成的示例性非限制性系统;
[0021]图9图示出根据本文所述的各个方面和实施方式的通过用来自外部视频流的分组来替换本地视频流中的分组而生成主视频流的示例性非限制性系统;
[0022]图10图示出根据本文所述的各个方面和实施方式的通过根据处方用来自外部视频流的分组来补偿本地视频流中的流毁坏或流错误而促进数据中心处的主视频流的生成的示例性非限制性系统;
[0023]图11图示出根据本文所述的各个方面和实施方式的用于生成主视频流的示例性非限制性方法;
[0024]图12图示出根据本文所述的各个方面和实施方式的用于从已遭受流毁坏或流错误的至少两个实时视频流生成基本上无错误的主视频流的示例性非限制性方法;
[0025]图13图示出根据本文所述的各个方面和实施方式的用于使用分配给已遭受流毁坏或流错误的视频流的权值来生成主视频流的示例性非限制性方法;
[0026]图14图示出用于实现本文所述一个或多个实施例的示例性非限制性联网或分布式计算环境的示意图;以及
[0027]图15图示出其中可以实现各种实施例的示例性非限制性计算系统或操作环境的框图。

【具体实施方式】
[0028]参考附图来描述本公开的各种方面或特征,其中,相同的附图标记自始至终用来指代相同的元件。在本说明书中,阐述了许多特定细节以便提供本公开的透彻理解。然而,应理解的是可在没有这些特定细节的情况下或者用其他方法、部件、材料等来实施公开的某些方面。在其他情况下,以框图形式示出了众所周知的结构和设备以促进本创新的描述和图不。
[0029]将认识到的是根据本公开中所述的一个或多个实施例或实施方式,可以通过网络来接收实时视频流的多个副本。当在本文中使用时,术语“视频流”将被理解为指的是实时视频流。视频流的多个副本每个可以遭受各种流毁坏或错误。可以修正视频流的多个副本中的流毁坏或错误并且可以存储已修正的视频流并派发给最终用户。已修正的视频流消除可见伪像和与流毁坏或流错误相关联的其他问题。
[0030]现在参考附图,最初参考图1,呈现了促进主视频流的生成的系统100。在本公开中解释的系统、设备和过程的各方面可以组成在一个或多个机器内体现、例如在与一个或多个机器相关联的一个或多个计算机可读介质中体现的机器可执行部件。一个或多个此类部件在被一个或多个机器、例如一个或多个计算机、一个或多个计算设备、一个或多个虚拟机等执行时可以促使一个或多个机器执行所述操作。系统100可以包括用于存储计算机可执行部件和指令的存储器,并且一个或多个处理器可以促进由系统100进行的计算机可执行部件和指令的操作。
[0031]在实施例中,系统100可以包括一个或多个媒体内容生成器102和组合部件108。系统100表示可以在一个或多个数据中心中的一个或多个计算机或设备中采用以提供主媒体流110的系统。一个或多个媒体内容生成器102生成至少两个媒体流104a、104b。虽然图示出仅两个数据流的生成,但将理解的是一个或多个媒体内容生成器102可以生成大于或等于两个的任何数目(N)的媒体流。根据实施例,生成的媒体流的数目可以是四个(N=4)。根据另一实施例,生成的媒体流的数目可以是大于3的任何奇数(N > 3)。在实施例中,媒体流104a、104b可以是彼此相同的副本。根据另一实施例,媒体流104a、104b可以相互不同(例如,可以相互不同地对媒体流104a、104b进行编码)。
[0032]通过由组合部件108进行的两个或更多媒体流104a 104b的组合,主媒体流100可以是基本上无错误的。组合部件108可以利用与媒体流104a、104b相关联的指纹或其他元数据106a、106b来匹配媒体流104a、104b的各种段或分组以促进组合。组合部件108可以利用使媒体流104a、104b的段匹配并用另一媒体流104a或104b的完整段来替换一个媒体流104a或104b的丢失段。
[0033]本文所使用的术语“媒体”可以包括任何多媒体数据。多媒体数据的示例包括但不限于:视频数据、音频数据、视频游戏数据或可以流送的任何其他类型的数据。本文所使用的术语“段”指的是媒体流的任何部分。例如,媒体流的段可以是经由用户数据报协议(UDP)发送的视频流的分组。常常经由经受流毁坏或流错误的不可靠协议(类似于UDP)通过网络来发送数字视频流。数字视频流被划分成分组或数据报并根据UDP来发送;然而,UDP不提供对分组进行序列化以用于数字视频流的重组。不能对分组进行序列化导致流毁坏或流错误。在数字视频流的播放期间,流毁坏或流错误可以引起可见伪像。在某些情况下,流毁坏或流错误可以促使后续解码器系统崩溃。将理解的是媒体流的段可以指的是经由任何协议从源发送到目的地的媒体流的任何部分。例如,可以跨更可靠的协议(诸如TCP/IP)发送媒体流。
[0034]现在参考图2,示出了使至少两个媒体流104a、104b同步以促进至少两个实时视频流104a、104b的组合的系统200。根据实施例,系统200可以包括一个或多个媒体内容生成器102、同步部件202以及组合部件108。一个或多个媒体内容生成器提供两个或更多媒体流104a、104b。两个或更多媒体流104a、104b和与媒体流104a、104b相关联的指纹或其他元数据106a、106b被发送到同步部件202。同步部件可以使至少两个实时视频流104a、104b同步以促进由组合部件108将至少两个实时视频流104a、104b组合成主媒体流110。
[0035]在实施例中,同步部件202可以使媒体流104a的段的指纹或其他相关联的元数据104a与另一媒体流104b的相应段的指纹或其他相关联的元数据104b匹配。当在本文中使用时,“指纹”指的是与媒体流的段的一组数据分组相关联的元数据。同步部件202创建被发送到组合部件108以促进主媒体流110的生成的同步媒体流204a、204b。
[0036]在从任何类型的媒体流中的两个或更多生成主媒体流110时可以利用图1和2的系统100和200。图3-10图示出相对于特定示例:视频流的本公开的实施例和方面。将理解的是图3-10中的相对于视频流所述的实施例和方面可以用于图1和2的系统100和200的任何媒体流。
[0037]图3中所示的是至少两个实时视频流306和308的生成的示例性非限制性描述300。可以由媒体内容生成器102来生成所述至少两个实时视频流306、308。根据实施例,媒体内容生成器102可以包括相机302和编码器304。
[0038]相机302可以记录与任何事件有关的视频数据。例如,相机可以记录实时事件的视频数据。根据实施例,实时事件可以是体育事件。然而,该事件不必局限于实时事件。
[0039]可以将视频数据发送到可以对视频数据进行编码以便跨协议发送到至少两个数据中心(如图3中所示的数据中心A和B)的视频数据进行编码的编码器304。例如,数据中心A可以从编码器304接收视频流A 306,而数据中心B可以从编码器304接收单独视频流 B 308 ο
[0040]数据中心A位于地理位置A 310处。同样地,数据中心B位于地理位置B 312处。根据实施例,地理位置A和地理位置B可以位于相互远离处。例如,地理位置A可以在北美,而地理位置B可以在欧洲。然而,将理解的是地理位置A和B不必位于相互远离处。例如,地理位置A和B两者可以位于美国的同一机构中,但是地理位置A和B可以对应于接收不同视频流306、308的不同硬件或软件。
[0041]图4图示出位于不同地理位置A和B 310、312处的不同数据中心处的视频流306、308的处理的示例性非限制性描述400。地理位置A310处的数据中心A包括将视频流306发送到另一路由器(路由器Al)406以用于进一步分发的路由器(路由器A)402。路由器(路由器A) 402还将视频流306的副本发送到另一路由器(路由器A2) 408。路由器(路由器Al和路由器A2) 406和408促进相应视频流306和视频流306的副本到相应代理(代理Al和代理A2) 414和416的传输。
[0042]“代理”是用于视频流306和视频流306的副本的不同“目的地点”且与存储设备422,424相关联,其提供对应于视频流306或视频流306的副本的视频段104a、104b和相关联的元数据106a、106b的至少临时存储。存储422、424可以是基于存储器或盘的。根据实施例,利用基于盘的存储,因为基于此盘的存储提供高度的可靠性,因为即使在存在代理414、416故障的情况下,基于盘的存储也是持久性的。
[0043]代理(代理Al和代理A2) 414和416确定与视频流306和视频流306的副本的分组相关联的指纹或其他元数据。视频流104a 104b的分组和相关联的指纹或其他元数据106a、106b被至少临时地存储在地理位置A 310内的不同位置处的存储设备422和424中。作为非限制性示例性,如果地理位置A 310是美国,则路由器402可以位于纽约市,而路由器406、代理414和存储设备422可以位于纽约市且路由器406、代理416和存储设备424可以位于波士顿。将理解的是美国、纽约市和波士顿可以是任何国家、州、省或地区。
[0044]在非限制性示例中,可以经由UDP或网络隧道上UDP将视频流A 306和视频流A的副本多播到各个路由器402、406、408或代理414、416。根据实施例,可以将视频流A 306和视频流A 306的副本接收为密封MEG2传输流(M2TS),其可以被实时传输协议(RTP)进一步密封。然而,可以有其他格式,诸如实时通讯协议(RTMP)上的flash视频(FLV)。
[0045]在每次传输时,视频流A 306和视频流A 306的副本可能遭受流毁坏或流错误。当在本文中使用时,“流毁坏或流错误”指的是遗漏,毁坏或被损坏的视频段。视频流A 306和视频流A 306的副本的流毁坏或流错误被假设为是独立的。换言之,视频流A 306遭受不与视频流A 306的副本的流毁坏或流错误相关的流毁坏或流错误。同样地,视频流A 306的流毁坏或流错误被假设为独立于视频流B的流毁坏或流错误。
[0046]类似于位于位置A 310处的数据中心,位于位置B 312处的数据中心包括将视频流308发送到另一路由器(路由器BI) 410以用于进一步分发的路由器(路由器B) 404。路由器(路由器B)404还将视频流308的副本发送到另一路由器(路由器B2)412。路由器(路由器B I和路由器B2) 410和412促进相应视频流308和视频流308的副本到相应代理(代理BI和代理B2) 418和420的传输。根据实施例,可以将视频流B 308和视频流B 308的副本接收为密封MEG2传输流(M2TS),其可以被实时传输协议(RTP)进一步密封。然而,可以有其他格式,诸如实时通讯协议(RTMP)上的flash视频(FLV)。
[0047]代理(代理BI和代理B2) 418和420确定与视频流308和视频流308的副本的分组相关联的指纹或其他元数据。视频流104c、104d的分组和相关联的指纹或元数据106c、106d被存储在地理位置B 312内的不同位置处的存储设备426和428中。
[0048]在非限制性示例中,类似于视频流A 306,可以经由UDP或网络隧道上UDP将视频流B 308和视频流B 306的副本多播到各种路由器404、410、412或代理418、420。在每次传输时,视频流B 308和视频流B 308的副本可能遭受流毁坏或流错误。视频流B 308和视频流B 308的副本的流毁坏或流错误被假设为是独立的。换言之,视频流B 308遭受不与视频流B 308的副本的流毁坏或流错误相关的流毁坏或流错误。视频流B 308的流毁坏或流错误也被假设为独立于视频流A 306的流毁坏或流错误。
[0049]可以结合图5的系统500而利用图3和4的描述300和400以促进给最终用户的主视频流110a、110b、110c、I1d的服务。该系统包括获取可能毁坏的视频流104a、104b、104c、104d、检测错误并修正错误的拼接器(stitcher) 502。根据实施例,拼接器502可以通过用来自不同流的无错误分组来替换具有错误的分组而修正错误。在另一实施例中,拼接器502可以促进流中的错误的修正。拼接器502包括如相对于图1所述的组合部件108。可选地,根据实施例,拼接器502还可以包括如相对于图2所述的同步部件202。
[0050]拼接器502可以从不同的位置接收视频流104a、104b、104c、104d和相关联的指纹或其他元数据106a、106b、106c、106d。根据实施例,拼接器可以从来自图4的数据位置A的存储422和424接收视频104a、104b和相应指纹或其他元数据106a、106b并从图4的数据中心B的存储426和428接收视频104c、104d和相应指纹及其他元数据106a、106b。
[0051]拼接器502的组合部件108可以将视频流104a、104b、104c、104d组合以检测且消除视频流104a、104b、104c、104d中的错误。组合部件108可以检测毁坏段、遗漏段、复制段以及假段。根据实施例,组合部件108不需要检测特定类型的错误。例如。组合部件108可以将毁坏段和假段检测为相同种类的“噪声”。
[0052]组合部件108可以消除任何所检测的流毁坏或流错误或错误并产生被发送到存储设备504、506、508、510的冗余主副本110a、110b、110c、IlOcL虽然存储设备504,506,508,510被示为与存储422、424、426、428分开的存储设备,但将理解的是存储设备可以是相同的(例如,存储422对应于存储504、存储424对应于存储506、存储426对应于存储508、存储428对应于存储508)。
[0053]冗余主副本110a、110b、110c、I 1d未遭受视频流104a、104b、104c、104d中的流毁坏或流错误。组合部件108将视频流104a、104b、104c、104d组合以消除任何流毁坏或流错误,使得主副本110a、110b、110c、I 1d基本上无错误。根据实施例,同步部件202可以根据相关联的指纹或元数据106a、106b、106c、106d使视频流104a、104b、104c、104d同步。同步部件202可以促进由组合部件108将视频流104a、104b、104c、104d组合成冗余主视频流110a、110b、110c、110d。
[0054]系统500还包括视频服务器512,其能够促进给最终用户的冗余主视频流110a、110b、110c、110d中的一个的服务。视频服务器512可以访问任何存储位置504、506、508、510以促进服务。根据实施例,视频服务器可以根据每个存储位置的负荷、每个存储位置的可靠性、每个存储位置的位置、用于每个存储位置的预定义访问调度或能够用来确定存储位置中的哪一个可以快速地且准确地哪个存储位置可以给最终用户派发视频馈送的任何其他参数来访问存储位置504、506、508、510。
[0055]图6和7图示出可以用来生成基本上无错误的主视频流的具有不同流毁坏或流错误的不同视频流的描述600、700。图6图示出存在于数据流中的不同类型的段或分组的图例600。针对每个段,视频流被假设为具有没有错误或流毁坏或流错误的视频段602。虽然可以存在许多类型的流毁坏或流错误,但任何流毁坏或流错误被假设为落入在毁坏视频段608或遗漏视频段610的种类中。毁坏视频段608可以包括毁坏、重复、假的等任何视频段。根据另一实施例,某些错误可以忽视。
[0056]根据实施例,没有错误的视频段602可以包括指纹606。毁坏视频段608也可以包括指纹614,但是指纹614可以不同于将提供给没有错误或毁坏的同一段的指纹。根据实施例,分组可以是表示内容的摘要或尺寸减小的值。然而,指纹不必是表示内容的摘要或尺寸减小的值。在另一实施例中,分组可以是内容的一部分或整个内容。
[0057]没有错误的视频段602还可以包括附加元数据。根据实施例,附加元数据可以包括时间戳604。
[0058]图7图示出在主视频流的生成中利用的具有不同流毁坏或流错误的不同视频流的描述700。主视频流是基本上无错误的,即使不同的视频流每个显示出不同的流毁坏或流错误。
[0059]现在参考图8,图示出通过根据处方810来组合视频而促进数据中心处的主视频流I1的生成的系统800。系统800包括相对于图5所述的拼接器502。拼接器从位于不同数据中心820、840、860、880处的存储422、424、426、428接收视频流。拼接器502执行视频流的确定性分段。根据实施例,拼接器502检测视频流中的触发段边界创建的某些区别标记。可以采用不同的分段方法。根据实施例,如果视频流的分组非常小且被确定为不重要,则可以将段序列组合成较长的视频段。
[0060]拼接器502可以采用比较部件108来比较视频流的不同段并对显示出错误的任何段执行修正。根据实施例,可以以逐段方式来进行比较。该逐段比较允许拼接器502确定两个或更多分组是相等还是不相等。通过不比较实际段内容而是比较段内容的指纹或其他元数据而使得比较更加高效。例如,元数据可以包括段的时间代码、随后段的时间代码以及内容的散列码。在另一实施例中,如果基于元数据的比较是不可用的,例如因为输入流并不是位相同的,则可以采用基于视频内容的相似性度量。基于内容的相似性度量的示例包括图像与图像匹配、基于直方图的匹配、基于特征的匹配、基于压缩域的匹配等。
[0061]基于指纹或其他元数据来比较段允许拼接器502避免从数据中心820、840、860、880(或数据中心820、840、860、880处的代理)获取实际视频段。替代地,拼接器502只需要获取视频段的指纹或其他元数据表示,其使得拼接器502在网络带宽和CPU利用率两者方面都是高效的。视频数据的实际获取被延迟直至比较完成为止,并且拼接器502需要找到主视频流110的每个段的副本。
[0062]根据实施例,拼接器可以创建用于创建到每个数据中心820、840、860、880的主视频流110的处方810。将仅描述数据中心A 820处的主视频流110的创建。然而,将理解的是可以针对每个数据中心创建类似处方。可以将处方810发送到数据中心820处的协调器802。每个数据中心840、860、880具有能够类似地操作的相应协调器804、806、808。
[0063]协调器802可以检索对应于处方810的视频段。处方810在每当可能的情况下使用本地存储的段。只有当在本地存储的分组中发生流毁坏或流错误时,处方810才要求外部存储的段。
[0064]虽然仅一个外部数据中心(数据中心D 880)被示为向数据中心A820的协调器提供外部分组,但将理解的是所有其他数据中心840、860、880可以向数据中心A 820提供外部分组。如图9中所示,可以根据处方810从任何外部数据中心检索外部分组。
[0065]图10图示出类似于系统800的系统1000。系统1000通过根据处方1002用来自外部视频流的分组来补偿本地视频流中的流毁坏或流错误而促进数据中心D 880处的主视频流的生成。处方1002在段经历流毁坏或流错误或其他错误时检索外部段,并且在不存在错误时默认返回到本地副本。
[0066]每个其他数据中心820、840、860是协调器808可访问的。处方指示外部段可以来自数据中心A 820、数据中心B 840或数据中心C860。根据实施例,将提供外部段的数据中心的选择可以基于用于在外部数据源之间进行切换的调度。在另一实施例中,将提供外部段的数据中心的选择可以基于给予不同数据中心820、840、860的权值。该权值可以基于数据中心的任何参数,诸如位置、可靠性、负荷等。在权值基于位置的情况下,数据中心C 860可以具有高于数据中心A和B820和840的权值,因为数据中心C 860在与数据中心D 880相同的地理位置。然而,如果在地理位置中存在一般中断,则位于不同地理位置处的数据中心A和B 820和840可以具有大于数据中心C 860的权值。
[0067]图11-13图示出根据本公开的实施方式的方法和/或流程图。为了说明的简化起见,将该方法描绘并描述为一系列动作。然而,根据本公开的动作可以按照各种顺序和/或同时地发生,以及与在本公开中并未提出和描述的其他动作一起发生。此外,可能并非所有所示动作都是实现根据公开主题的方法所需要的。另外,本领域的技术人员将理解和认识到的是可以经由状态图或事件替选地将该方法表示为一系列互相关状态。另外,应进一步认识到的是在本说明书中公开的方法能够存储在制品上以促进将此类方法传送和传输到计算设备。如在本公开中所使用的术语意图涵盖可从任何计算机可读设备或计算机可读存储/通信介质访问的计算机程序。
[0068]参考图11,提出了根据实施例的在本说明书中描述的系统的示例性应用的流程图。在一方面,用于生成主视频流的系统的示例性方法1100被存储在存储器中且利用处理器来执行计算机可执行指令以执行功能。在1102处,接收至少两个实时视频流(例如,使用组合部件108)。在1104处,将所述至少两个实时视频流组合(例如,使用组合部件108)。在1106处,从所述至少两个实时视频流生成主视频流(例如,使用组合部件108)。
[0069]参考图12,提出了根据实施例的在本说明书中描述的系统的示例性应用的流程图。在一方面,用于来自已遭受流毁坏或流错误的至少两个实时视频流的基本上无错误的主视频流的系统的示例性方法1200存储在存储器中并利用处理器来执行计算机可执行指令以执行功能。在1202处,接收具有第一流毁坏或流错误的第一数据流和具有第二流毁坏或流错误的第二数据流(例如,使用拼接器502从数据中心820、840、860、880)。在1204处,用第二数据流的相应分组来修正第一数据流的第一流毁坏或流错误(例如使用拼接器502的修正部件108)。在1206处,生成基本上无错误的主视频流(例如,由拼接器502)。
[0070]参考图13,提出了根据实施例的在本说明书中描述的系统的示例性应用的流程图。在一方面,用于使用分配给已遭受流毁坏或流错误的视频流的权值来生成主视频流的系统的示例性方法1300被存储在存储器中并利用处理器来执行计算机可执行指令以执行功能。
[0071]在1302处,向至少三个数据源分配权值(例如,使用数据源820、840、860或880处的协调器802、804、806或808)。例如,可以为与协调器相关联的数据源分配最高或默认权值,同时可基于许多参数为其他数据源分配权值,其他参数诸如位置、可靠性、负荷等。在1304处,在来自数据源中的一个的视频段中检测错误(例如,使用拼接器502)。在1306处,根据权值用来自其他数据源中的一个的相应视频段来修正该视频段中的错误(例如,使用协调器802、804、806或808和来自拼接器502的处方810)。
[0072]示例性联网和分布式环境
[0073]本领域的技术人员可以认识到的是可以结合任何计算机或其他客户端或服务器设备来实现本文所述的各种实施例,其可以被部署为计算机网络的一部分或者在分布式计算环境中,并且可以连接到其中可找到媒体的任何种类的数据存储。在这方面,可以在具有任何数目的存储器或存储单元以及跨任何数目的存储单元发生的任何数目的应用和进程的任何计算机系统或环境中实现本文所述的各种实施例。这包括但不限于具有部署在网络环境或分布式计算环境中的服务器计算机和客户端计算机的环境,具有远程或本地存储。
[0074]从位于分布式数据中心处的至少两个媒体流创建基本上无错误的主媒体流包括用于对象的信息交换、高速缓存器存储和磁盘存储,所述对象诸如视频流或视频流的各部分。在这方面,多种设备可具有可参与本公开的各种实施例的应用、对象或资源。
[0075]图14提供了其中可以实现本文所述的实施例的示例性联网或分布式计算环境的示意图。分布式计算环境包括计算对象1410、1412等和计算对象或设备1420、1422、1424、1426、1428等,其可以包括如应用1430、1432、14341436、14314所表示的程序、方法、数据存储、可编程逻辑等。可以认识到的是计算对象1410、1412等和计算对象或设备1420、1422、1424、1426、1428等可以包括不同的设备,诸如个人数字助理(PDA)、音频/视频设备、移动电话、MPEG-1音频层3 (MP3)播放器、个人计算机、膝上计算机、平板电脑等。
[0076]每个计算对象1410、1412等和计算对象或设备1420、1422、1424、1426、1428等可以直接地或间接地经由通信网络1440与一个或多个其他计算对象1410、1412等和计算对象或设备1420、1422、1424、1426、1428等通信。即使在图14中被示为单个元件,通信网络1440可以包括向图14的系统提供服务的其他计算对象和计算设备和/或可以表示未示出的多个互联网络。每个计算对象1410、1412等或计算对象或设备1420、1422、1424、1426、1428等还可以包含应用,诸如应用1430、1432、1434、1436、1438,其可能利用应用编程接口(API)或其他对象、软件、固件和/或硬件,适合于与本公开的各种实施例进行通信或实现该实施例。
[0077]存在支持媒体流的分布式存储和基本上无错误的主媒体流的创建的多种系统、部件以及网络配置。例如,可以用有线或无线系统、用本地网络或广泛分布网络将计算系统连接在一起。当前,许多网络被耦合到因特网,其提供用于广泛分布计算的基础设施并涵盖许多不同网络,但可以将任何网络基础设施用于对系统进行的示例性实施例,如在各种实施例中所述。
[0078]因此,可以利用大量的网络拓扑和网络基础设施,诸如客户端/服务器、端对端或混合式架构。客户端可以是使用另一类或群组的服务的类或群组的成员。客户端可以是计算机过程,例如大致上一组指令或任务,其请求由另一程序或进程提供的服务。客户端可以在不必知道关于其他程序或服务本身的所有工作细节的情况下利用所请求服务。
[0079]如在本申请中使用的术语“部件”、“模块”、“系统”等意图指的是计算机相关实体,为硬件、软件、固件、硬件和软件的组合、软件和/或执行中的软件。例如,部件可以是但不限于是在处理器上运行的进程、处理器、对象、可执行指令、执行线程、程序和/或计算机。以举例说明的方式,在计算设备上运行的应用和/或计算设备两者都可以是部件。一个或多个部件可以存在于执行的进程和/或线程内,并且可以将部件定位于一个计算机上和/或分布在两个或更多计算机之间。另外,这些部件可以从具有存储在其上面的各种数据结构的各种计算机可读存储介质执行。该部件可以经由本地和/或远程进程进行通信,诸如根据具有一个或多个数据分组的信号(例如,来自在本地系统、分布式系统中和/或经由信号与其他系统跨网络与另一部件相交互的一个部件的数据,所述网络诸如因特网)。
[0080]此外,术语“或”意图意指包括性“或”而非排他性“或”。也就是说,除非另外指明或从上下文显而易见,短语“X采用A或B”意图意指任何自然的包括性置换。也就是说,用任何一下实例来满足短语“X采用A或B”:X采用A ;X采用B ;或X采用A和B两者。另外,一般地应将在本申请和所附权利要求中所使用的冠词“一”和“一个”理解成意指“一个或多个”,除非另外指定或从上下文显而易见是针对单数形式。
[0081]在客户端/服务器结构中,特别是联网系统,客户端可以是访问由另一计算机、例如服务器提供的共享网络资源的计算机。在图14的图示中,作为非限制性示例,可以将计算对象或设备14201422、1424、1426、1428等视为客户端且可以将计算对象1410、1412等视为服务器,其中,计算对象1410、1412等提供数据服务,诸如从客户端计算对象或设备1420、1422、1424、1426、1428等接收数据、存储数据、处理数据、向客户端计算对象或设备1420、1422、1424、1426、1428等发送数据,但根据情况,可以将任何计算机视为客户端、服务器或两者。这些计算设备中的任何一个可处理数据或请求交易服务或任务,其可以暗示用于如本文针对一个或多个实施例所述的系统的技术。
[0082]服务器通常可以是可通过远程或本地网络访问的远程计算机系统,诸如因特网或无线网络基础设施。客户端进程可以在第一计算机系统中活动,并且服务器进程可以在第二计算机系统中活动,通过通信介质相互通信,因此提供分布式功能并允许多个客户端利用服务器的信息收集能力。可以独立地提供根据本文所述的技术利用的任何软件对象,或者跨多个计算设备或对象分布。
[0083]在其中通信网络/总线1440可以是因特网的网络环境中,例如,计算对象1410、1412等可以是web服务器、文件服务器、媒体服务器等,客户端计算对象或设备1420、1422、1424、1426、1428等经由许多已知协议中的任何一个、诸如超文本传输协议(HTTP)与之进行通信。计算对象1410、1412等还可以充当客户端计算对象或设备1420、1422、14241426、1428等,其可以是被用于媒体流的分布式存储和主视频流的创建的分布式计算环境的特性。
[0084]示例性计算设备
[0085]如所述,有利地,本文所述的技术可以应用于任何适当设备。因此,应理解的是可预期各种各样的手持式、便携式及其他计算设备和计算对象结合各种实施例使用,即在设备可能希望从或向数据库读取或写入事务的任何地方。因此,下面在图15中所述的以下远程计算机仅仅是计算设备的一个示例。另外,适当的服务器可以包括以下计算机的一个或多个方面,诸如媒体服务器或其他媒体管理服务器部件。
[0086]虽然并不要求,但可以部分地经由操作系统来实现实施例,以供用于设备或对象的服务的开发者使用,和/或包括在进行操作以执行本文所述的各个实施例的一个或多个功能方面的应用软件内。可以在计算机可执行指令的一般背景下描述软件,诸如程序模块,由一个或多个计算机、诸如客户端工作站、服务器或其他设备执行。本领域的技术人员将认识到的是计算机系统具有可以用来传送数据的多种配置和协议,并且因此不应将特定配置或协议视为限制性的。
[0087]图15因此图示出其中可以实现本文所述实施例的一个或多个方面的适当计算环境1500的示例,但如上文阐明的,计算环境1500仅仅是适当计算环境的一个示例,并且并不意图暗示关于使用或功能的范围的任何限制。也不应将计算环境1500解释为具有关于在示例性计算环境1500中所示的部件中的任何一个或组合的任何依赖性或要求。
[0088]参考图15,用于实现一个或多个实施例的示例性计算环境1500包括以计算机150的形式提供的计算设备。计算机1510的部件可以包括但不限于处理单元1520、存储器1530以及将包括系统存储器的各种系统部件耦合到处理单元1520的系统总线1522。系统存储器可以存储部件,例如拼接器502、组合部件108、协调器802、804、806、808等。处理器1520可以促进部件的执行。
[0089]计算机1510通常包括多种计算机可读介质且可以是能够被计算机1510访问的任何可用介质。存储器1530可以包括采取易失性和/或非易失存储器的形式的计算机存储介质,诸如只读存储器(ROM)和/或随机存取存储器(RAM)。数据中心820、840、860和880可以采用易失性或非易失存储器或其某些组合。以示例而非限制的方式,存储器1530还可以包括操作系统、应用程序、其他程序模块以及程序数据。
[0090]用户可以通过输入设备1540向计算机1510中输入命令和信息,输入设备1540的非限制性示例可以包括键盘、键区、指示设备、鼠标、触针、触控板、触摸屏、轨迹球、运动检测器、相机、麦克风、操纵杆、游戏板、扫描仪或允许用户与计算机1510相交互的任何其他设备。还可以经由接口、诸如输出接口 1550将监视器或其他类型的显示设备连接到系统总线1522。除监视器之外,计算机还可以包括其他外围输出设备,诸如扬声器和打印机,其可以通过输出接口 1550来连接。
[0091]计算机1510可以使用到一个或多个其他远程计算机或远程数据中心820、840、860、880、诸如远程计算机1570的逻辑连接在联网或分布式环境中操作。远程计算机1570可以是个人计算机、服务器、路由器、网络PC、对端设备或其他公共网络节点或任何其他远程媒体消费或传输设备,并且可以包括上文相对于计算机1510所述的任何或所有元件。图15中所描述的逻辑连接包括网络1572,诸如局域网(LAN)或广域网(WAN),但还可以包括其他网络/总线,例如蜂窝式网络。
[0092]如上所述,虽然已结合各种计算设备和网络架构描述了示例性实施例,但底层概念可以应用于其中期望以灵活的方式发布或消费媒体的任何网络系统和任何计算设备或系统。
[0093]而且,存在用以实现相同或类似功能的多个方式,例如适当的AP1、工具箱、驱动器代码、操作系统、控件、独立或可下载软件对象等,其使得应用和服务能够利用本文所述的技术。因此,从API (或其他软件对象)以及从实现本文所述的一个或多个方面的软件或硬件对象的观点出发可预期本文中的实施例。因此,本文所述的各种实施例可以具有完全用硬件、部分地用硬件且部分地用软件以及用软件的各方面。
[0094]计算设备通常包括各种介质,其可以包括计算机可读存储介质和/或通信介质,其中,在本文中如下所述相互不同地使用这两个术语。计算机可读存储介质可以是能够被计算机访问的任何可用存储介质,通常是非临时性质的,并且可以包括易失性和非易失介质、可移动和不可移动介质两者。以示例而非限制的方式,可以结合用于存储信息的任何方法或技术来实现计算机可读存储介质,诸如计算机可读指令、程序模块、结构化数据或非结构化数据。计算机可读存储介质可以包括但不限于RAM、ROM、电可擦可编程只读存储器(EEPROM)、闪速存储器或其他存储技术、紧凑式盘只读存储器(⑶-ROM)、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储器件或可以用来存储期望信息的其他有形和/或非临时介质。计算机可读存储介质可以被一个或多个本地或远程计算设备访问,例如经由访问请求、查询或其他数据检索协议,以用于相对于由介质存储的信息的多种操作。
[0095]另一方面,通信介质通常用诸如已调制数据信号(例如载波或其他传输机制)的数据信号来体现计算机可读指令、数据结构、程序模块或其他结构化或非结构化数据,并且包括任何信息传送或传输介质。术语“已调制数据信号”或多个信号指的是其特性中的一个或多个或以从而对一个或多个信号中的信息进行编码的方式设定或改变的信号。以示例而非限制的方式,通信介质包括诸如有线网络或直接有线连接之类的有线介质以及诸如声学、射频(RF)、红外及其他无线介质之类的无线介质。
[0096]应理解的是可以用硬件、软件、固件、中间件、微代码或其任何组合来实现本文所述的实施例。针对硬件实施方式,可以在一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSro)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和/或被设计成执行本文所述功能的其他电子单元或其组合内实现处理单元。如在本说明书中所采用的术语"处理器"可以指的是基本上任何计算处理单元或设备,包括但不限于单核处理器;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;并行平台;以及具有分布式共享存储器的并行平台。另外,处理器可以指的是集成电路、专用集成电路(ASIC)、数字信号处理(DSP)、现场可编程门阵列(FPGA)或可编程序逻辑控制器(PLC)、复杂可编程逻辑器件(CPLD)、分立门或晶体管逻辑、分立硬件部件或其任何组合,其被设计成执行本公开所述功能。处理器可以利用纳米级架构,诸如但不限于基于分子或量子点的晶体管、开关或门,以便优化空间使用或增强用户设备的性能。还可将处理器实现为计算处理单元的组合。
[0097]当用软件、固件、中间件或微代码、程序代码或代码段来实现实施例时,可以将其存储在机器可读介质(或计算机可读存储介质)中,诸如存储部件。代码段可以表示程序、函数子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而将代码段耦合到另一代码段或硬件电路。可以使用任何适当手段来传递、转送或发送信息、自变量、参数、数据等,所述适当手段包括存储器共享、消息传递、令牌传递、网络传输等。
[0098]针对软件实现,可以用执行本文所述功能的模块或部件(例如,程序、函数等)来实现本文所述的技术。可以将软件代码存储在存储器单元中并由处理器来执行。可以在处理器内或者在处理器外部实现存储器单元,在这种情况下,可以经由各种结构将其通信耦合到处理器。
[0099]遍及本说明书对“一个实施例”或“实施例”的引用意指结合实施例所述的特定特征、结构或特性被包括在至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及本说明书的各种位置上的出现不一定全部引用同一实施例。此外,可以在一个或多个实施例中以任何适当方式将特定特征、结构或特性组合。
[0100]词语“示例”或“示例性”在本公开中用来意指充当示例、实例或图示。在本公开中描述为“示例性”的任何方面或设计不一定被理解为相比于其他方面或设计而言是优选或有利的。相反地,词语“示例”或“示例性”的使用意图以具体的方式呈现概念。在本说明书中,利用诸如“数据存储”、“缓冲器”和关于部件的操作和功能的基本上任何其他信息存储部件之类的术语来指示“存储器部件”或在“存储器”或包括存储器的部件中体现的实体。将认识到的是在本公开中所述的存储器部件或计算机可读存储介质可以是易失性存储器或非易失存储器,或者可以包括易失性和非易失存储器。以图示而非限制的方式,非易失存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器可以包括随机存取存储器(RAM),其充当外部高速缓冲存储器。以图示而非限制的方式,RAM以许多形式可用,诸如静态RAM(SRAM)、动态RAM (DRAM)、同步 DRAM (SDRAM)、双倍数据速率 SDRAM (DDR SDRAM)和增强型 SDRAM (ESDRAM)。另外,本公开中的系统或方法的公开存储器部件意图包括但不限于包括这些和任何其他适当类型的存储器。
[0101]上文描述的内容包括本发明的实施例的示例。当然,不可能出于描述要求保护的主题的目的而描述部件或方法的每个可预期组合,但是应认识到的是可以有本创新的许多其他组合或置换。相应地,要求保护的主题意图涵盖落在所附权利要求的精神和范围内的所有变更、修改和变化。此外,不应将某些或所有过程块在每个过程中出现的顺序视为是限制性的。相反地,应理解的是可以按照在本公开中未示出的多种顺序来执行某些过程块。此夕卜,本公开的所示实施例的以上描述(包括在摘要中描述的内容)不意图是穷举的或使公开的实施例局限于公开的精确形式。虽然在本公开中出于说明性目的描述了特定实施例和示例,但可以有各种修改,其被视为在此类实施例和示例的范围内,如相关领域的技术人员可以认识到的。
[0102]特别地且关于由上述部件、模块、系统等执行的各种功能,用来描述此类部件的术语意图(除非另外指明)对应于执行所述部件(例如,功能等价物)的指定功能的任何部件,即使在结构上并未等价于公开结构,其执行要求保护的主题的本文所示示例性方面中的功能。已相对于多个部件和/或块之间的相交互而描述了上述系统、设备以及电路。可以认识到的是此类系统、设备、电路以及部件和/或块可以包括那些部件或指定子部件、指定部件或子部件中的某些和/或附加部件以及根据前述内容的各种排列和组合。还可以将子部件实现为通信耦合到其他部件而不是包括在父部件(分级)内的部件。另外,应注意的是可将一个或多个部件组合成提供聚合功能的单个部件或划分成多个单独子部件,并且可提供任何一个或多个中间层(诸如管理层)以通信耦合到此类子部件以便提供集成功能。在本公开中描述的任何部件还可与在本公开中未具体地描述但为本领域的技术人员所知的一个或多个其他部件相交互。
[0103]另外,虽然可相对于多个实施方式中的仅一个来公开本创新的特定特征,但可将此类特征与其他实施方式的一个或多个其他特征组合,如对于任何给定或特定应用而言可能期望且有利的。此外,在术语“包括”、“包含”、“具有”、其变体以及其他类似词语在详细描述或权利要求中使用的程度上,这些术语意图以与作为开放性过渡词的术语“包括”类似的方式是包括性而不排除任何附加或其他元件。
【权利要求】
1.一种系统,包括: 至少一个媒体内容生成器,所述至少一个媒体内容生成器生成至少两个实时视频流; 非临时存储器,所述非临时存储器存储计算机可执行部件;以及 处理器,所述处理器执行存储于所述存储器内的以下计算机可执行部件: 组合部件,所述组合部件将所述至少两个实时视频流组合以生成主视频流。
2.根据权利要求1所述的系统,其中,所述至少两个实时视频流是相同副本。
3.根据权利要求1所述的系统,其中,所述至少两个实时视频流是不相同的。
4.根据权利要求3所述的系统,其中,所述至少两个实时视频流源自于不同地理位置处的至少两个数据中心。
5.根据权利要求4所述的系统,其中,所述至少两个实时视频流在所述至少两个数据中心处被以不同的方式编码。
6.根据权利要求1所述的系统,其中, 所述至少一个媒体内容生成器生成N个实时视频流,以及 所述组合部件将所述N个实时视频流组合, 其中,N是至少四。
7.根据权利要求1所述的系统,进一步包括:同步部件,所述同步部件使所述至少两个实时视频流同步。
8.根据权利要求7所述的系统,其中,所述同步部件使所述至少两个实时视频流中的第一视频流的段的指纹与所述至少两个实时视频流中的第二视频流的段的指纹匹配。
9.根据权利要求8所述的系统,其中,所述指纹包括与所述第一视频流的所述段的一组数据分组和所述第二视频流的所述段的一组数据分组相关联的元数据。
10.一种方法,包括: 接收至少两个实时视频流; 将所述至少两个实时视频流组合;以及 从所述至少两个实时视频流生成主视频流。
11.根据权利要求10所述的方法,其中,所述接收进一步包括:接收根据用户数据报协议被作为至少两个数据流来多播的所述至少两个实时视频流。
12.根据权利要求11所述的方法,其中,所述接收进一步包括: 接收具有第一流毁坏或流错误的所述至少两个数据流的第一数据流并接收具有第二流毁坏或流错误的所述至少两个数据流的第二数据流。
13.根据权利要求12所述的方法,进一步包括:用所述第二数据流的相应分组来修正所述第一数据流的所述第一流毁坏或流错误,其中,所述第一流毁坏或流错误不同于第二流毁坏或流错误。
14.根据权利要求13所述的方法,其中,所述修正进一步包括: 识别已经丢失的所述第一数据流的分组的指纹; 对所述第二数据流搜索具有与所述第一数据流的分组基本上类似的指纹的分组;以及用来自所述第二数据流的具有基本上类似指纹的分组来替换在主视频流中已丢失的所述第一数据流的分组。
15.根据权利要求11所述的方法,其中,所述接收进一步包括:从第一位置接收所述至少两个数据流的第一视频流并从在地理上远离所述第一位置的第二位置接收所述至少两个数据流的第二视频流。
16.根据权利要求10所述的方法,其中,所述生成进一步包括: 从所述至少两个实时视频流生成基本上无错误的主视频流。
17.一种其上存储有指令的计算机可读存储介质,所述指令响应于执行而促使系统执行操作,包括: 接收至少两个实时视频流;以及 通过将所述至少两个实时视频流组合而生成主视频流。
18.根据权利要求17所述的计算机可读存储介质,其中 所述接收进一步包括:接收至少三个视频流并向所述至少三个视频流分配至少三个权值;以及 所述生成进一步包括: 检测所述至少三个视频流中的一个的段中的错误; 基于权值用另一个流的相应段来替换所述至少两个实时视频流中的一个的段。
19.根据权利要求18所述的计算机可读存储介质,其中,所述分配进一步包括: 基于所述至少三个视频流的发起位置向所述至少三个视频流分配所述至少三个权值。
20.根据权利要求18所述的计算机可读存储介质,其中,所述分配进一步包括: 基于所述至少三个视频流的可靠性向所述至少三个视频流分配所述至少三个权值。
【文档编号】H04N21/845GK104365109SQ201380030606
【公开日】2015年2月18日 申请日期:2013年4月12日 优先权日:2012年4月12日
【发明者】尼尔斯·奥利弗·克拉恩施特弗尔, 托马斯·爱德华·德威斯, 迈克尔·A·格洛弗 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1