虚拟场景的场景图像传输方法、计算机设备及存储介质与流程

文档序号:15925284发布日期:2018-11-14 01:04阅读:163来源:国知局

本申请实施例涉及图像处理技术领域,特别涉及一种虚拟场景的场景图像传输方法、计算机设备及存储介质。

背景技术

随着网络及电子技术的不断发展,网络云应用的应用范围也越来越广泛,而云端虚拟场景(比如云游戏)则是网络云应用中较为重要的应用之一。

在相关技术中,云端虚拟场景的图像渲染过程在服务器中进行。一方面,服务器采集虚拟场景的显示界面的图像并进行渲染,获得渲染图像;另一方面,服务器按照固定的帧率,每隔预定时长判断是否存在待编码的渲染图像,若存在,则对待编码的渲染图像进行编码后发送至终端,由终端解码获得渲染图像并进行图像的显示。

然而,相关技术中,服务器每隔预定时长判断一次是否存在渲染图像并编码,从图像渲染完成到编码发送之间可能存在不必要的等待时长,导致终端侧的图像展示的延时过高。



技术实现要素:

本申请实施例提供了一种虚拟场景的场景图像传输方法、计算机设备及存储介质,可以用于解决相关技术中从图像渲染完成到编码发送之间可能存在不必要的等待时长,导致终端侧的图像展示的延时过高的问题,技术方案如下:

第一方面,提供了一种虚拟场景的场景图像传输方法,所述方法包括:

对待显示图像进行渲染,获得第一渲染图像,所述待显示图像是所述虚拟场景的显示界面发生变化时,对所述显示界面进行图像采集获得的;

获取第一时间点,所述第一时间点是所述第一渲染图像渲染完成的时间点;

当所述第一时间点和第二时间点之间的时长不小于第一时长阈值时,对所述第一渲染图像进行编码,获得编码图像,所述第二时间点是上一次进行图像编码的时间点;

将所述编码图像发送给终端进行解码并显示。

第二方面,提供了一种虚拟场景的场景图像传输装置,所述装置包括:

渲染模块,用于对待显示图像进行渲染,获得第一渲染图像,所述待显示图像是所述虚拟场景的显示界面发生变化时,对所述显示界面进行图像采集获得的;

时间点获取模块,用于获取第一时间点,所述第一时间点是所述第一渲染图像渲染完成的时间点;

编码模块,用于当所述第一时间点和第二时间点之间的时长不小于第一时长阈值时,对所述第一渲染图像进行编码,获得编码图像,所述第二时间点是上一次进行图像编码的时间点;

发送模块,用于将所述编码图像发送给终端进行解码并显示。

第三方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的虚拟场景的场景图像传输方法。

第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的虚拟场景的场景图像传输方法。

本申请提供的技术方案可以包括以下有益效果:

服务器集群在虚拟场景的显示界面发生变化时采集待渲染图像并进行渲染,获得第一渲染图像,当第一渲染图像渲染完成的时间点与上一次执行图像编码的时间点之间的间隔不小于一定阈值时,即对第一渲染图像进行编码和发送,不需要等待下一次固定的编码周期的到达,从而提高图像编码的及时性,降低了终端侧的图像展示的延时。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是根据一示例性实施例示出的终端的结构示意图;

图2是根据一示例性实施例示出的虚拟场景的显示界面示意图;

图3是根据一示例性实施例示出的一种场景图像传输系统的结构示意图;

图4是图3所示实施例涉及的一种云游戏系统的系统架构图;

图5是根据一示例性实施例示出的一种虚拟场景的场景图像传输流程图;

图6是根据一示例性实施例示出的一种虚拟场景的场景图像传输流程图;

图7至图10是图6所示实施例涉及的四种应用程序或虚拟场景的显示界面的相邻帧渲染时间间隔和统计次数示意图;

图11是图6所示实施例涉及的一种图像渲染和编码时序示意图;

图12是图6所示实施例涉及的对新生成的渲染图像的处理示意图;

图13是图6所示实施例涉及的对缓存的渲染图像进行编码的示意图;

图14是图6所示实施例涉及的另一种图像渲染和编码时序示意图;

图15是根据一示例性实施例示出的场景图像传输装置的结构方框图;

