本发明涉及一种交互式应用程序的方法。
背景技术:
交互式应用程序,如游戏,可以是计算密集的。特别是对于某些种类的互动是应用程序,如交互式多媒体应用,这种高运算负载的主要组成是需要产生视频或音频以响应用户的输入。此外,负载会随着用户数量加成,因为相同的影像和声音可能需要针对给定应用的每个多个用户中分别产生。
当这样的应用程序设置于服务器,例如基于云的服务器,结果可能需要大量的服务器,而其取得、更新和维持都是昂贵的。
在托管(hosting)计算密集的交互式应用程序,如游戏,需要较佳的解决方案。
技术实现要素:
本发明的实施例将多媒体计算机程序转换输出为一系列的串流视频剪辑,其可以通过由网络数据中心(IDCs)和内容发送网络(CDN)组成的视频串流基础设施在全球分发。
此外,在一些实施例中,视频剪辑以元数据标记方便播放,元数据可以包括,例如,标识符和触发信息。标识符可以是每个视频剪辑的唯一标识符,触发信息可以指定标识符下个播放的剪辑,可能是当前用户输入或其他条件的函数。
一般来说,本发明的实施例包括视频剪辑产生过程和交互式播放程序。
在产生过程中,用户(或者在一些变形,仿真的,机器人用户)与传统的交互式计算机程序互动。在响应用户的互动,计算机程序产生原始视频和音频数据,储存用户输入或其他事件触发产生的特定视频和音频数据,与触发条件相关的特定视频和音频数据之后转换为串流视频剪辑。该剪辑以元数据标记,包括例如ID、触发条件或播放事件,以及长度。在一些实施例,该剪辑之后经由内容发送网络传送到选定的网络数据中心以支持一个或多个交互式应用程序。
在播放过程中,在某些实施例,例如支持交互式游戏播放的实施例,播放第一个视频剪辑。在第一视频剪辑播放结束时(或在一些实施例,在第一视频剪辑播放期间的任何时间),参考元数据以识别触发条件或将触发下个视频剪辑播放的条件。在侦测到触发条件(例如用户按下某个按钮)时,播放下个视频剪辑。以这种方式继续播放直到基于最后的触发条件播放最后的视频剪辑。
在一些实施例中,播放发生在服务器中,如基于云的串流服务器,而内容从服务器串流到用户。在其他的实施例,在播放时,内容经由CDN和IDC串流到用户。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1是根据本发明实施例的分布式主从式计算机系统支持交互式实时多媒体应用程序的方框图;
图2是视频串流基础设施包括内容发送网络(CDN)和多个网络数据中心(IDCs)的方框图,通过本发明的实施例来分发视频剪辑;
图3是其根据本发明实施例,描述交互式视频剪辑产生和播放系统的图;
图4是根据本发明实施例的视频剪辑产生和播放程序的流程图;
图5是根据本发明实施例,描述视频剪辑的图结构组;
图6根据本发明实施例,描述用于从线性视频链接到交互式视频脚本的系统;
图7根据本发明实施例,描述用于从线性视频链接到交互式视频脚本的方法。
具体实施方式
本发明实施例提供多媒体信息的产生和播放,如用于交互式实时媒体应用程序的串流视频剪辑。
图1是根据本发明实施例,分布式主从式计算机系统1000支持交互式实时多媒体应用程序的方框图。计算机系统1000包括一个或多个服务器计算机101和一个或多个用户设备103通过计算机程序产品131配置。计算机程序131可以在暂时性的或非暂时性的计算机可读取介质提供;然而,在特定实施例中,他是在非暂时性计算机可读取介质中提供,如持续性的(如,非挥发性)储存,挥发性内存(如,随机存取内存),或各种其他已知的非暂时性计算机可读取介质。
用户设备103包括中央处理器单元(CPU)120、内存122和储存空间121.用户设备103也包括输入和输出(I/O)子系统(图中未单独示出)(包括如显示器或触控显示器、键盘、d-pad、轨迹球、触摸板、操作杆、麦克风、和/或其他用户接口设备和相关联的控制器电路和/或软件)。用户设备103可以包括任何类型,可以提供媒体内容的电子设备。一些例子包括桌面计算机和可携式电子设备如移动电话、智能型手机、多媒体播放器、电子阅读器、平板/触摸板、笔记本电脑或膝上型PCs、智能电视、智能手表、头戴式显示器和其他通讯设备。
服务器计算机101包括中央处理单元CPU110、储存空间111和内存112(并可包括I/O子系统,未单独示出)。服务器计算机101可以是能够托管计算机产品131的任何计算机设备,用来与一个或多个客户端计算机通讯,例如,用户设备103,通过网络,例如网络102(如,网络)。服务器计算机101经由网络与一个或多个客户端计算机通讯,并且可以采用协议如网络协议组(TCP/IP)、超文本传送协议(HTTP)或HTTPS、实时协议,或其他协议。
内存112和122可以包括任何已知的计算机内存设备。储存空间111和121可以包括任何已知的储存空间设备。
尽管未示出,内存112和122和/或储存空间111和121也可以包括任何可通过服务器计算机101和用户设备103存取的数据储存设备,诸如,可移动或可携式的任何内存(如,闪存或外接硬盘),或任何由第三方托管的数据储存空间(如云端储存空间),并且不限于此。
用户设备103和服务器计算机101经由网络102存取和通讯。网络102包括有线和无线连接,包括广域网(WANs)和蜂巢式网络或任何其他类型作为设备间通讯使用的计算机网络。
在所示实施例中,计算机程序产品131实际上代表计算机程序产品或计算机程序产品部分组成,用来在个别的服务器101和用户设备103上执行。计算机程序产品131的部分装入内存112组成服务器101,遵照本文进一步描述的发明要求,记录并播放交互式串流视频剪辑。串流视频剪辑播放到,例如,用户设备103,其支持接收串流视频,例如经由具有HTML5功能的浏览器。
图2显示视频串流基础设施的一个例子,通过本发明的实施例使用以分发视频剪辑。如图所示,视频串流基础设施2000包括内容发送网络(CDN)200和网络数据中心(IDCs)210-260。
媒体文件201最初储存在文件储存空间202,媒体文件201之后经由CDN200分发到IDCs 210-260。在文件分发后,每个个别的IDC具有分发媒体文件的本地副本。个别的本地副本之后储存为媒体文件副本211-261。每个IDC 210-260之后服务串流媒体,如视频,到个别IDC地理邻近区域的用户,以响应用户的请求。媒体文件副本211-261可以周期性的更新。
在本发明的一些实施例,使用视频串流基础设施2000分发由本文公开的发明过程产生的视频剪辑。也就是说,例如,本发明的视频剪辑作为媒体文件201储存在文件储存空间202,之后经由CDN 200分发到IDCs 210-260,在那里他们可以用于作为串流视频播放给用户。
在其他实施例,本发明视频剪辑直接从,例如,一个或多个服务器,如基于云的服务器分发,而不使用视频串流基础设施2000。
图3是一个系统3000的高阶方框图,其用来产生和储存用元数据标记的交互式视频剪辑,并用来分发交互式视频到用户设备,根据本发明的实施例。系统3000可以被实现为硬件模块或软件模块,或硬件和软件模块的组合。在部分实施例,系统3000的至少一部分包括在服务器运行的软件,如服务器101。
在所示的实施例中,除了产生和储存以元数据标记的交互式视频剪辑,系统3000执行附加的相关功能。例如,在该实施例系统3000还能够回放预先储存的视频剪辑,并且能够响应用户的互动传输串流视频给用户,而不需要将视频首次储存如视频剪辑。在替代实施例中,这些一个或多个功能可以通过单独或多个系统提供。
在图3,计算机程序310可以是,例如,交互式多媒体应用程序。例如,计算机程序310可以是游戏应用程序。计算机程序310产生输出程序320响应输入程序330。
在一些实施例,输出程序320包括原始视频和音频输出,在一些实施例,输出程序320包括视频渲染结果。
在一些实施例,输入程序330包括基于用户输入互动指示的控制讯息,如用户按下按钮,选择列表上的项目或键入命令。这样的用户输入互动可以源自输入接口设备350,输入接口设备可以是与用户设备相关的接口设备,如用户设备103。特定用户设备相关的接口设备可以包括操作杆、鼠标、触控屏幕等。在一些实施例,输入接口设备350可以与远程用户设备103并列,并与其他系统的组件经由网络通讯。虽然标记为「接口设备」,但是本领域技术人员将了解输入设备/组件如接口设备350可以,在特定实施例中,包括输入组件被建置于,即,部分的,用户设备103中(例如触控屏幕、按钮等),而不是从用户设备103分离并插入用户设备103中。
在一些实施例中,输入接口设备350是「机器人」实体,产生一连串仿真真实使用者行为的输入序列。这样的机器人实体可以用来「训练」系统,并且使其产生许多(或甚至全部)输出程序320可能的情况。以这种方式「训练」系统3000的目的可以是,例如,使其产生并储存每个与输出程序320相关视频剪辑的至少一个副本。
应用程序互动容器340提供运行环境运行计算机程序310。在本发明的实施例中,应用程序互动容器340侦测并截取通过输入接口设备350产生的用户输入,并以输入程序330的形式,传递拦截的用户输入到计算机程序310。
应用程序互动容器340还截取原始视频和音频产生为输出程序320,并且利用计算机程序视频处理平台360的服务将原始视频和音频转换串流视频格式,然后将转换的视频和音频作为一个或多个视频片段或剪辑370储存在数据库390。每个剪辑代表响应特定触发条件的音频和视频输出程序(或播放事件),其中一组可能的触发条件包括,例如,输入程序330的特定项目。在一些实施例,原始视频和音频转换为多媒体封装格式,在一些实施例,原始视频和音频被转换为称为MPEG2-传输串流(MPEG2-TS)的格式。
随着视频剪辑370的产生,他们也以一组属性380标记(这里也称作「元数据」),组成,例如,剪辑ID、播放事件和长度。元数据380中的属性与相关联的对应的视频剪辑370储存于数据库390。储存的剪辑370可以用于将来的播放,储存的、标记视频剪辑370可以由相同或不同的用户再次使用。潜在地,给定的剪辑370可以通过数千个用户以计算机程序310在共享服务器或服务器组上互动而被再次使用。
例如,下一次出现给定的播放事件(基于,例如,来自特定用户输入的侦测,从相同用户或不同用户),可以播放以该事件标记的储存的视频剪辑370,从而避免需要重新产生对应的原始视频和音频。对于一些应用程序,这可以导致计算机处理能力的显著节省。见下面的播放过程说明,以得到进一步的细节。
如上所述,在所示实施例中,系统3000也可以回放预先储存的视频剪辑。例如,基于用户经由输入接口设备350的互动,使输入程序330、计算机程序310可以确定特定具有对应到用户互动的元数据380的预先储存剪辑370,其是有效的并且适合响应用户的互动。然后匹配的剪辑370可以从储存空间和串流中撷取,例如,根据多媒体封存格式,如MPEG2-TS,到用户设备103。
如上所述,在所示实施例中,系统3000也可以串流视频给用户以响应用户互动,即使视频当前未被储存为串流视频剪辑370,例如,基于用户经由输入接口设备350互动使输入程序330、计算机程序310可以确定特定视频输出是适合响应用户互动,但没有对应的剪辑370可以使用。所需的视频可以之后通过计算机程序310产出作为原始输出视频320。应用程序互动容器340之后截取输出程序320并且,利用计算机程序视频处理平台360的服务,将原始视频转换为流格式,根据,例如,多媒体封装格式,如MPEG2-TS,并将串流视频发送给用户设备103。有利地,串流视频可以同时被记录、封装为视频剪辑370,并与适当的元数据380储存以作为将来使用。
图4显示产出、储存和播放互动视频剪辑及相关的元数据的过程4000,根据本发明的实施例。在一些实施例,过程4000也支持其他相关的功能,如,例如,在没有首次储存视频作为视频剪辑下,串流视频给用户。
在步骤410,计算机程序在服务器,如服务器101启动。服务器可以是,例如,基于云的服务器。服务器可以是,例如,游戏服务器。计算机程序可以是,例如,交互式多媒体应用程序,如,例如,游戏应用程序。
在步骤420,该过程监控用户输入。
在决策框430,如果没有侦测到用户输入,过程返回到步骤420并继续监控用户输入。若侦测到用户输入,则控制移转到决策框440。
在决策框440,若具有匹配元数据的预先储存视频剪辑存在(即,元数据对应用户输入),控制移转到步骤450,预先储存视频剪辑串流到用户。然后控制返回到步骤420,并且该过程继续监控用户输入。
如果,在决策框440,没有发现具匹配元数据的预先储存剪辑,控制移转到步骤460。在步骤460,来自输出程序响应用户输入的视频片段串流到用户。同时,视频片段被记录用来作为对应视频剪辑的创建准备。在步骤470,记录的视频以串流形式被封装到视频剪辑。例如,流格式可以是多媒体封装格式如MPEG2-TS。
在步骤480,产生与视频剪辑相关的元数据(例如,剪辑ID,播放事件或触发、长度)。
在步骤490,视频剪辑和相关的元数据储存作为将来使用,例如,当遇到与对应剪辑储存元数据的启动装置时,视频剪辑可以通过播放程序在将来使用。通过使用储存的视频剪辑,播放程序可以避免计算机程序需要重新产生对应储存视频剪辑的视频片段。
视频片段可以继续被记录,封装到流格式的片段中,并与相关的元数据储存直到,例如,游戏结束。
注意,程序4000在服务器运行的情况下,例如基于云的服务器,其实际上可以同时处理多个用户,可能许多用户。在这样的情况下,完全可能的是,给定的视频片段已经被记录、封装并储存为视频剪辑370,与对应的元数据380在先前用户与程序4000的交互过程中。在这种情况下,不应该需要再次记录对应的片段,相反地,视频剪辑可以从先前储存的剪辑系列中撷取,基于元数据,其可以包括唯一的ID。
图5显示视频剪辑和相关元数据的图形结构化例子组5000,根据本发明实施例使用在播放程序。这些剪辑可以是,例如,从图3的系统3000和/或通过图4的程序4000产生的视频剪辑370和相关的元数据380。在播放程序,视频剪辑370从服务器串流,如服务器计算机101或与网络数据中心相关的服务器,如IDC210。视频剪辑370在用户设备接收并观看,如用户设备103,其具有适当的功能,如支持HTML5的浏览器。
每个交互式多媒体应用程序或应用程序的部分,可能与相似于视频剪辑组5000形式的播放视频剪辑组相关,也称作元数据播放列表,例如,多级别游戏的每个级别可以有他自己的元数据播放列表。如上所述,关于每个视频剪辑370的元数据被学习作为响应真实或「机器人」用户输入的执行应用程序,因此,同时,元数据播放列表也学习,这是因为元数据播放列表是视频剪辑370的集合,根据元数据380连接,针对特定的应用程序或应用程序的部分。
在图5的例子中,视频剪辑由圆圈表示,每个具有一个ID。例如,视频剪辑510以ID=A标记。箭头表示「播放事件」或触发条件使播放程序5000依箭头方向前进,例如,若视频剪辑520正在播放而按钮X被按下,视频剪辑520的播放停止而视频剪辑530开始。若,另一方面,当视频剪辑520正在播放,用户选择「项目2」,程序转而改变到视频剪辑540。若视频剪辑530正在播放而按钮Y被按下,程序转换并播放视频剪辑550。若视频剪辑540正在播放而用户滑动到「目标Z」,则程序转换并播放视频剪辑560。若视频剪辑560或550任一个正在播放而从麦克风(「MIC」)接收到音频命令「提交」,程序转换并开始播放视频剪辑570。说明稍微不同种类的触发,当视频剪辑510完成播放时,程序自动前进到标记A’的视频剪辑,即视频剪辑520。
可选地,可以采用快取机制帮助视频剪辑的平滑播放。
在本发明的部分实施例,从服务器传送到用户设备的视频,是混合预先计算的视频(储存和再次播放的视频剪辑)和实时产生的视频串流(尚未储存为具有元数据的视频剪辑的视频)。
在上面的描述中,参考串流多媒体封装格式,如MPEG2-TS。应当理解,本发明的实施例不限于MPEG2-TS,而是可以采用各种各样串流封装格式的任何一种,包含但不限于3GP、ASF、AVI、DVR-MS、Flash Video(FLV,F4V)、IFF、Matroska(MKV)、MJ2、QuickTime文件格式、MPEG节目串流、MP4、Ogg和RM(RealMedia封装)。实施例在没有标准化封装格式下的运作也是被预期的。
从线性视频链接到交互式视频脚本
元数据播放列表如元数据播放列表5000也可以被认为代表「交互式视频脚本」。也就是说,元数据播放列表5000表示确定,作为用户输入的功能,视频「脚本」将采取的方向。因此,在图5的例子里,在步骤520,若选择项目2,视频脚本继续视频剪辑ID=B’的内容,而如果按下按钮X,视频脚本继续视频剪辑ID=B的内容。这与传统的「线性」视频相反(或「线性播放」视频)。「线性视频」或「线性播放视频」在本文定义为传统视频,只从开始播放到结束,可能受到典型媒体播放器用户的控制,如快速前进或倒带能力在相同的线性视频来回移动。
有时可能需要利用线性播放视频和交互式视频脚本的组合。例如,可能期望从线性视频链接到交互式视频脚本,或在线性播放和交互式视频脚本间切换(可能在之间来回切换)。此外,在一些情况下,可能期望从线性视频链接到交互式视频脚本中的特定位置,例如为了播放交互式视频脚本的特定部分。
作为一个例子,考虑通过云游戏服务器提供的一组游戏的广告,广告的播放可以通过用户点击网站上作为服务的视频广告连接启动。视频广告接着开始如传统线性播放视频播放。然而,在线性视频的一个或多个点,用户被邀请体验玩实际的游戏,然后用户执行触发动作经由交互式视频脚本启动游戏的进行。根据,例如,触发动作,播放可以从交互式视频脚本的开始而启动,或从在交互式视频脚本中的一些其他位置。再次参考图5,播放可能在510视频剪辑ID=A的播放开始,但是备选地可能在530视频剪辑ID=B的播放开始。在游戏结束时(或在进一步的特定用户输入)交互式脚本终止,可选地,线性视频播放可以在视频脚本终止后恢复。
在上述情况下,一个重要的挑战是识别基于用户输入触发动作启动的特定游戏(或游戏的部分、或游戏内的位置)。这个问题的一个解决方案是提供与用户互动触发发送的当前播放的时间戳。时间戳标识在用户互动时正被观看的线性视频部分。然后要求的游戏在线性视频播放时被辨认为被特征化的游戏。
图6显示一个示例系统,用于根据本发明的一些实施例从线性视频链接到交互式视频脚本。在图6的系统,例如,用户操作用户设备606可以启动线性视频的播放,例如通过点击屏幕607上显示网页的链接。用户设备606可以是,例如,膝上型计算机、平板或智能型手机。在一些实施例,线性视频可以经由视频串流基础设施602提供。视频串流基础设施602可以对应到,例如,视频串流基础设施2000,包括CDN200和网络数据中心210-260,如图2所示。
在线性视频播放的任何时间,用户可以触发交互式视频脚本的播放。可选地,用户可以从脚本内的任何位置开始触发交互式视频脚本的播放。多种用户动作的任一种可以用作触发机制,包括例如选择选单项目、点击链接、按压实体按钮或说出语音命令。作为一个示例,用户可以通过触碰屏幕位置608(在图中标识为「T」用作触发)触发交互式视频脚本的播放。在线性视频播放期间触碰屏幕位置608,将触发脚本请求的发送。在一些实施例,脚本请求包括时间戳。
时间戳的目的是识别基于当线性视频开始播放,已经消逝的时间量而被请求的特定视频脚本。例如,在上述广告场景中,在T1秒的请求可以识别对应到多媒体互动游戏G1的脚本,因为线性广告在时间T1呈现该游戏的特征。在其他实施例,特定视频脚本通过另一个机制识别。在一些实施例,特定视频脚本通过点击选单项目识别,在一些实施例,特定视频脚本通过按压实体按钮识别,或经由语音命令。在一些实施例,时间戳或其他机制用于不仅是识别特定视频脚本,而且识别视频脚本内的特定开始位置。
一旦从时间戳识别特定的脚本,对应到选择脚本的游戏播放可以开始。播放将根据如上述的过程进行,例如结合图5。也就是说,对应游戏的视频剪辑将以储存元数据和当前用户互动确定的顺序播放。虽然已经描述游戏的例子,应当理解互动内容的其他形式可以用类似的方式传送。
在图6,显示交互式视频脚本传送通过交互式视频分配基础设施604。如上面结合图2讨论的,这是可能并想要的,传送视频剪辑通过存在的视频串流基础设施2000。在这种情况下,视频串流基础设施602和交互式视频分配基础设施604都对应到存在的视频串流基础设施2000。在其他实施例中,对应到选择的交互式视频脚本的视频剪辑通过网络直接串流到用户设备606,如因特网,而不使用视频串流基础设施或交互式视频分配基础设施。
图7是描述从线性视频链接到交互式视频脚本示例过程的流程图,例如,视频广告。
在步骤710,用户点击在网页上对应到线性视频广告的链接。在步骤720,线性视频广告经由视频串流基础设施播放。在决策框730,若线性视频广告已经结束,控制移转到决策框790并且处理结束。如果尚未结束并继续播放,在决策框740,系统监控触发。如果没有侦测到触发,继续线性播放。
如果侦测到触发,在步骤750在触发动作的视频播放时间从与该触发传送的时间戳计算。在步骤760基于计算的播放时间选择特定的交互式视频脚本。如上所述,可以替代地采用其他机制来选择特定的交互式视频脚本。此外,如上所述,时间戳或其他机制可以选择地使用来识别在特定交互式视频脚本内的特定开始位置。
在步骤770播放选择的交互式视频脚本,交互式视频脚本的播放可以,例如,通常以在结合上面图5讨论的元数据播放列表实施例的方法进行。在决策框780,如果脚本尚未结束,继续播放。如果脚本已经结束,控制移转到决策框790,并且进程结束。
尽管,在图7的实施例,当交互式视频脚本结束,进程终止,其他的实施例构想线性视频可以在交互式视频脚本结束后继续观看。还构想了其他实施例,用户可以在线性视频和交互式视频间任意次数切换观看。其他实施例构想用户可以在多个线性视频的任何一个和第二个多个交互式视频脚本的任何一个间切换观看。
尽管上面已经描述了一些示例性实施例,但本技术领域人员将了解,在不脱离本发明的精神和范围的情况下,许多修改和变化是可能的。因此,所有这些修改和变化是预期包含在发明请求的范围内。