可替代联网应用程序服务的系统和方法与流程

未命名 08-25 阅读:109 评论:0

可替代联网应用程序服务的系统和方法
1.相关申请的交叉引用
2.本技术要求2020年12月7日提交的名称为“systems and methods of alternative networked application services”的美国临时申请号63/122,425的优先权。
3.本技术涉及2020年6月2日提交的名称为“orchestrated control for displaying media”的美国专利申请号16/890,957,该申请要求2019年6月28日提交的美国临时申请号62/868,310的优先权,这两个申请中的每个申请通过引用整体并入本文。本技术还涉及2019年12月19日提交的名称为“systems and methods of orchestrated networked application services”的美国专利申请号16/721,125,该申请要求2018年6月28日提交的国际申请号pct/us18/40118的优先权,该申请要求2017年6月29日提交的美国临时申请号62/526,954的优先权,这些申请中的每个申请通过引用整体并入本文。
技术领域
4.本发明整体涉及由客户端控制媒体的显示,并且更具体地涉及由服务器基于由服务器从客户端接收到的信息来控制由客户端显示的媒体。


背景技术:

5.向客户端设备提供各种远程应用程序的应用程序服务器已经普遍使用了几十年。在宽带接入互联网出现之前,这些服务器主要由有线电视提供者经由有线tv基础设施在专用网络上提供。随着宽带内容服务的到来,一些应用程序服务现在“在云中”托管在服务器系统上,这些服务器系统为客户端设备诸如个人计算机膝上型电脑、平板电脑和移动电话提供服务。
6.不要与在常见网络服务器上访问网页混淆,应用程序服务器在远程位置处的服务器上执行应用程序,并且通常以屏幕图像、图像序列或视频流的形式将得到的输出发送到用户看到并与之交互的客户端设备。对于用户来说,应用程序服务似乎是在他们面前的设备上运行,但实际上它是在远程执行的。
7.现有的交互式电视系统已经利用先进的应用程序服务器技术进行部署,使复杂的交互式tv应用程序能够作为共享资源进行部署;而支持高级用户体验所需的复杂计算是在共享资源上的中央位置执行的,然后将所述共享资源的输出传输回用户。通常,提供服务管理器,其将中央设施中的虚拟机顶盒应用程序分配给客户端设备,诸如有线tv机顶盒(例如,在用户家中)。
8.目前正从通过因特网递送的服务中获得许多新的交互式tv和视频点播(vod)服务。通常,这些新服务与膝上型电脑、平板电脑或智能手机上的常见网络浏览器交互,或者需要第三方应用程序来运行专用客户端设备,诸如第三方互联网机顶盒或智能tv。需要与这些服务交互而不需要依赖专门的客户端设备。然而,相对于膝上型电脑、平板电脑或智能手机上的常见网络浏览器或第三方应用程序,通用传统tv机顶盒在处理能力、图形能力和
存储器方面具有有限资源,因此由于这些限制,通常不能够支持这些新的交互式tv和vod服务中的大多数。
9.需要提供具有多种好处的虚拟化应用程序服务系统,用于有效地流式传输来自第三方内容分发网络的媒体资产,以在位于订户家中的客户端设备上播放,使得服务提供者能够利用本发明来使他们的网络带宽成本最小化。这些附加系统和方法的另一个好处是能够播放具有专有格式的媒体资产,其中相关应用程序的虚拟化可允许其内容包含在系统的组合服务产品中,而无需对使用中的协议有任何详细的了解。
10.因此,需要远程管理显示在客户端上的内容的系统。然而,由于图形数据的大小,获得用于媒体递送管理的客户端信息是消耗带宽的。


技术实现要素:

11.本文所述的实施方案涉及改进的系统和方法,其用于用物理客户端的图形状态来更新虚拟客户端(例如,实时),而不需要将媒体内容从物理客户端发送到虚拟客户端所需的高级别带宽。
12.根据一些实施方案,提供了一种在服务器计算设备处执行的用于远程处理媒体流的方法。服务器系统托管一个或多个虚拟机,每个虚拟机与用于媒体流的回放的一个或多个客户端设备中的相应客户端设备相关联。该方法包括,在与第一客户端设备对应的第一虚拟机处,接收包括与视频数据的多个帧对应的第一内容的第一媒体流,以及生成与该第一媒体流对应的第一摘要片段。该第一摘要片段包括该多个帧的表示但不包括该视频数据。该方法包括,在该第一虚拟机处,将该第一摘要片段存储在该服务器系统处的缓存中。该方法进一步包括,在与不同于正在回放该第一媒体流的该第一客户端设备的第二客户端设备对应的第二虚拟机处,接收该第一媒体流在该第二客户端设备处的回放位置,以及使用来自该第二客户端设备的该回放位置和存储在该缓存中的该第一摘要片段来执行处理以重新创建该第一媒体流在该第二客户端设备上的该回放的表示。
13.在一些实施方案中,提供了一种计算机可读存储介质,其存储用于由电子设备的一个或多个处理器执行的一个或多个程序。该一个或多个程序包括用于执行上述方法中的任一者的指令。
14.在一些实施方案中,提供了一种电子设备(例如,服务器系统)。该服务器系统包括一个或多个处理器和存储器,该存储器存储用于由该一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行上述方法中的任一者的指令。
15.应当认识到,在各种实施例中,关于客户端描述的操作可应用于服务器,反之亦然。
附图说明
16.图1是示出根据一些实施例的内容递送系统的顶层图。
17.图2是示出根据一些实施例的在第三方应用程序、智能图形和媒体代理(sgmp)子系统和客户端设备之间的系统中的媒体内容的控件和数据流的状态流程图。
18.图3是示出根据一些实施例的在第三方应用程序、sgmp子系统和客户端设备之间的系统中的媒体内容的控件和数据流的状态流程图。
19.图4是示出添加了媒体资产缓存和摘要创建器的虚拟化应用服务器系统的顶层图。在该实施例中,根据一些实施例,内容递送网络(cdn)直接将内容发送到虚拟客户端虚拟机(vcvm)用于存储在媒体资产缓存中。
20.图5是示出根据一些实施例的在第三方应用程序、vcvm和客户端设备之间的系统中的媒体内容的控件和数据流的状态流程图。
21.图6是示出根据一些实施例的在第三方应用程序、vcvm子系统和客户端设备之间的系统中的媒体内容的控件和数据流的状态流程图。
22.图7是根据一些实施例的sgmp部件(例如,子系统)的框图。
23.图8是示出根据一些实施例的将视频片段变换为摘要片段并将其重构为重构片段的图。
24.图9a至图9e是根据一些实施例的在客户端设备处生成摘要片段的方法的流程图。
25.图10是根据一些实施例的服务器系统的框图。
26.图11是根据一些实施例的客户端设备的框图。
具体实施方式
27.根据一些实施例,计算机系统为第三方应用程序提供一个环境,其中应用程序可在第三方域中的服务器环境中未经修改地运行(例如,以对在客户端设备上运行的第三方应用程序透明的方式)。在一些实施例中,“编排”功能(例如,在运营商的域中)协调在它们相应服务器环境中运行的一个或多个第三方应用程序。在一些实施例中,客户端设备(例如,在用户的域中)向用户提供无缝体验,就好像第三方应用程序在客户端设备上本地运行一样。在一些实施例中,编排功能通过与客户端设备协调来管理用户和客户端应用程序发起的事件两者。在一些实施例中,第三方的应用程序资源要求是基于客户端设备的能力(例如,图形能力)和/或环境(例如,服务器与客户端之间的网络条件)来确定的。在一些实施例中,应用程序和媒体资源(例如,音频/视频流、图像、脚本和/或数字版权管理(drm)信息)是从第三方应用程序后端和/或内容递送网络(cdn)检索的)(例如,避免通过服务器环境中的第三方应用程序或编排功能传递所述资源)。
28.本文所述的各种实施例涉及应用程序服务器系统的改进。在此类系统中,用户在中央设施(诸如有线tv头端)中在远程基础上与各种交互式tv和vod应用程序进行交互;其中将用户的交互发送到头端,并且将视频图像传输回用户的机顶盒。以这种方式,用户感知应用程序就像其在机顶盒内部本地运行一样。这种操作模式以由整个系统的响应测量的典型高级别交互性向用户提供应用程序。通过以家庭中的客户端机顶盒(stb)与头端中的服务器系统之间的高带宽和低延迟在有线tv网络的范围内操作该系统来实现该响应。
29.提供了一种将来自头端的应用程序服务与互联网递送的服务和第三方应用程序组合的超结构。在一些实施例中,协议的转换允许各种客户端设备(包括例如但不限于传统stb、互联网机顶盒、智能tv、平板电脑或智能手机)与有线tv网络内或之外的任何源进行交互并消费来自该任何源的内容。在一些实施例中,该结构还完全脱离有线tv网络操作,并总体上协调来自互联网的服务。
30.在一些实施例中,应用程序包括经由具有全屏视频和/或部分屏幕视频的图形api(例如,opengl)渲染的(例如,经由视频回放api诸如openmax管理的)用户界面元素。这些应
用程序旨在在客户端设备上本地移植、安装和运行。相反,在一些实施例中,提供了用于将应用程序作为或类似于未经修改的虚拟客户端虚拟机(vcvm)运行的方法,该vcvm在与客户端或中央设施的域不同的域中的应用程序服务器上运行。通过虚拟化使用的api,诸如opengl和openmax,可将应用程序功能性与渲染功能性分开。在一些实施例中,在应用程序服务器处的相应智能图形和媒体代理(sgmp)的控制下在客户端设备中发生不同元件的组合。例如,在客户端设备中,视频借助于图形api(诸如opengl)与图形混合,其将视频视为纹理层以与其他纹理层(无论是图形还是全动态)适当混合。与完整客户端应用程序的复杂性相比,这是一个相对简单并且资源密集度低的过程。因此,在客户端设备上运行的瘦化和应用程序独立功能性被称为瘦客户端。
31.在一些实施例中,包括远程应用程序和客户端的系统具有穿过一个或多个网络域的低带宽、高延迟链路。通常,使用高带宽、低延迟拓扑和单域局域网拓扑。这一点尤其重要,因为vcvm和客户端设备通常位于不同的网络域中。例如,vcvm通常托管在第三方的数据中心域中,而客户端在不同位置处操作(例如,在互联网的最后一英里中,在最终用户的场所处)。
32.在一些情况下,cdn不位于相对于客户端设备地理上有利的位置(例如,存在从cdn到应用程序服务器的不利路由)。为了解决这个问题,在一些实施例中,媒体内容(例如,音频和视频流)直接从一个或多个cdn流式传输到客户端设备(例如,不通过应用程序对其进行路由)并且(接近未经修改的)应用程序是被sgmp中的虚拟化api“欺骗”,使得其摄取、解码和播放媒体内容。
33.在一些实施例中,来自多个服务的多个应用程序被系统组合以对单个用户同时活动并且作为单个无缝集成的应用程序呈现给用户。例如,当用户正在vod应用程序中观看节目时,体育比赛(例如,用户已经指示对其感兴趣)开始了。由不同于vod应用程序(并且可能运行在可能与vod应用程序无关的另一台服务器上)的应用程序提供的节目指南应用程序在vod应用程序上临时显示感兴趣的体育广播即将开始的指示(例如,小的覆盖通知)。
34.在一些实施例中,“编排器”服务器协调视频服务或其他应用程序从互联网上的任何地方到多个客户端媒体设备(例如,传统有线机顶盒、互联网机顶盒、膝上型计算机、平板电脑和/或智能手机)的远程处理。在一些实施例中,编排器服务器的典型功能用协调功能(例如,应用程序或虚拟机生命周期管理)增强,该协调功能控制不同应用程序如何在客户端的屏幕上共享和/或集成。在一些实施例中,编排器服务器包括虚拟图形处理单元(gpu),该gpu出于支持不具有gpu但可显示等效媒体流的传统有线机顶盒的目的而转换媒体流中的应用程序图形和音频/视频事件。
35.提供了使得多个不同客户端设备的用户能够与在远程服务器环境中运行的视频和图形丰富的交互式应用程序进行交互的远程虚拟化系统和过程的各种实施例。由此产生的用户体验本质上等同于在本地客户端设备上运行这些应用程序,即使在这些设备需要访问远程服务器资源诸如各种图形渲染和其他资源的情况下。
36.在一些实施例中,系统和方法在向消费者有线电视机顶盒,智能tv和包括互联网连接的机顶盒、平板电脑、智能电话或其他移动设备的许多其他观看平台提供交互式屏幕上用户体验方面实现了先前无法获得的效率。这些效率是通过利用在位于中央的虚拟应用程序服务器上运行的虚拟机顶盒应用程序来实现的。凭借集中式服务器是按需分配的共享
资源,并且因此不需要为服务的每个用户进行物理部署这一事实,从而获得了效率。
37.对于本领域的技术人员来说,考虑到本文所述的功能性,附加实施例和应用将是显而易见的;包括但不限本文所述的功能性、不同服务器侧和客户端侧消费者电子产品和其他设备的混合硬件和/或软件具体实施,以及避免用户下载和安装本机移动应用的任何要求的众多场景。此外,对于本领域的技术人员来说显而易见的是,本文所公开的原理可应用于各种各样的交互式电视以及在存在于机顶盒、移动设备或其他设备中的几乎任何计算机平台上运行的互联网起源的应用程序“应用”,而不背离本公开的新颖性。
38.在一些实施例中,在第一机上运行的第一程序与在第二机上运行的第二程序的某些内件交互。在本文中称为“远程”的该过程是使用图形api(例如,opengl)和/或媒体回放api(例如,openmax)将第一程序的状态从在第一机(例如,因特网上某处的服务器)上运行(也称为“在云中”运行)的第一应用程序传送到第二机(例如,客户端)上的第二程序。
39.在一些实施例中,本文所述的远程处理系统实现了网络域之间控制信息与数据信息的有益分离。
40.本文所述的各种实施例允许在不同于运营商的网络域以及不同于客户端设备的域的第三方网络域中的虚拟客户端虚拟机上运行媒体回放控制应用程序。媒体资产诸如图像和音频/视频资产由客户端直接检索和处理,而无需通过媒体回放控制应用程序路由数据。
41.图1是示出根据一些实施例的内容递送系统的顶层图。内容递送系统的部件在四个域内操作。域0与第三方数据中心处的一个或多个第三方(例如,一个或多个内容提供者)相关联。在一些实施例中,域0包括第三方后端104、第三方cdn 105和媒体资产140。第三方应用程序专用后端104执行与计费、用户认证、内容访问和/或数字版权管理相关联的操作。第三方后端104将后端控件109传达给瘦客户端130。瘦客户端130能够将后端控制132转发到vcvm 103处的sgmp 102。
42.域1与软件即服务(“saas”)数据中心相关联。在一些实施例中,第三方应用程序101被部署在saas数据中心(域1)中。在一些实施例中,第三方应用程序101由不同于与域0相关联的第三方的第三方提供。在一些实施例中,第三方应用程序101被配置为通过将(例如,经由图形api渲染的)用户界面图形与媒体资产组合来生成媒体流。在一些实施例中,应用程序101在saas数据中心的应用程序服务器1000(图10)上的虚拟客户端虚拟机103(vcvm)内执行。在一些实施例中,vcvm 103包括智能图形和媒体代理102(sgmp)。
43.在一些实施例中,在vcvm 103上执行的第三方应用程序101包括与媒体内容提供者相关联的应用程序。例如,客户端设备(例如,瘦客户端130)的用户可从第一媒体内容提供者请求内容。如图1所示,与第三方cdn 105相关联的第一媒体提供者(例如,在域0中)向客户端设备发送媒体资产(例如,音频/视频和图像资产134)。例如,cdn 105向客户端130发送视频流。在一些实施例中,客户端130向vcvm 103发送(例如,使用图形api诸如opengl)客户端设备的图形状态(例如,sgmp数据108)。视频流的图形状态包括例如像素信息(例如,来自客户端的opengl)、定时信息(例如,基于cdn 105与客户端130之间的延迟)和/或回放信息(例如,基于在客户端接收到的用户输入150/控件)。例如,客户端130将视频流(或视频流片段)转发到vcvm 103,使得sgmp 102可处理客户端130的图形状态信息。以这种方式,vcvm 103关于客户端130处的图形状态被更新(例如,实时和/或周期性地),并且在一些实施例
中,可将客户端的当前图形状态传达给编排器110。
44.域2与运营商数据中心相关联。例如,运营商数据中心可与有线电视系统提供者相关联。在一些实施例中,运营商数据中心与不同于与第三方数据中心相关联的服务提供者的服务提供者相关联。在一些实施例中,位于运营商的网络(域2)中的编排器110被配置为(1)管理客户端会话,(2)控制由应用程序101处理的媒体的回放(例如,开始、结束、暂停和/或恢复),(3)向sgmp 102发信号通知带宽设置,以及/或者(4)向sgmp 102提供条件访问和数字版权管理(drm)相关信息。在一些实施例中,编排器110调用vcvm 103的实例(例如,响应于客户端设备(例如,瘦客户端130)上的输入)。在一些实施例中,编排器110经由连接112从客户端设备130的用户接收与控件(例如,回放控件)对应的输入并且经由连接111将该控件转发到vcvm 103。在一些实施例中,编排器处理对vcvm 103的控件和命令以便控制由vcvm 103输出的图形。
45.域3与“最后一英里”相关联,指的是与一个或多个用户相关联的一个或多个客户端设备。例如,一个或多个客户端设备包括stb(例如,包括图形处理单元(gpu)的stb或传统stb)、互联网机顶盒、智能tv、平板电脑、智能手机和/或物联网(iot)设备。因为第三方应用程序101在域1中的vcvm 103的实例上执行,所以客户端设备的需要的计算能力(例如,cpu能力)是应用程序无关的。因此,客户端设备可以是瘦客户端。在一些实施例中,客户端设备130不运行多个应用程序,每个应用程序与不同内容提供者相关联,以便访问来自内容提供者中的每个内容提供者的媒体内容。相反,(例如,与运营商数据中心或另一提供者相关联的)单个(例如,通用)应用程序在客户端设备上运行,并且客户端设备经由连接108将客户端设备的图形状态传达到vcvm 103,使得vcvm 103可执行对媒体内容的处理(例如,将用户界面图形与视频组合)。客户端设备将用户输入150(例如,回放命令)转发到vcvm 103,使得vcvm 103确定要由客户端设备执行的一个或多个动作(例如,命令)。例如,vcvm 103确定一个或多个覆盖并将其传输到客户端设备以供客户端设备在媒体内容上显示。
46.在一些实施例中,如下文关于图2更详细描述的,到客户端130的获取av片段210的命令(例如,来自第三方应用程序101中的sgmp 102的命令)使得客户端130从cdn 105获取211音频/视频片段212,以及使得客户端(例如,经由sgmp 102)将av片段2600返回到摘要创建器107。摘要创建器107生成摘要片段并且发送摘要片段以存储在媒体资产缓存106中。在一些实施例中,sgmp 102从媒体资产缓存106(例如,或直接从摘要创建器107)接收摘要片段。sgmp 102通过生成器715(图7)重构来自摘要片段的重构片段811。第三方应用程序101经由网络api 710接收215重构片段811并且经由媒体回放api 712播放216或解码重构片段,就好像它是原始片段一样。重构片段由媒体回放api 712解析以确定指令(例如,要在客户端处回放的av片段上显示的覆盖)。指令218被转发到客户端(例如,其中指令包括对原始片段801的标引)。在一些实施例中,指令包括覆盖或其他用户界面对象。客户端使用其本地解码器将接收到的用户界面对象解码为显示平面或图形纹理,并组合用户界面对象(例如,图形)。在一些实施例中,在sgmp的控制下,在服务器处从sgmp的图形相关堆栈719检索覆盖或其他用户界面对象。
47.图2是示出根据一些实施例的在第三方应用程序101、媒体资产缓存106和客户端设备130之间的系统中的媒体内容的控件和数据流的状态流程图。
48.由201指示的区域中所示的操作属于第三方应用程序(例如,应用程序101),该应
用程序旨在开始(例如,由第三方后端104)被授权用于流式传输到客户端130的媒体资产的回放。为此,应用程序101首先接收打开av资产200的用户请求(例如,响应于在客户端130处的选择av资产的用户输入)。响应于接收到打开av资产的请求,第三方应用程序通过网络api 710打开204cdn上的资源,或者发出渐进式下载命令。接下来,网络api向客户端130发出开放资源命令205。客户端130然后打开206cdn 105上的实际资源,并向网络api 710返回成功/失败状态207。成功/失败状态208被传递给第三方应用程序101。
49.由202指示的区域中所示的操作包括,在成功打开资源之后,第三方应用程序101从网络api 710请求片段209,其将这些请求210传递到客户端130上。客户端从cdn 105获取211片段。在完成对来自cdn的片段的检索212后,客户端将片段2600转发到摘要创建器107。摘要创建器创建摘要片段并发送摘要片段3601以存储在媒体资产缓存106中。图8给出了从典型片段中生成摘要片段的示例。
50.图2示出了生成器模块715从缓存的摘要片段2602重构av片段,并在214处将重构片段发送到网络api 710。根据应用程序的类型,该片段可重新创建到不同的精确度。例如,使用随机或伪随机数据(例如,伪数据)重构帧。在一些实施例中,该片段是具有基本流的准确重构片段。例如,基本流(例如,由mpeg通信协议定义的媒体流)可在生成器模块715(例如,来自与原始片段不同的另一源)处可用,并且重构片段可包括这些可用的基本流。重构片段在操作215处从生成器715通过网络api 710传递回第三方应用程序101。在各种转换(诸如在缓冲器之间复制,在连接或分段一个或多个片段的过程中)之后,第三方应用程序将转换后的片段传递216到媒体回放api 712。媒体回放api将片段传递217到解译器模块716。解译器模块使用重构片段数据将片段映射(例如,同步重构片段)到由客户端存储的片段。解译器模块716向客户端发送指令218以播放相应存储的片段。
51.由203指示的区域中所示的操作包括在cdn 105上由第三方应用程序101关闭媒体资产。例如,第三方应用程序101接收到关闭av资产222的请求(例如,由瘦客户端130处的用户输入发起),并且响应于接收到关闭av资产222的请求,第三方应用程序101向网络api 710发送命令219以关闭av资产,该网络api然后在220处指示瘦客户端130关闭资产。瘦客户端130向cdn 105传递指令以关闭221资产。熟练的读者理解,对于无状态协议诸如http,流程图的打开操作可表示对关于音频/视频资产的元数据诸如例如资产的mpeg-dash清单的检索,并且该资产被隐式地关闭。
52.图3是示出根据一些实施例的将视频片段变换为摘要片段并将摘要片段重构为重构片段的图。将注意,打开操作201和关闭操作203等同于参考图2描述的操作。
53.如图3所示,在一些实施例中,瘦客户端130-2正在回放与瘦客户端130相同的媒体片段(例如,在稍后的时间,其可能与或可能不与瘦客户端130处的媒体片段的回放重叠),如在图2中解释的。例如,因为瘦客户端130-2请求与现有摘要片段(例如,图2中创建的摘要片段)相关联的媒体片段,所以客户端130-2不将片段传递到摘要创建器107。相反,客户端130-2将(例如,指示媒体片段在瘦客户端130-2处的回放位置的)进度报告3000传递到媒体资产缓存106。在一些实施例中,服务器系统执行查找以确定摘要片段是否已经生成和/或存储在媒体资产缓存106中。媒体资产缓存106使用进度报告来访问媒体片段的缓存的摘要片段,并且发送存储在媒体资产缓存106中的摘要片段2602,并将其提供给生成器715。生成器715根据从媒体资产缓存106接收到的摘要片段重构片段(例如,通过维护片段标头并用
伪数据填充片段)。生成器715将重构片段214发送到网络api 710。网络api 710能够处理重构片段,就好像其接收到完整的媒体流片段一样(例如,即使重构片段包括伪数据的帧并且不包括视频数据的帧)。网络api 710因此被欺骗处理重构片段,并将片段发送215给第三方应用程序101。在一些实施例中,第三方应用程序101添加媒体资产(例如,覆盖)。第三方应用程序101播放重构片段并将重构片段216发送到媒体回放api 712。媒体回放api 712解析片段217并将其发送到解译器,该解译器确定要在av片段内的特定回放点处显示的指令,诸如覆盖(例如,如从解析片段确定的)。解译器716向客户端130-2发送指令218(例如,包括覆盖的指令和/或用于客户端利用覆盖回放av片段的指令)。
54.图2和图3示出了根据一些实施例的如何实现控件和数据的分离。例如,应用程序101使用api诸如网络api 710、媒体回放api 712、图像解码器api 711和图形api 701来控制对图形、音频和视频数据的检索和处理。在一些实施例中,不是对来自cdn 105的资产的实际数据进行操作,而是将控件转移(远程)到客户端130,并且客户端在其自己的域中代表应用程序检索和处理数据,从而利用其相对于cdn 105的地理上有利的位置来这样做。
55.由于由应用程序101使用的标准化api通常需要实际数据作为变量传递或作为结果返回,因此需要具有等效数据,例如,以重构摘要片段的形式提供(例如,等效量和/或大小的片段和/或帧的视频数据诸如“伪数据”)可供应用程序101处理,使得应用程序可执行其控制责任。以这种方式,无需修改应用程序以在本文所示的系统内操作。例如,视频数据通常受drm保护,并且只有媒体回放堆栈的受保护部分在视频数据的解码过程期间处理该数据。由于该处理和解码功能性通常不是应用程序本身的功能,因此可由客户端代表应用程序执行。
56.图4是示出根据一些实施例的内容递送系统的顶层图。内容递送系统的部件在四个域内操作,如参考图1解释的。在图4中,域0-4类似于图1中解释的域来操作。然而,在图4中,音频/视频(av)资产401从域0中的第三方cdn 105直接传递到域1中的sgmp 102。应当理解,sgmp 102因此可直接从第三方cdn 105(如图4所示)和/或从瘦客户端130接收av资产(例如,av资产134从cdn 105传递到瘦客户端130,并且然后转发到vcvm 103)。例如,如图1和图4所示,瘦客户端130从第三方cdn 105接收音频-视频和图像资产134并(例如,经由sgmp数据108)将音频/视频和图像资产(例如,未经修改)转发到sgmp 102。响应于接收到音频/视频和图像资产,sgmp 102将未经修改的资产传递到摘要创建器107,以创建要存储在媒体资产缓存106中的摘要片段。图2和图3示出了其中第三方应用程序101(例如,sgmp 102)从瘦客户端130接收媒体资产(例如,av片段)的流程图。图5和图6示出了其中第三方应用程序101直接从cdn 105接收媒体资产(例如,在不从瘦客户端130转发媒体资产的情况下)的流程图。
57.图5示出了根据一些实施例的示出在第三方应用程序101、媒体资产缓存106和客户端设备130-3之间的系统中的媒体内容的控件和数据流的状态流程图。图5示出了图4所示的系统的数据流,其中在服务器系统处直接从cdn 105接收av资产。上文参考图2描述了用于打开av资产201和关闭av资产203的过程。图5所示的过程202-3不同于图2所述的过程202,因为cdn 105将av片段501直接发送到服务器系统。例如,在图5中,cdn 105从瘦客户端130接收到对获取av片段211的请求(在瘦客户端130从第3方应用程序101接收到对获取av片段210的请求之后)。响应于请求211,cdn 105将av片段501直接发送到摘要创建器107(例
如,在服务器系统处)并且还将av片段212发送到瘦客户端130-3。以这种方式,服务器系统的瘦客户端130-3和摘要创建器104两者都从cdn 105接收av片段。此外,瘦客户端130-3将针对av片段504的回放的进度报告从瘦客户端130-3发送到媒体资产缓存105。
58.在摘要创建器107接收到av片段501之后,摘要创建器107生成av片段的摘要片段(例如,其中摘要片段移除av片段的图像/帧数据并包括标头信息,以及任选地空白帧的数据),并且将av片段的摘要片段502发送到媒体资产缓存106。媒体资产缓存106存储av片段的摘要片段(例如,具有指示摘要片段是针对av片段501的摘要的标识符)。瘦客户端130-3在回放从cdn 105接收到的av片段212时,发送表示av片段212在客户端设备130-3处的当前回放位置的进度报告504。基于指示av片段的当前回放位置的进度报告504,生成器715检索存储在媒体资产缓存106中的与av片段的当前回放位置对应的av片段的缓存的摘要片段503,并且生成重构(例如,和/或指纹化)av片段214以发送到网络api,其然后将重构av片段215馈送到第3方应用程序。例如,重构av片段包括用于使重构av片段与原始媒体流片段同步的指纹化标识符(例如,针对重构媒体流片段中的每个帧)。在一些实施例中,重构和指纹化av片段214是重构摘要片段,其包括摘要片段的标头信息并且还包括伪数据(例如,附加数据)。例如,重构av片段被重构以便将(存储在媒体资产缓存106中的)摘要片段扩展为与在瘦客户端130-3处回放的av片段具有相同的长度。因此,当第三方应用程序101接收到重构av片段215时,第三方应用程序101被欺骗在重构av片段上执行其功能(例如,生成和/或添加覆盖或其他图形元素),好像它正在在客户端设备上回放的未经修改的av段上执行这些功能。第三方应用程序101因此能够在服务器中的虚拟机处未经修改地执行而不是在客户端设备上执行。客户端设备所需的处理能力因此显着降低。
59.如参考图2解释的,第三方应用程序播放重构av片段216(例如,就好像它是未经修改的av片段本身一样)并且将重构av片段发送到媒体回放api 712,其能够解析片段217并将其发送到解译器716,该解译器向瘦客户端130-3提供指令218以播放av片段(例如,以用包括在指令218中的覆盖来显示av片段)。
60.图6是根据一些实施例的示出在第三方应用程序101、媒体资产缓存106和客户端设备130-4之间的系统中的媒体内容的控件和数据流的状态流程图。打开图6中所示的av资产201和关闭av资产203的过程与上文参考图2描述的过程相同。在图6中,客户端设备130-4正在播放av片段212(例如,在客户端设备130-3(图5所示)回放的相同av片段)。图6中的cdn 105将av片段600直接发送到媒体资产缓存106,绕过摘要创建器107。以这种方式,未经修改的av片段被存储在媒体资产缓存106中(例如,而不是生成和存储针对av片段的摘要片段)。例如,在图6中,网络api 710从缓存605接收av片段并将未经修改的媒体片段606发送到第三方应用程序。
61.图6还示出了媒体资产缓存106如何从瘦客户端130-4和/或直接从cdn 105接收av片段。例如,av片段212从cdn 105发送到瘦客户端130-4,其然后将av片段600转发到媒体资产缓存106。在一些实施例中,媒体资产缓存任选地直接从cdn 105接收av片段603。应当理解,媒体资产缓存106可从客户端、从cdn或从两者接收未经修改的av片段。通过将av片段的未经修改的版本存储在媒体资产缓存106中,当另一个客户端设备(或相同客户端设备)请求回放已经存储在媒体资产缓存中的相同av片段时,客户端设备和/或cdn放弃将完整的av片段发送到服务器。例如,一旦服务器将未经修改的av片段存储在其缓存中,其只需要来自
客户端设备的进度报告以保持与客户端设备的同步,而不需要将完整的媒体流片段发送到服务器。这减少了任何后续客户端设备回放已经存储在媒体资产缓存106中的av片段所需的带宽。
62.图7是根据一些实施例的sgmp部件(例如,sgmp 102)的框图。sgmp 102包括图形相关堆栈719、解译器703、带宽/延迟管理器704、优化器705、本地渲染器706、纹理编码器707和/或协议模块708;以及具有包括图像解码器api 711、媒体回放api 712、音频解码器api 713、视频解码器api 714、生成器715、解译器716、状态机717(例如,用于跟踪播放位置、暂停、停止等)和/或协议模块710的模块的媒体(例如,图像、音频和/或视频)相关堆栈720。网络api 710促进sgmp 102的部件与远程设备(例如,客户端设备130)之间的通信。
63.在一些实施例中,图形api模块701实现图形api(例如,opengl(例如,open gl es 2)和/或directb)。图形api模块701实现特定于api的功能,诸如:api功能定义、非状态相关错误检查、非状态相关查询、系统集成功能和/或系统查询。
64.在一些实施例中,状态跟踪器模块702处理从图形api模块701传递的功能调用,并维护向域3中的客户端130提供服务的远程应用程序101的显示状态的状态模型。状态跟踪器模块还维护客户端的显示状态的模型。例如,对于某些事件,当调用会导致将用户看到的客户端的帧缓冲器的改变时,由状态跟踪器702维护的虚拟状态与真实(远程)gpu的状态之间的差异被确定并作为更新转发给带宽管理器704。
65.状态跟踪器702的另一目的是作为修剪多余api调用的第一滤波器。本领域技术人员熟知图形api(诸如opengl)可以是有状态api,这意味着需要一系列调用来执行某些功能。后续调用是相互依赖的。应用程序通常会实现某种形式的状态管理,该状态管理通常会生成大量多余的调用来设置状态或在设置下一个状态之前返回到已知状态。通过在702中保留该状态的模型,一旦实际执行功能,就可生成规范的状态变化。这不仅减少了状态变化量(因此减少了数据),其还简化了sgmp的图形相关堆栈719的其他模块的具体实施。由702保持的理想化gpu的状态的维护在减轻链路的高延迟属性方面起着关键作用。通过在702中本地维护该状态的该完整模型,可在本地满足关于该状态的任何查询,并且因此避免需要查询实际(远程)gpu并伴随延迟惩罚的情况。
66.在一些实施例中,带宽/延迟管理器704模块保持跟踪可用带宽和招致的延迟。如果更新适合可用带宽和延迟配置文件,则将更新传递到优化器705和纹理编码器706上,连同允许这些模块将预期更新返工到客户端设备130以适合可用带宽和/或延迟要求的参数。如果更新不适合带宽/延迟配置文件,则更新可能被拒绝,并且状态跟踪器702的虚拟状态差异将累积丢失的更新和帧,然后可跳过这些更新和帧以便使远程应用程序101与客户端130重新同步。
67.在一些实施例中,优化器模块705处理客户端中的虚拟(理想化)状态与真实状态之间的状态差异的更新,并且确定可进行什么转换来减少更新的大小,例如但不限于,通过在远程应用程序内重新排序操作以使状态变化最小化,利用应用程序未使用的附加客户端扩展,在本地执行操作并生成中间纹理而不是将所有纹理(图形场景的组分)发送到客户端130并在那里组合它们,或者,在带宽不足的情况下推迟操作。
68.优化器705可确定在本地执行操作并在图形相关堆栈719内生成中间纹理可能比将所有纹理发送到客户端130并在客户端侧执行这些操作更优化。来自优化器705模块的更
新的自包含块被用于产生纹理,该纹理等同于在来自更新的单独纹理和块被发送到客户端的情况下将在客户端130上生成的纹理。发送生成的纹理而不是发送纹理和块来在客户端侧生成纹理。
69.在一些实施例中,如果需要纹理回读或者如果使用顶点变换反馈,则本地渲染器模块706可用于生成帧缓冲器的本地表示。有时,应用程序回读渲染的纹理材料。尽管这种情况非常少见,因为在gpu未虚拟化的情况下,这也是一种低效的操作。为了确定哪些纹理位于显示区域内,优化器模块705可使用本地渲染器706来运行顶点着色器。
70.在一些实施例中,纹理编码器707与优化器模块705结合工作以转换状态更新以适合由带宽管理器指定的带宽/延迟配置文件。在一些实施例中,优化器模块705执行功能诸如:(1)将纹理像素编码为编码图像,以减少需要传输到客户端的数据量;(2)纹理缩放以进一步减少数据量;以及/或者(3)缓存已经编码的纹理。
71.图形api通常处理原始和/或轻微压缩的纹理材料。在一些实施例中,为了减少需要传输到客户端的数据量,材料被(重新)压缩以允许通过低带宽链路传输。在一些实施例中,当纹理具有阿尔法通道时,纹理用支持阿尔法通道的图像编解码器压缩(例如,便携式网络图形(png)格式)。在一些实施例中(例如,当纹理是自然图像时)使用有损压缩算法,诸如联合图像专家组(jpeg)图像格式(例如,以减少传送图像所需的带宽而没有用户可感知的质量损失)。在一些实施例中,计算机生成的图像(诸如例如表示文本、梯度等的材料)使用图像格式诸如png来存储。纹理编码模块707处理纹理材料并确定要应用的编解码器。
72.当纹理编码模块707选择有损编解码器时,纹理编码器707模块必须确定需要什么级别的量化(质量降低或保真度损失)以满足带宽配置文件,同时尽可能减少保真度的下降。可用于对纹理进行无损或有损两种编码的图像格式(诸如webp)将适用于有损和无损两种场景。该决定可通过来自优化器705的关于纹理的角色的信息来增强。
73.应用程序可能并不总是提供最佳纹理大小。例如,使用大于屏幕上显示的纹理的情况并不少见。将纹理重新缩放到适当的大小不仅可减少传送纹理材料所需的带宽,还可提高保真度,因为可在服务器侧应用比客户端侧可用的更高级的缩放滤波器。
74.纹理编码器707模块使用编码纹理的缓存。如果之前已经对纹理材料进行了编码,则可从缓存中获得它。这显著提高了可扩展性。纹理分析和压缩是cpu密集型操作。如果可避免分析和压缩(通过散列纹理材料和元数据并检查编码版本是否在缓存中可用),则可实现显著的可扩展性优势。需注意,该缓存可在纹理编码器707的其他实例之间共享以进一步提高缓存效率。
75.在一些实施例中,协议模块708实现将来自优化器705和纹理编码器707模块的结构化数据转换成实际字节,然后压缩数据并将其作为协议消息发送到客户端130的协议。其还从客户端接收消息,主要是在连接设置期间以确定客户端的能力。
76.图8使出了摘要片段809和重构片段811的生成的示例。在一些实施例中,原始片段801是从客户端设备130获得的。例如,客户端设备130将原始片段801转发到与客户端相关联的相应vcvm 103(例如,如图1所示)。在一些实施例中,原始片段801是从第三方cdn 105获得的。例如,第三方cdn 105将原始片段801直接发送到相应vcvm处的sgmp 102(如图4所示)。原始片段801描绘了一个假设片段,诸如例如如在http上的mpeg动态自适应流(mpeg-dash)中使用的iso基础媒体文件格式(bmff)片段。这样的片段由片段标头802(例如,其也
与片段标头810和812对应)和若干帧,在该示例中为803至808组成。应当理解,大部分片段数据通常是受drm保护的帧数据。在一些实施例中,片段的摘要片段809是通过移除受drm保护的帧数据并且在摘要片段809中仅包括未经修改的片段标头(例如,片段标头810与未经修改的片段标头802对应)和/或帧标头(诸如图片标头和切片标头)来形成的,包括任何编解码器特定标头,诸如例如序列标头,其需要由生成器715进行帧序列的精确重构。
77.图9a至图9e使出了用于向客户端设备提供回放命令的方法900。在一些实施例中,方法900由托管(902)一个或多个虚拟机的服务器计算机系统1000执行,每个虚拟机与用于媒体流的回放的一个或多个客户端设备中的相应客户端设备相关联,如图10所示。例如,用于执行该方法的指令存储在存储器1006中并由服务器计算机系统1000的处理器1002执行。关于过程900描述的一些操作可任选地组合和/或一些操作的顺序(任选地)被更改。服务器计算机系统(例如,服务器计算设备)具有一个或多个处理器和存储用于由一个或多个处理器执行的一个或多个程序的存储器。在一些实施例中,一个或多个客户端设备中的每个客户端设备是被编程为远程进入基于服务器的计算环境中的瘦客户端。
78.在一些实施例中,第一虚拟机从客户端设备接收对第一媒体流的请求。在一些实施例中,响应于接收到对第一媒体流的请求,第一虚拟机执行查找以确定第一虚拟机是否有权访问针对第一媒体流的摘要片段。例如,第一虚拟机确定针对第一媒体流的摘要片段是否存储在服务器系统处的媒体资产缓存106中。在一些实施例中,第一虚拟机确定媒体资产缓存不包括针对第一媒体流的摘要片段,并向客户端(或cdn)发送将第一媒体流传输到虚拟机的请求。在一些实施例中,第一虚拟机在接收包括第一内容的第一媒体流之前确定它是否有权访问针对第一媒体流的摘要片段。例如,如果第一虚拟机已经有权访问针对第一媒体流的摘要片段,则第一虚拟机向客户端设备(或cdn)发送放弃向第一虚拟机传输媒体流的指令。例如,根据确定第一虚拟机无权访问针对第一媒体流的摘要片段来执行方法900。
79.与第一客户端设备对应的第一虚拟机(904)接收(906)包括与视频数据的多个帧对应的第一内容的第一媒体流。在一些实施例中,视频数据包括(908)第一媒体流中的多个帧中的每个帧中的图像内容。例如,第一媒体流与原始片段801对应,如图8所示。
80.在一些实施例中,从第一客户端设备接收(910)第一媒体流。例如,如图1至图2所示,从客户端设备130接收第一媒体流。
81.在一些实施例中,从内容提供者接收(912)第一媒体流。例如,如图4至图5所示,cdn 105将av资产2801直接发送到vcvm 103(例如,瘦客户端130-3)。
82.在一些实施例中,第一虚拟机确定(914)不存在存储在缓存(例如,媒体资产缓存106)中的与第一视频流对应的摘要片段。在一些实施例中,根据确定不存在存储在缓存中的与第一视频流对应的摘要片段来执行生成和存储。例如,在一些实施例中,媒体资产缓存106在在vcvm 103处接收到一个或多个媒体流片段之后存储针对一个或多个媒体流片段的摘要片段。在一些实施例中,摘要片段被存储达预先确定的时间量(例如,一周、一个月等)。在一些实施例中,摘要片段被无限期地存储在媒体资产缓存中。例如,摘要片段的库存储在媒体资产缓存106中,使得当客户端设备正在回放媒体片段时,针对媒体片段的摘要片段是可从媒体资产缓存进行访问的。
83.第一虚拟机生成(916)与第一媒体流对应的第一摘要片段。该第一摘要片段包括
该多个帧的表示但不包括该视频数据。摘要片段是来自多个帧的材料或信息的汇编或总结(例如,在不包括媒体流的数据的媒体流中)。例如,图8所示的摘要片段809示出了包括片段标头810,但是已经从原始片段801中去除了包括在帧803到808中的帧数据的摘要片段。
84.在一些实施例中,第一摘要片段中的多个帧的表示包括(918)针对第一媒体流的片段标头。例如,图8所示的片段标头810。在一些实施例中,第一摘要片段中的多个帧的表示包括(920)与多个帧中的相应帧对应的至少一个相应帧标头。例如,除了(或代替)片段标头810,摘要片段包括原始片段801中的一个或多个帧的帧标头。在一些实施例中,第一摘要片段中的多个帧的表示包括(922)针对多个帧中的至少一个相应帧的帧标识符。例如,每个帧包括指示其位置的帧标识符(例如,帧1)。
85.在一些实施例中,使用随机或伪随机数据生成(924)第一摘要片段的至少一部分。例如,如图8所示,摘要片段809的至少一部分包括随机或伪随机数据(例如,不包括存在于原始片段801的帧中的图像或视频数据的数据)。例如,“帧1”包括随机数据而不是包括存在于原始片段801的帧1中的视频数据。
86.第一虚拟机将第一摘要片段存储(926)在服务器系统处的缓存中。在一些实施例中,缓存(例如,媒体资产缓存106)被存储在服务器系统处。在一些实施例中,每个虚拟机都能够访问缓存。例如,缓存被存储在由在服务器系统处托管的一个或多个虚拟机共享和可访问的存储器中。在一些实施例中,第一虚拟机存储与第一标识符(例如,表示第一媒体流片段)相关联的第一摘要片段。例如,每个摘要片段与相应标识符相关联,使得一个或多个虚拟机能够识别何时已经针对相应媒体流片段生成了摘要片段。以这种方式,仅当服务器系统还没有针对请求的媒体流片段存储摘要片段时才需要创建摘要片段。
87.在一些实施例中,第一虚拟机使用第一摘要片段(例如,通过从第一摘要片段生成第一重构媒体流片段)来确定(928)针对第一媒体流的第一覆盖,并且向第一客户端设备传输针对第一媒体流的第一覆盖(例如,和/或显示第一覆盖的指令)。在一些实施例中,第一覆盖包括与回放命令对应的示能表示。例如,第一覆盖包括由在服务器系统处执行的本机应用程序的api生成的图形元素(例如,示能表示)。
88.与不同于正在回放第一媒体流的第一客户端设备的第二客户端设备对应(930)的第二虚拟机接收(932)第一媒体流在第二客户端设备处的回放位置。在一些实施例中,接收到的回放位置包括标识符(例如,与第一媒体流片段相关联的第一标识符)。在一些实施例中,响应于接收到标识符,第二虚拟机在缓存中执行查找以确定摘要片段是否存储在缓存中。
89.在一些实施例中,回放位置包括(934)指示第一媒体流内的位置的时间戳。
90.在一些实施例中,回放位置进一步包括(936)针对第一媒体流的帧标头。
91.第二虚拟机使用(938)来自第二客户端设备的回放位置和存储在缓存中的第一摘要片段来执行处理以重新创建第一媒体流在第二客户端设备上的回放的表示。
92.在一些实施例中,处理以重新创建第一媒体流在第二客户端设备上的回放的表示包括(940)使用存储在缓存中的第一摘要片段来基于第一摘要片段生成第二重构媒体流,其中该第二重构媒体流包括不同于视频数据的伪数据(例如,不包括多个帧中的视频数据的附加数据)。在一些实施例中,第二重构媒体流片段具有与第一媒体流相同的长度(例如,数据大小)。例如,第二重构媒体流与第一个媒体流长度相同,使得虚拟机可馈送在虚拟机
处执行的应用程序的api,并欺骗api处理第二重构媒体流,就好像api已经接收到媒体流的未经修改版本一样。因此,应用程序(和api)在虚拟机处执行而无需修改,就好像应用程序在客户端设备上运行一样。这通过允许在云服务器系统中执行本机应用程序来降低客户端设备所需的处理能力。
93.在一些实施例中,服务器系统针对播放第一媒体流的每个客户端重构第一摘要片段。例如,响应于第三客户端设备回放第一媒体流片段,与第三客户端设备对应的第三虚拟机从缓存访问第一摘要片段(例如,而不是重新生成摘要片段)。这减少了使用的带宽,因为任何后续客户端(例如,在生成摘要片段并保存在缓存中之后)不会将完整的媒体流片段传输到服务器系统。相反,服务器系统能够识别摘要片段,并且对于每个后续客户端,重构包括伪数据的媒体流,以便确定要传输到后续客户端的覆盖。
94.在一些实施例中,第一虚拟机基于第一摘要片段生成第一重构媒体流(例如,在确定第一覆盖并将第一覆盖传输到第一客户端设备之前),其中第一重构媒体流包括不同于视频数据的伪数据。在一些实施例中,第一虚拟机不基于第一摘要片段来生成第一重构媒体流。例如,第一虚拟机已经有权访问第一媒体流片段并使用未经修改的第一媒体流片段来确定针对第一媒体流片段的第一覆盖(例如,而不是使用伪数据从第一摘要片段重构媒体流)。
95.在一些实施例中,第二虚拟机使用存储在缓存中的第一摘要片段和接收到的回放位置(例如,进度报告)来确定(942)针对第一媒体流的第二覆盖并向第二客户端设备传输针对第一媒体流的第二覆盖。在一些实施例中,使用由第二虚拟机生成的重构媒体流来确定第二覆盖。例如,传输到第一客户端设备的第一覆盖不同于传输到第二客户端设备的第二覆盖(例如,覆盖是客户端特定的)。在一些实施例中,第一覆盖和第二覆盖包括相同的覆盖(例如,由在服务器系统上执行的第三方应用程序生成的标准覆盖)。
96.在一些实施例中,第二虚拟机从第二客户端设备接收(944)回放命令(例如,播放、暂停、快进、倒带等)。在一些实施例中,响应于接收到回放命令,第二虚拟机使用第一重构媒体流(例如,其与在第二客户端设备处回放的第一媒体流同步)来确定第一媒体流在第二客户端设备处的第一回放位置(例如,其中第一重构媒体流的回放位置与第一媒体流的第一回放位置对应),其中第二覆盖是基于针对第一媒体流的回放命令来确定的并且第二覆盖被传输到第二客户端设备以在第一媒体流的第一回放位置处显示。例如,响应于在第二客户端设备处接收到的暂停媒体流片段的命令,第二虚拟机确定媒体流在第二客户端设备处的回放位置并且确定针对当前回放位置的覆盖(例如,指示当前回放位置的进度条),并且将覆盖传输到第二客户端设备以在第一媒体流上显示。
97.在一些实施例中,一个或多个虚拟机中的第一虚拟机执行(946)包括第一应用程序编程接口(api)的第一应用程序并且确定第一覆盖包括经由第一api将第一重构媒体流传输到第一应用程序以及接收从第一api返回的第一覆盖(例如,基于从第一客户端设备接收到的回放命令)。例如,服务器系统(例如,第一虚拟机)使用重构媒体流调用第一api。
98.在一些实施例中,第一覆盖包括(948)由第一应用程序提供的一个或多个图形用户界面元素。例如,图形界面元素包括一个或多个用于控制回放的示能表示,诸如指示当前回放位置的进度条、播放/暂停控件、打开字幕的控件等。在一些实施例中,从客户端设备接收到的回放命令包括对显示在第一覆盖中的示能表示中的一个或多个示能表示的选择。
99.在一些实施例中,第四虚拟机接收(950)包括视频数据的多个帧的第四媒体流,其中第四媒体流包括不同于第一媒体流的第一内容的内容。根据确定第四媒体流不与存储在缓存中的摘要片段(例如,包括与第一媒体流的第一内容对应的第一摘要片段)相关联,第四虚拟机发送对包括视频数据的多个帧的第四媒体流的请求,生成针对第四媒体流的第二摘要片段以及将针对第四媒体流的第二摘要片段存储在缓存中。在一些实施例中,第四虚拟机不同于第一和第二虚拟机。应当理解,由本文所述的任何虚拟机执行的操作也可由另一虚拟机执行。
100.在一些实施例中,第五虚拟机从第三客户端设备接收(952)包括视频数据的多个帧的第五媒体流;根据确定第五媒体流与存储在缓存中的摘要片段相关联,第五虚拟机向第三客户端设备(例如,和/或cdn)发送命令以停止传输包括视频数据的多个帧的第五媒体流。例如,停止传输第五媒体流(例如,完整的、未经修改的媒体流)的指令减少了所需的带宽量,同时仍然允许虚拟机与客户端设备保持同步。例如,第五虚拟机发送指示其回放位置的进度报告(例如,以设定的时间量更新,诸如每30秒,和/或以设定数量的视频帧更新,诸如每5帧),而不是将整个第五媒体流发送到服务器系统。
101.图10是示出根据一些具体实施的示例性服务器计算机系统1000的框图。在一些实施例中,服务器计算机系统1000是执行虚拟客户端虚拟机103的应用程序服务器。服务器计算机系统1000通常包括一个或多个中央处理单元/核心(cpu)1002、一个或多个网络接口1004、存储器1006和用于互连这些部件的一个或多个通信总线1008。
102.存储器1006包括高速随机存取存储器,诸如dram、sram、ddr ram或其他随机存取固态存储器设备,并且可包括非易失性存储器,诸如一个或多个磁盘储存设备、光盘储存设备、闪存存储器设备,或其他非易失性固态储存设备。存储器1006任选地包括远离一个或多个cpu 1002定位的一个或多个存储设备。存储器1006或可替代地,存储器1006内的非易失性固态存储器设备包括非暂态计算机可读储存介质。在一些具体实施中,存储器1006或存储器1006的非暂态计算机可读存储介质存储以下程序、模块和数据结构,或其子集或超集:
103.·
操作系统1010,其包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;
104.·
网络通信模块1012,其被用于经由一个或多个网络接口1004(有线或无线)将服务器计算机系统1000连接到其他计算设备,该一个或多个网络接口连接到一个或多个网络,诸如互联网、其他wan、lan、pan、man、vpn、对等网络、内容递送网络、临时连接等;
105.·
一个或多个媒体资产模块1014,其用于使得服务器计算机系统1000能够执行各种功能,媒体资产模块1014包括但不限于:
106.ο内容递送网络模块1016,其用于检索和/或处理例如从cdn 105接收到的媒体内容;
107.·
一个或多个虚拟客户端虚拟机模块1018,其用于执行一个或多个vcvm 103;在一些具体实施中,一个或多个虚拟客户端虚拟机模块1018包括:
108.ο智能图形和媒体代理1020,其用于跟踪客户端设备的图形状态和/或处理图形内容(例如,sgmp 1020包括上文参考图1描述的sgmp 102);
109.ο第三方应用程序1022,其用于在vcvm 103上执行(例如,应用程序1022包括上述第三方应用程序101);
110.ο摘要生成器模块1024,诸如摘要创建器107,其用于基于媒体流片段来生成摘要片段;和
111.οapi模块1026,其用于调用和/或使用api,包括网络api 710和第三方应用程序的api(例如,媒体回放api 712)以处理媒体流和/或摘要片段的回放。
112.在一些具体实施中,服务器计算机系统1000包括网络或超文本传输协议(http)服务器、文件传输协议(ftp)服务器,以及使用通用网关接口(cgi)脚本、php超文本预处理器(php)、活动服务器网页(asp)、超文本标记语言(html)、可扩展标记语言(xml)、java、javascript、异步javascript和xml(ajax)、xhp、javelin、无线通用资源文件(wurfl)等实现的网页和应用程序。
113.尽管图10示出了根据一些具体实施的服务器计算机系统1000,但是图10更多地旨在作为可存在于一个或多个媒体内容服务器中的各种特征的功能描述,而不是作为本文所述的具体实施的结构示意图。实际上,单独示出的项目可组合,并且一些项目可分开。例如,图10中单独示出的一些项目可在单个服务器上实现,并且单个项目可由一个或多个服务器实现。用于实现服务器计算机系统1000的服务器的实际数量以及如何在它们之间分配特征将随不同具体实施而改变,并且任选地部分取决于服务器系统在高峰使用时段期间以及在平均使用时段期间处理的数据流量。
114.图11是示出根据一些具体实施的示例性客户端设备1100(例如,图1的客户端设备130)的框图。客户端设备1100通常包括一个或多个中央处理单元(cpu,例如处理器或核心)1106、一个或多个网络(或其他通信)接口1110、存储器1108和用于互连的这些部件的一个或多个通信总线1114。通信总线1114任选地包括互连并控制系统组件之间的通信的电路(有时称为芯片组)。
115.客户端设备包括输入/输出模块1104,包括输出设备1105,诸如视频输出和音频输出,以及输入设备1107。在一些具体实施中,输入设备1107包括键盘、遥控器或触控板。例如,输出设备1105被用于输出视频和/或音频内容(例如,由与客户端设备1100耦接的一个或多个显示器和/或扬声器再现)并且/或者输入设备1107被用于接收用户输入(例如,从客户端设备1100的部件(例如,键盘、鼠标和/或触摸屏)和/或耦接到客户端设备1100的控件(例如,远程控件))。可替代地或另外,客户端设备包括(例如,被耦接到)显示设备(例如,以显示视频输出)。
116.客户端设备包括用于与在服务器系统上执行的第三方应用程序通信的应用程序代理1103。例如,代替在客户端设备上存储和执行应用程序,应用程序代理1103(例如,从服务器系统中的虚拟机)接收命令并且基于接收到的命令指示客户端设备相应地更新显示。
117.在一些具体实施中,一个或多个网络接口1110包括用于从其他客户端设备1100、服务器计算机系统1000和/或其他设备或系统接收数据和/或向其传输数据的无线和/或有线接口。在一些具体实施中,数据通信是使用各种自定义或标准有线协议(例如,usb、火线、以太网等)中的任一种来执行的。
118.存储器1112包括高速随机存取存储器,诸如dram、sram、ddr ram或其他随机存取固态存储器设备,并且可包括非易失性存储器,诸如一个或多个磁盘储存设备、光盘储存设备、闪存存储器设备,或其他非易失性固态储存设备。存储器1112可任选地包括远离cpu 1106定位的一个或多个储存设备。存储器1112或可替代地,存储器1112内的非易失性存储
器固态存储设备包括非暂态计算机可读储存介质。在一些具体实施中,存储器1112或存储器1112的非暂态计算机可读存储介质存储以下程序、模块和数据结构,或其子集或超集:
119.·
操作系统1101,其包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;
120.·
网络通信模块1118,其用于经由一个或多个网络接口1110(有线或无线)将客户端设备1100连接到其他计算设备(例如,客户端设备103、服务器计算机系统1000和/或其他设备);
121.·
机顶盒服务协调器1120,其用于与运营商数据中心通信,诸如编排器110,其用于处理提供给客户端设备(例如,机顶盒)的内容服务;
122.·
机顶盒应用程序协调器1122,其用于管理在服务器系统处执行的多个第三方应用程序,机顶盒应用程序协调器具有附加模块,包括但不限于:
123.ο一个或多个应用程序代理1124,其用于与第三方应用程序(例如,应用程序101)通信(例如,图形状态);
124.·
api模块1126,其用于管理各种api,包括例如opengl和/或openmax;
125.·
图形处理单元(gpu)1128,其用于渲染图形内容,包括帧缓冲和显示控制;和
126.·
流存储模块1130,其用于存储原始媒体内容(例如,来自cdn 105),诸如存储视频流的原始片段。
127.本发明的特征可在计算机程序产品中实现、使用或借助于计算机程序产品来实现,该计算机程序产品诸如具有存储在其上/其中的指令的存储介质或计算机可读存储介质,该指令可以于对处理系统进行编程以执行本文所提出的特征中的任何特征。存储介质(例如,存储器1006和存储器1112)可包括但不限于高速随机存取存储器,诸如dram、sram、ddr ram或其他随机存取固态存储器设备,并且可包括非易失性存储器,诸如一个或多个磁盘储存设备、光盘储存设备、闪存存储器设备,或其他非易失性固态储存设备。在一些实施例中,存储器1006和存储器1112包括一个或多个远离cpu 1002和1106定位的存储设备。存储器1006和存储器1112或可替代地这些存储器内的非易失性存储器设备包括非暂态计算机可读存储介质。
128.应当理解,尽管本文中可使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于将一个元件与另一元件区分开。
129.本文所使用的术语仅用于描述特定实施例的目的,而不旨在限制权利要求书。如在实施例的描述和所附权利要求书中所使用的,除非上下文另外清楚地指示,否则单数形式“一个”、“一种”和“所述”旨在同样包括复数形式。还应理解,如本文所使用的,术语“和/或”是指并涵盖相关联的所列项目中的一者或多者的任何及所有可能组合。应当进一步理解的是,当在本说明书中使用时,术语“包括”指定所陈述的特征、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或多个其他特征、步骤、操作、元件、部件和/或其组。
130.如本文中所使用,取决于上下文,术语「若」可解释为意谓「当」或「一旦」或「响应于确定」或「根据确定」或「响应于侦测到」所陈述的先决条件为真。类似地,取决于上下文,片语「若确定(所陈述的先决条件为真)」或「若(所陈述的先决条件为真)」或「当(所陈述的先决条件为真)时」可解释为意谓「一旦确定」或「响应于确定」或「根据确定」或「一旦侦测到」或「响应于侦测到」所陈述的先决条件为真。
131.出于解释的目的,已经参考具体实施例描述了前述描述。然而,上文的说明性讨论并不旨在是详尽的或将权利要求书限制于所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释操作原理和实际应用,从而使本领域的其他技术人员能够理解。