图16是根据一示例性实施例示出的一种计算机设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

本申请实施例提出了一种图像显示的方案,该方案能够在多名用户面对面的状态下,进行虚拟场景的场景参数的同步。为了便于理解,下面对本申请实施例涉及的几个名词进行解释。

(1)云游戏:云游戏是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,服务器端将渲染完毕后的游戏画面压缩后通过网络传送给用户侧的终端,并由终端解码后直接显示。

(2)虚拟场景是指用计算机生成的一种虚拟的场景环境,比如,虚拟场景可以是游戏场景。虚拟场景能够提供一个多媒体的虚拟世界,用户可通过操作设备或操作界面对虚拟场景中可操作的虚拟对象进行控制,以虚拟对象的视角观察虚拟场景中的物体、人物、风景等,或通过虚拟对象和虚拟场景中的物体、人物、风景或者其它虚拟对象等进行互动,例如,通过操作一个虚拟士兵对目标敌军进行攻击等。

虚拟场景通常由终端等计算机设备中的应用程序生成基于终端中的硬件(比如屏幕)进行展示。该终端可以是智能手机、平板电脑或者电子书阅读器等移动终端;或者,该终端也可以是笔记本电脑或者固定式计算机的个人计算机设备。

请参考图1,其是根据一示例性实施例示出的终端的结构示意图。如图1所示,该终端包括主板110、外部输出/输入设备120、存储器130、外部接口140、电容触控系统150以及电源160。

其中,主板110中集成有处理器和控制器等处理元件。

外部输出/输入设备120可以包括显示组件(比如显示屏)、声音播放组件(比如扬声器)、声音采集组件(比如麦克风)以及各类按键等。

存储器130中存储有程序代码和数据。

外部接口140可以包括耳机接口、充电接口以及数据接口等。

电容触控系统150可以集成在外部输出/输入设备120的显示组件或者按键中,电容触控系统150用于检测用户在显示组件或者按键上执行的触控操作。

电源160用于对终端中的其它各个部件进行供电。

在本申请实施例中,主板110中的处理器可以通过执行或者调用存储器中存储的程序代码和数据生成虚拟场景的图像,并将生成的虚拟场景的图像通过外部输出/输入设备120进行展示。其中,上述用于生成虚拟场景的图像的数据,可以是云端服务器发送的,渲染后的图像数据。在展示虚拟场景的过程中,可以通过电容触控系统150检测用户与虚拟场景进行交互时执行的触控操作。

其中,虚拟场景可以是三维的虚拟场景,或者,虚拟场景也可以是二维的虚拟场景。以虚拟场景是三维的虚拟场景为例,请参考图2,其是根据一示例性实施例示出的虚拟场景的显示界面示意图。如图2所示,虚拟场景的显示界面200包括虚拟对象210、三维的虚拟场景的环境画面220、至少一组虚拟控制按钮230以及虚拟对象240。其中,虚拟对象210可以是终端对应的用户账号的当前控制对象,虚拟控制按钮230为可选的控制元素,即用户可通过虚拟控制按钮230操控虚拟对象210;而虚拟对象240可以是非用户控制对象,即虚拟对象240由应用程序自行控制,或者,虚拟对象240也可以是其它终端对应的用户账号控制的虚拟对象,用户可以通过控制虚拟对象210与虚拟对象240进行交互,比如,控制虚拟对象210对虚拟对象240进行攻击。

在图2中,虚拟对象210与虚拟对象240是在三维的虚拟场景中的三维模型,在显示界面200中显示的三维的虚拟场景的环境画面为虚拟对象210的视角所观察到的物体,示例性的,如图2所示,在虚拟对象210的视角观察下,显示的三维虚拟场景的环境画面220为大地224、天空225、地平线223、小山221以及厂房222。

虚拟对象210可以在用户的控制下即时移动,比如,图2示出的虚拟控制按钮230是用于控制虚拟对象210移动的虚拟按钮,用户触控该虚拟控制按钮230时,虚拟对象210可以在虚拟场景中,向触控点相对于虚拟控制按钮230的中心的方向移动。

图3是根据一示例性实施例示出的一种虚拟场景的场景图像传输系统的结构示意图。该系统包括:若干个终端320和服务器集群340。

终端320可以是手机、平板电脑、电子书阅读器、智能眼镜、智能手表、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器等等。

终端320可以是用于展示虚拟场景的显示界面的终端,相应的,服务器集群340可以是支持虚拟场景的应用程序对应的服务器。

终端320与服务器集群340之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。

服务器集群340是一台服务器,或者由若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。

可选的,该系统还可以包括管理设备360,该管理设备360与服务器集群340之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。

可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(localareanetwork,lan)、城域网(metropolitanareanetwork,man)、广域网(wideareanetwork,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hypertextmark-uplanguage,html)、可扩展标记语言(extensiblemarkuplanguage,xml)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(securesocketlayer,ssl)、传输层安全(transportlayersecurity,tls)、虚拟专用网络(virtualprivatenetwork,vpn)、网际协议安全(internetprotocolsecurity,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。

在一种可能的实现方式中,上述虚拟场景的场景图像传输系统可以是云游戏系统。比如,请参考图4,其示出了本申请实施例涉及的一种云游戏系统的系统架构图。如图4所示,云游戏系统包括虚拟化云41、云用研控制中心42、管理人员设备43、用研人员终端44以及玩家终端45。其中,虚拟化云41和云用研控制中心42部署在上述服务器集群340中,理人员设备43对应上述管理设备360,而用研人员终端44以及玩家终端45这对应上述终端320。

在图4所示的系统中,虚拟化云41可以是基于硬件设备运行的虚拟机,该虚拟机中运行有模拟器(比如安卓模拟器、windows模拟器、ios模拟器以及web模拟器等等),模拟器用于模拟玩家终端45所在的系统环境,并基于模拟的系统环境运行游戏程序以生成虚拟场景(即游戏或者app对应的场景),并通过云用研控制中心42将虚拟场景的显示界面的图像发送给玩家终端45和用研人员终端44进行显示。玩家终端45在显示虚拟场景的显示界面的图像的过程中,还接收玩家的操作,并将玩家的操作数据发送至云用研控制中心42,仅云用研控制中心42发送至虚拟化云41,由虚拟化云41中的模拟器根据玩家的操作数据对虚拟场景进行控制。比如,在本申请实施例中,虚拟化云41可以将虚拟机生成的虚拟场景的界面和声音编码为h264/高级音频编码(advancedaudiocoding,aac)音视频流,并以流的方式传输至终端中安装的客户端,同时收集客户端的touch(触摸)操作事件并回传至虚拟化云41的模拟器,以达到操控游戏或app的目的。

此外,云用研控制中心42还对虚拟场景的画面和用户操作进行存档。

在本申请所示的方案中,可以对服务器集群执行图像编码的过程进行改进,以降低终端侧展示虚拟场景的延时。请参考图5,其是根据一示例性实施例示出的一种虚拟场景的场景图像传输流程图。如图5所示,服务器集群对待显示图像进行渲染,获得第一渲染图像,该待显示图像是该虚拟场景的显示界面发生变化时,对该显示界面进行图像采集获得的(51)。服务器集群获取第一时间点,该第一时间点是该第一渲染图像渲染完成的时间点(52)。当该第一时间点和第二时间点之间的时长不小于第一时长阈值时,服务器集群对该第一渲染图像进行编码,获得编码图像,该第二时间点是上一次进行图像编码的时间点(53)。服务器集群将该编码图像发送给终端进行解码并显示(54)。

通过上述图5所示的方案,服务器集群生成虚拟场景,并在虚拟场景的显示界面发生变化时采集待渲染图像并进行渲染,获得第一渲染图像,当第一渲染图像渲染完成的时间点与上一次执行图像编码的时间点之间的间隔不小于一定阈值时,即对第一渲染图像进行编码和发送,不需要等待下一次固定的编码周期的到达,从而提高图像编码的及时性,降低了终端侧的图像展示的延时。

此外,上述图5所示的方案,服务器集群只有在虚拟场景的显示界面发生变化时才会采集待渲染图像并进行渲染,减少了不必要的渲染和编码的步骤,提高了网络资源的利用率。

请参考图6,其是根据一示例性实施例示出的一种虚拟场景的场景图像传输方法的流程图。该虚拟场景的场景图像传输方法可以应用在如图3所示的系统的服务器集群中。如图6所示,该虚拟场景的场景图像传输方法可以包括如下步骤:

步骤601,当虚拟场景的显示界面中的界面内容发生变化时,采集变化后的该显示界面的界面图像,获得待显示图像。

其中,上述虚拟场景的显示界面,是指该虚拟场景在某一个终端中进行显示时的显示界面。对于同一个虚拟场景,该虚拟场景在不同的终端中显示的显示界面可能相同,也可能不同。

在本申请实施例中,服务器集群在生成虚拟场景后,可以监控虚拟场景的显示界面中的界面内容,当监控到界面内容发生变化时,即采集界面图像,获得待显示图像。反之,如果监控到界面内容未发生变化,则可以不采集界面图像。

比如,在实际应用中,服务器集群可以通过qemu(一种纯软件实现的虚拟化模拟器,可以用于模拟硬件设备)+kvm(一种开源的系统虚拟化模块)的虚拟机可做到按需渲染,比如,只有在界面内容发生变化时才会进行opengl(opengraphicslibrary,开放图形库)渲染。

步骤602,对待显示图像进行渲染,获得第一渲染图像。

比如,以模拟android系统环境为例,android模拟器在模拟出的android系统中调用eglswapbuffers函数,进行最终的屏幕内容的渲染。

在本申请实施例中,一帧图像渲染完成后,虚拟机可以在渲染完成的代码处增加回调,以触发后续判断是否进行编码的流程。

步骤603,获取第一时间点,该第一时间点是第一渲染图像渲染完成的时间点。

比如,在服务器集群中的虚拟机对上述待显示图像进行渲染,并渲染完成时,虚拟机可以将渲染完成的时间点获取为上述第一时间点。

步骤604,判断第一时间点和第二时间点之间的时长是否不小于第一时长阈值,若是,进入步骤605,否则,进入步骤606。

其中,该第二时间点是上一次进行图像编码的时间点。

在实际应用中,不同的终端的性能参数各不相同,某些终端的硬件性能较高,可以支持较高帧率的图像解码和显示,而某些终端的硬件性能较差,能够支持的图像解码的帧率较低。

在本申请实施例中,为了兼顾低性能终端的解码性能,服务器集群中可以设置一个最小编码间隔(即上述第一时长阈值),当渲染晚上一帧图像之后,服务器集群可以判断当前渲染获得的渲染图像是否需要立刻进行编码并传输给用户侧的终端。

步骤605,对该第一渲染图像进行编码,获得编码图像。

在本申请实施例中,如果判断出第一渲染图像渲染完成的时间点距离上一次编码的时间点之间的时长已经达到或超过最小编码间隔,则服务器集群可以立刻对新获得的渲染图像进行编码。

比如,以tn表示当前图像(即上述第一渲染图像)被渲染完成的时间点,elast表示tn之前的最近一次编码的时间点,imin表示编码允许的最小间隔,即上述第一时长阈值为例,如果符合条件:tn-elast≥imin,则服务器集群可以立刻对当前图像进行编码,并更新elast为tn。

步骤606,获取第三时间点和该第二时间点之间的时长。

其中,该第三时间点是第二渲染图像预计渲染完成的时间点,该第二渲染图像是该第一渲染图像的下一帧渲染图像。

在本申请实施例中,上述第三时间点可以通过预测获得。比如,服务器集群可以参考之前各帧图像渲染完成的时间点,来预测下一帧图像被渲染完成的时间点(即上述第三时间点)。

可选的,在获取上述第三时间点时,服务器集群可以获取已渲染的各个渲染图像各自渲染完成的时间点;根据该各个渲染图像中,每相邻两个渲染图像各自渲染完成的时间点之间的时长,获取该第三时间点。

在一种可能的实现方式中,服务器集群可以将各个渲染图像中,每相邻两个渲染图像各自渲染完成的时间点之间的时长做平均值,获得平均时长,并在第一时间点的基础上加上该平均时长,获得第三时间点。

在本申请实施例中,服务器集群只有在虚拟场景的显示界面发生变化时,才会采集并渲染图像,因此,相邻两帧图像被渲染完成的时间点之间的差值可能很大(比如,当虚拟场景的显示界面长时间保持不变时,连续采集并渲染两帧图像之间的时间间隔可能很大),也可能很小(比如,当虚拟场景的显示界面频繁变化时,连续采集并渲染两帧图像之间的时间间隔可能很小)。因此,服务器集群在获取上述第三时间点时,也可以综合考虑各个渲染图像渲染完成的时间点对于预测结果的不同程度的影响。

在实际应用中,距离当前时间点越近的相邻两帧图像被渲染完成的时间点之间的间隔,往往对于预测下一帧图像渲染完成的时间点的结果影响越大。比如,假设最近渲染完成的两帧图像被渲染完成的时间点之间的间隔较大,则下一帧图像渲染完成的时间点有很大的可能距离当前时间点之间的间隔也较大,反之,若最近渲染完成的两帧图像被渲染完成的时间点之间的间隔较小,则下一帧图像渲染完成的时间点有很大的可能距离当前时间点之间的间隔也较小。

基于上述分析,在本申请实施例中,服务器集群可以通过下述公式计算该第三时间点tn+1:

其中,tn+1是该第三时间点,tn是该第一时间点,tn-i是该第一渲染图像之前的第i帧图像渲染完成的时间点。如上述公式所示,在已渲染完成的各个渲染图像中,距离当前时间点越近的相邻两帧图像被渲染完成的时间点之间的间隔,对tn+1的预测结果的影响越大,其中,当前时间点之前的第一帧图像和第二帧图像被渲染完成的时间点之间的间隔对预测结果影响最大(即权重最大),后续每相邻两帧图像被渲染完成的时间点之间的间隔对预测结果影响呈指数降低(即权重呈指数降低)。

步骤607,判断第三时间点和第二时间点之间的时长是否大于第二时长阈值;若是,进入步骤608,否则,进入步骤609。

其中,第二时长阈值大于上述第一时长阈值。

在本申请实施例中,如果判断出第一渲染图像渲染完成的时间点距离上一次编码的时间点之间的时长没有达到最小编码间隔,如果此时对新获得的渲染图像进行编码并发送给终端,可能会导致部分性能较差的终端还在解码并显示上一帧图像而来不及解码显示当前图像的问题。因此,当第一渲染图像渲染完成的时间点距离上一次编码的时间点之间的时长没有达到最小编码间隔时,服务器集群通过上述步骤预测出的下一帧渲染图像渲染完成的时间点,确定是否需要保留当前渲染图像(即第一渲染图像)。

步骤608,缓存该第一渲染图像。

在本申请实施例中,为了使得终端能够及时的向用户展示虚拟场景最新变化的显示界面,服务器集群可以预先设置一个最大编码帧间隔imax,如果tn+1-elast>imax,则表示在下一次需要编码的时间点,预计不会再产生新的渲染图像,此时,服务器集群可以对当前渲染图像进行缓存,等待到下次需要编码的时间进行编码。

由上述分析可知,imin主要目的是设置一个用户终端可以接受的最大编码速率(避免发送太快导致用户终端来不及解码),而imax主要是为了让用户能够及时看到最新的画面,服务器集群每隔imax时长,尝试获取最新产生且没编码过的图片,以及时编码传输到用户终端进行展示。

在本申请实施例中,服务器集群可以预先对大量的手机等移动终端的编解码能力的统计,获得一个可以被大部分终端所接收的帧率范围,并在该帧率范围的基础上,结合实际应用中的各种虚拟场景的刷新帧率进行统计并确定上述imin和imax。

请参考图7至图10,其是本申请实施例涉及的四种应用程序或虚拟场景的显示界面的相邻帧渲染时间间隔和统计次数示意图。实际应用中,应用程序或者虚拟场景的显示界面的刷新率通常为30fps或者60fps,对应的刷新时间间隔为15ms和30ms。在图7至图10中,横坐标为相邻帧渲染的时间间隔,纵坐标为统计获得的相邻帧渲染的时间间隔处于对应的时间间隔的次数。通过图7至图10可见,大部分应用程序或者虚拟场景的显示界面中,相邻帧渲染的时间间隔集中在15-17ms和32-34ms这两个区间内,且同一时间段内的间隔大体上是一致的,结合上述可以被大部分终端所接收的帧率范围,在本申请实施例中,可以将imin和imax设置在30ms左右,比如,可以将imin设置为29ms,imax设置为34ms。当然,实际应用中,服务器集群也可以将imin和imax设置为30ms左右的其它数值,只需要满足imin<imax即可。

需要说明的是,在本申请实施例中,服务器集群在缓存第一渲染图像时,如果缓存中已存在上一次渲染获得的渲染图像,则在缓存第一渲染图像时,服务器集群可以将上一次渲染并存储的渲染图像删除。也即是说,若某一帧渲染图像渲染完成后,服务器集群预测在下一次编码时间到达之前不会产生新的渲染图像,并将当前渲染图像进行缓存,但实际上,在下一次编码时间到达之前产生了新的渲染图像,此时,为了保证向用户及时的展示虚拟场景的最新界面,之前缓存的渲染图像需要被丢弃,在下一次编码时,服务器集群将直接编码最新渲染完成的渲染图像。

步骤609,将该第一渲染图像丢弃。

在本申请实施例中,如果tn+1-elast≤imax,则预估在进行下一次编码之前,还会产生一帧新的渲染图像(即第二渲染图像),为了使得用户能够及时看到最新的虚拟场景的显示界面,此时,服务器集群可以直接丢弃当前渲染图像,并在下一次需要编码时,直接对新的渲染图像进行编码。

比如,请参考图11,其示出了其示出了本申请实施例涉及的一种图像渲染和编码时序示意图。通过上述方案,当虚拟场景的显示界面的刷新间隔集中在15-17ms之间时,在理想情况下,服务器集群可以在两帧渲染图像中取一帧渲染图像,并立即进行视频编码,并传输至用户终端。如图11所示,当tn-elast<imin,且tn+1-elast≤imax时,服务器集群丢弃相邻两帧中的一帧(图11中示出为丢弃渲染图像b、渲染图像d以及渲染图像f,编码渲染图像a、渲染图像c以及渲染图像e)。当虚拟场景的显示界面的刷新间隔集中在32-34ms之间时,在理想情况下,云端服务器可以对每一帧渲染图像都进行编码。

本申请通过上述方案,服务器集群采用不固定的动态帧率,对新产生的渲染图像实时编码,综合终端的解码能力与服务器集群的渲染帧率,设置合理的imin和imax。请参考图12,其示出了本申请实施例涉及的对新生成的渲染图像的处理示意图。如图12所示,服务器集群检测到新生成的渲染图像(步骤1201)时,更新预估的下一帧渲染图像的生成时间点(步骤1202),并判断当前时间点(即上述第一时间点)是否处于可编码时间(步骤1203),即判断最近编码时间与当前时间点之间的间隔是否不小于imin。若当前时间点处于可编码时间(即上一次编码时间与当前时间点之间的间隔大于imin),则对新生成的渲染图像进行h264编码(步骤1204),并更新最近编码时间(步骤1205);若当前时间点不处于可编码时间(即上一次编码时间与当前时间点之间的间隔不大于imin),则进一步判断是否需要缓存新生成的渲染图像(步骤1206),即判断最近编码时间与预估的下一帧渲染图像的生成时间点之间的间隔是否大于imax;若需要缓存新生成的渲染图像(即最近编码时间与预估的下一帧渲染图像的生成时间点之间的间隔大于imax),则将该新生成的渲染图像进行缓存(步骤1207);反之,如果判断不需要缓存新生成的渲染图像(即最近编码时间与预估的下一帧渲染图像的生成时间点之间的间隔不大于imax),则将该新生成的渲染图像丢弃(步骤1208)。

步骤610,在第四时间点到达时,若该第二渲染图像尚未渲染完成,则对该第一渲染图像进行编码,获得编码图像。

其中,该第四时间点处于该第二时间点之后,且该第四时间点与该第二时间点之间的时长是该第二时长阈值的整数倍。

在本申请实施例中,为了处理服务器集群采用动态帧率对新产生的渲染图像实时编码之外的情况,服务器集群还定时对缓存中的渲染图像进行编码监控,以便在到达需要编码的时间点,且未产生需要即时编码的新的渲染图像时,对缓存的渲染图像进行编码。

比如,请参考图13,其示出了本申请实施例涉及的对缓存的渲染图像进行编码的示意图。如图13所示,服务器集群在编码监控的过程中,确定唤醒时间,该唤醒时间elast,该唤醒时间表示预计要编码的时间点,其中,每次进行一次编码之后,第一次确定的唤醒时间为该次编码的时间点elast。

a)服务器集群确定编码间隔超出最长时间间隔imax(步骤1301),即当前时间tn距离上一次唤醒时间的间隔为imax,tn≥elast+imax时,服务器集群进行编码检查,以判断缓存中是否存在最新的渲染图像(步骤1302)。