技术特征:
1.一种方法,包括:在托管一个或多个虚拟机的服务器系统处,每个虚拟机与用于回放媒体流的一个或多个客户端设备中的相应客户端设备相关联:在与第一客户端设备对应的第一虚拟机处:接收第一媒体流,所述第一媒体流包括与视频数据的多个帧对应的第一内容;生成与所述第一媒体流对应的第一摘要片段,其中所述第一摘要片段包括所述多个帧的表示但不包括所述视频数据;以及将所述第一摘要片段存储在所述服务器系统处的缓存中;以及在与不同于正在回放所述第一媒体流的所述第一客户端设备的第二客户端设备对应的第二虚拟机处:接收所述第一媒体流在所述第二客户端设备处的回放位置;以及使用来自所述第二客户端设备的所述回放位置和存储在所述缓存中的所述第一摘要片段来执行处理以重新创建所述第一媒体流在所述第二客户端设备上的回放的表示。2.根据权利要求1所述的方法,进一步包括:使用所述第一摘要片段来确定针对所述第一媒体流的第一覆盖;以及向所述第一客户端设备传输针对所述第一媒体流的所述第一覆盖。3.根据权利要求1至2中任一项所述的方法,其中进行处理以重新创建所述第一媒体流在所述第二客户端设备上的回放的表示包括:在所述第二虚拟机处,使用存储在所述缓存中的所述第一摘要片段基于所述第一摘要片段来生成重构媒体流,其中所述重构媒体流包括不同于所述视频数据的伪数据。4.根据权利要求1至3中任一项所述的方法,进一步包括:使用存储在所述缓存中的所述第一摘要片段和所接收的回放位置来确定针对所述第一媒体流的第二覆盖;以及向所述第二客户端设备传输针对所述第一媒体流的所述第二覆盖。5.根据权利要求4所述的方法,进一步包括:在所述第二虚拟机处:从所述第二客户端设备接收回放命令;响应于接收到所述回放命令,使用所述重构媒体流来确定所述第一媒体流在所述第二客户端设备处的第一回放位置;其中:所述第二覆盖是基于针对所述第一媒体流的所述回放命令来确定的;并且所述第二覆盖被传输到所述第二客户端设备以在所述第一媒体流的所述第一回放位置处显示。6.根据权利要求5所述的方法,其中:所述一个或多个虚拟机中的所述第二虚拟机执行包括第一应用程序编程接口(api)的第一应用程序;并且确定所述第一覆盖包括经由所述第一api将所述重构媒体流传输到所述第一应用程序以及接收从所述第一api返回的所述第一覆盖。7.根据权利要求6所述的方法,其中所述第一覆盖包括由所述第一应用程序提供的一个或多个图形用户界面元素。
8.根据权利要求1至7中任一项所述的方法,进一步包括:在所述第一虚拟机处确定不存在存储在所述缓存中的与所述第一媒体流对应的摘要片段,其中根据确定不存在存储在所述缓存中的与所述第一媒体流对应的摘要片段来执行生成和存储。9.根据权利要求1至8中任一项所述的方法,进一步包括:在第四虚拟机处接收包括视频数据的多个帧的第四媒体流,其中所述第四媒体流包括不同于所述第一媒体流的所述第一内容的内容;以及根据确定所述第四媒体流不与存储在所述缓存中的摘要片段相关联:发送对包括所述视频数据的多个帧的所述第四媒体流的请求;生成针对所述第四媒体流的第二摘要片段;以及将针对所述第四媒体流的所述第二摘要片段存储在所述缓存中。10.根据权利要求1至9中任一项所述的方法,进一步包括:在第五虚拟机处从第三客户端设备接收包括视频数据的多个帧的第五媒体流;以及根据确定所述第五媒体流与存储在所述缓存中的摘要片段相关联,向所述第三客户端设备发送命令以停止传输包括视频数据的多个帧的所述第五媒体流。11.根据权利要求1至10中任一项所述的方法,其中所述视频数据包括所述第一媒体流中的所述多个帧中的每个帧中的图像内容。12.根据权利要求1至11中任一项所述的方法,其中所述回放位置包括指示所述第一媒体流内的位置的时间戳。13.根据权利要求1至12中任一项所述的方法,其中所述回放位置进一步包括针对所述第一媒体流的帧标头。14.根据权利要求1至13中任一项所述的方法,其中所述第一摘要片段中的所述多个帧的所述表示包括针对所述第一媒体流的片段标头。15.根据权利要求1至13中任一项所述的方法,其中所述第一摘要片段中的所述多个帧的所述表示包括与所述多个帧中的相应帧对应的至少一个相应帧标头。16.根据权利要求1至13中任一项所述的方法,其中所述第一摘要片段中的所述多个帧的所述表示包括针对所述多个帧中的至少一个相应帧的帧标识符。17.根据权利要求1至16中任一项所述的方法,其中从所述第一客户端设备接收所述第一媒体流。18.根据权利要求1至16中任一项所述的方法,其中从内容提供者接收所述第一媒体流。19.根据权利要求1至18中任一项所述的方法,其中使用随机数据或伪随机数据来生成所述第一摘要片段的至少一部分。20.一种计算机可读存储介质,所述计算机可读存储介质存储有供托管一个或多个虚拟机的服务器系统执行的一个或多个程序,每个虚拟机与用于回放媒体流的一个或多个客户端设备中的相应客户端设备相关联,所述一个或多个程序包括用于执行以下操作的指令:在与第一客户端设备对应的第一虚拟机处:接收第一媒体流,所述第一媒体流包括与视频数据的多个帧对应的第一内容;生成与所述第一媒体流对应的第一摘要片段,其中所述第一摘要片段包括所述多个帧
的表示但不包括所述视频数据;以及将所述第一摘要片段存储在所述服务器系统处的缓存中;以及在与不同于正在回放所述第一媒体流的所述第一客户端设备的第二客户端设备对应的第二虚拟机处:接收所述第一媒体流在所述第二客户端设备处的回放位置;以及使用来自所述第二客户端设备的所述回放位置和存储在所述缓存中的所述第一摘要片段来执行处理以重新创建所述第一媒体流在所述第二客户端设备上的回放的表示。21.一种托管一个或多个虚拟机的服务器系统,每个虚拟机与用于回放媒体流的一个或多个客户端设备中的相应客户端设备相关联,所述服务器系统包括:一个或多个处理器;和存储器,所述存储器存储有供所述一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行以下操作的指令:在与第一客户端设备对应的第一虚拟机处:接收第一媒体流,所述第一媒体流包括与视频数据的多个帧对应的第一内容;生成与所述第一媒体流对应的第一摘要片段,其中所述第一摘要片段包括所述多个帧的表示但不包括所述视频数据;以及将所述第一摘要片段存储在所述服务器系统处的缓存中;以及在与不同于正在回放所述第一媒体流的所述第一客户端设备的第二客户端设备对应的第二虚拟机处:接收所述第一媒体流在所述第二客户端设备处的回放位置;以及使用来自所述第二客户端设备的所述回放位置和存储在所述缓存中的所述第一摘要片段来执行处理以重新创建所述第一媒体流在所述第二客户端设备上的回放的表示。

技术总结
一种服务器计算设备托管一个或多个虚拟机。与第一客户端设备对应的第一虚拟机接收包括与视频数据的多个帧对应的第一内容的第一媒体流,以及生成与所述第一媒体流对应的第一摘要片段。所述第一摘要片段包括所述多个帧的表示但不包括所述视频数据。所述第一虚拟机将所述第一摘要片段存储在所述服务器系统处的缓存中。与第二客户端设备对应的第二虚拟机接收所述第一媒体流在所述第二客户端设备处播放的回放位置,以及使用来自所述第二客户端设备的所述回放位置和存储在所述缓存中的所述第一摘要片段来执行处理以重新创建所述第一媒体流在所述第二客户端设备上的回放的表示。媒体流在所述第二客户端设备上的回放的表示。媒体流在所述第二客户端设备上的回放的表示。


技术研发人员:R
受保护的技术使用者:活动视频网络有限公司
技术研发日:2021.12.03
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