b)如果缓存中有新的渲染图像,则对尚未编码过的渲染图像进行h264编码(步骤1303),编码后更新最新的编码时间elast=elast(步骤1304)。

c)如果缓存中无新的尚未编码过的渲染图像,则不进行编码,仅更新唤醒时间elast,更新后的唤醒时间是上一次的唤醒时间加上imax。

请参考图14,其示出了本申请实施例涉及的另一种图像渲染和编码时序示意图。如图14所示:

服务器集群在t1时刻完成了渲染图像b的渲染,且t1时刻距离上次编码的时间小于imin,因此无法将渲染图像b直接编码传输给客户端。并且,下一帧渲染图像c的预估产生时间超过下一次需要编码的时间t2,因此,服务器集群对渲染图像b进行缓存。到了t2时刻,服务器集群发现缓存中存在渲染图像b,且上一次编码的渲染图像为渲染图像a,则对渲染图像b进行编码并传输至终端。在t3时刻渲染图像c渲染生成,t3距离t2的时间小于imin,且下一次编码的时间为t2+imax,服务器集群预计下一帧渲染图像d的产生时间为tp超过了t2+imax,因此对渲染图像c进行缓存。但是,实际渲染图像d的产生时间为t4,而t4-t2大于imax,此时,服务器集群会立即对渲染图像d进行编码并传输至终端。

通过本申请所示的方案,虚拟场景(比如云游戏)的显示界面中的内容不发生变化时,服务器集群可以不进行编码,如果到达预计编码的时间,但是发现没有新的渲染图像产生,此时也不会进行编码,从而节省服务器端的处理资源的消耗,将动态帧率编码与传统固定采样编码的方式相结合,实现对采用动态帧率对新产生的渲染图像实时编码之外的情况的处理。

在本申请上述方案以及图11至图14中,仅以编码方式为h264为例进行说明,在实际应用中,服务器集群也可以通过h264之外的其它编码方式(比如h265等)对渲染图像进行编码。本申请实施例不对比编码方式进行限定。

步骤611,将编码图像发送给终端进行解码并显示。

通过本申请实施例所示的实时编码的方式,能够有效减少渲染图像的生成与编码时间之间的时间间隔,实验结果表明,本申请所示的方案与相关技术中采用固定编码帧率的方案相比,平均每一帧图像能够降低延迟16ms,从而极大的提高云游戏的用户体验。此外,在本申请实施例中,当屏幕内容没有发生变化时不进行编码,有效降低服务器集群执行图像编码带来的资源消耗和网络传输的流量。

综上所述,通过本申请实施例所示的方案,服务器集群生成虚拟场景,并在虚拟场景的显示界面发生变化时采集待渲染图像并进行渲染,获得第一渲染图像,当第一渲染图像渲染完成的时间点与上一次执行图像编码的时间点之间的间隔不小于一定阈值时,即对第一渲染图像进行编码和发送,不需要等待下一次固定的编码周期的到达,从而提高图像编码的及时性,降低了终端侧的图像展示的延时。

此外,通过本申请实施例所示的方案,服务器集群只有在虚拟场景的显示界面发生变化时才会采集待渲染图像并进行渲染,减少了不必要的渲染和编码的步骤,提高了网络资源的利用率。

另外,通过本申请实施例所示的方案,当第一时间点和该第二时间点之间的时长小于该第一时长阈值,且第三时间点和第二时间点之间的时长大于第二时长阈值时,缓存第一渲染图像,后续在第四时间点到达时,若该第二渲染图像尚未渲染完成,则对该第一渲染图像进行编码,将动态帧率编码与传统固定采样编码的方式相结合,实现对采用动态帧率对新产生的渲染图像实时编码之外的情况的处理。

图15是根据一示例性实施例示出的一种虚拟场景的场景图像传输装置的结构方框图。该虚拟场景中的场景图像传输装置可以用于服务器集群中,以执行图5或图6所示实施例中由服务器集群执行的全部或者部分步骤。该虚拟场景中的场景图像传输装置可以包括:

渲染模块1501,用于对待显示图像进行渲染,获得第一渲染图像,所述待显示图像是所述虚拟场景的显示界面发生变化时,对所述显示界面进行图像采集获得的;

时间点获取模块1502,用于获取第一时间点,所述第一时间点是所述第一渲染图像渲染完成的时间点;

编码模块1503,用于当所述第一时间点和第二时间点之间的时长不小于第一时长阈值时,对所述第一渲染图像进行编码,获得编码图像,所述第二时间点是上一次进行图像编码的时间点;

发送模块1504,用于将所述编码图像发送给终端进行解码并显示。

可选的,所述时间点获取模块1502,还用于获取第三时间点,所述第三时间点是第二渲染图像预计渲染完成的时间点,所述第二渲染图像是所述第一渲染图像的下一帧渲染图像;

所述装置还包括:

时长获取模块,用于当所述第一时间点和所述第二时间点之间的时长小于所述第一时长阈值时,获取所述第三时间点和所述第二时间点之间的时长;

缓存模块,用于当所述第三时间点和所述第二时间点之间的时长大于第二时长阈值时,缓存所述第一渲染图像,所述第二时长阈值大于所述第一时长阈值。

可选的,在获取第三时间点时,所述时间点获取模块1502,具体用于,

获取已渲染的各个渲染图像各自渲染完成的时间点;

根据所述各个渲染图像中,每相邻两个渲染图像各自渲染完成的时间点之间的时长,获取所述第三时间点。

可选的,在根据所述各个渲染图像中,每相邻两个渲染图像各自渲染完成的时间点之间的时长,获取所述第三时间点时,所述时间点获取模块1502,具体用于,

通过下述公式计算所述第三时间点tn+1:

其中,tn+1是所述第三时间点,tn是所述第一时间点,tn-i是所述第一渲染图像之前的第i帧图像渲染完成的时间点。

可选的,所述编码模块1503,还用于在缓存所述第一渲染图像之后,在第四时间点到达时,若所述第二渲染图像尚未渲染完成,则对所述第一渲染图像进行编码,获得所述编码图像;所述第四时间点处于所述第二时间点之后,且所述第四时间点与所述第二时间点之间的时长是所述第二时长阈值的整数倍。

可选的,所述装置还包括:

丢弃模块,用于当所述第三时间点和所述第二时间点之间的时长不大于所述第二时长阈值时,丢弃所述第一渲染图像。

上述各个模块的功能的实现过程可以参考图5或图6所示的实施例中的描述,此处不再赘述。

图16是根据一示例性实施例示出的一种计算机设备的结构示意图。所述计算机设备1600包括中央处理单元(cpu)1601、包括随机存取存储器(ram)1602和只读存储器(rom)1603的系统存储器1604,以及连接系统存储器1604和中央处理单元1601的系统总线1605。所述计算机设备1600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1606,和用于存储操作系统1613、应用程序1614和其他程序模块1615的大容量存储设备1607。

所述基本输入/输出系统1606包括有用于显示信息的显示器1608和用于用户输入信息的诸如鼠标、键盘之类的输入设备1609。其中所述显示器1608和输入设备1609都通过连接到系统总线1605的输入输出控制器1610连接到中央处理单元1601。所述基本输入/输出系统1606还可以包括输入输出控制器1610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1610还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备1607通过连接到系统总线1605的大容量存储控制器(未示出)连接到中央处理单元1601。所述大容量存储设备1607及其相关联的计算机可读介质为计算机设备1600提供非易失性存储。也就是说,所述大容量存储设备1607可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1604和大容量存储设备1607可以统称为存储器。

计算机设备1600可以通过连接在所述系统总线1605上的网络接口单元1611连接到互联网或者其它网络设备。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器1601通过执行该一个或一个以上程序来实现图5或图6所示的方法中,由服务器集群执行的全部或者部分步骤。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括计算机程序(指令)的存储器,上述程序(指令)可由计算机设备的处理器执行以完成本申请各个实施例所示的方法中,由服务器集群执行的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

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