视频帧的播放时长调整方法、装置、设备及存储介质与流程

文档序号:29618105发布日期:2022-04-13 12:26阅读:200来源:国知局
视频帧的播放时长调整方法、装置、设备及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种视频帧的播放时长调整方法、装置、设备及存储介质。


背景技术:

2.云游戏是基于云计算的新技术。在云游戏模型中,游戏逻辑和渲染都在服务器端运行,然后再从服务器端将压缩的视频传给客户端。
3.相关技术中,游戏的节奏(比如,游戏中视频帧的播放时长、播放速度等)一般会遵从游戏本身的设置,但遵从游戏本身的设置的方式使得无法响应于用户的请求,对游戏的播放时长进行调整,从而无法实现游戏的加速或减速,进而降低用户的游戏体验。


技术实现要素:

4.本公开提供一种视频帧的播放时长方法、装置、设备及存储介质,以至少解决相关技术中无法响应于用户的请求对游戏的播放时长进行调整,从而无法实现游戏的加速或减速,进而降低用户的游戏体验的问题。本公开的技术方案如下:
5.根据本公开实施例的第一方面,提供一种视频帧的播放时长调整方法,应用于云平台中的时长调整模块,包括:
6.接收云游戏中的视频帧的播放时长调整请求;所述播放时长调整请求中携带所述视频帧的播放时长调整信息;
7.根据所述视频帧的初始播放时长和所述播放时长调整信息,得到所述视频帧的目标播放时长;
8.响应于所述云平台中的云游戏模块触发的时间获取请求,将所述目标播放时长返回至所述云游戏模块;所述云游戏模块与所述云游戏相对应。
9.在一示例性的实施方式中,所述时长调整模块预先对时间获取函数进行挂钩处理,所述响应于所述云平台中的云游戏模块触发的时间获取请求,将所述目标播放时长返回至所述云游戏模块,包括:
10.响应于所述云游戏模块调用所述时间获取函数触发的所述时间获取请求,拦截所述时间获取函数;
11.跳转至所述时间获取函数的首地址;
12.基于所述目标播放时长更新所述首地址中的指令,得到更新后的时间获取函数;
13.将所述更新后的时间获取函数返回至所述云游戏模块;所述云游戏模块用于从所述更新后的时间获取函数中获取所述目标播放时长。
14.在一示例性的实施方式中,所述播放时长调整信息表征:将所述视频帧的初始播放时长提高或缩短预设数量倍;所述根据所述视频帧的初始播放时长和所述播放时长调整信息,得到所述视频帧的目标播放时长,包括:
15.对所述初始播放时长和所述播放时长调整信息进行乘除运算,得到所述目标播放
时长。
16.在一示例性的实施方式中,所述播放时长调整信息表征:跳过对所述视频帧中的预设内容的播放;所述根据所述视频帧的初始播放时长和所述播放时长调整信息,得到所述视频帧的目标播放时长,包括:
17.计算所述初始播放时长和预设时间的差值,得到所述目标播放时长;所述预设时间为播放所述预设内容所需的时间。
18.在一示例性的实施方式中,在所述接收云游戏中的视频帧的播放时长调整请求之前,所述方法还包括:
19.通过内联钩子的方式对所述时间获取函数进行挂钩处理。
20.在一示例性的实施方式中,所述接收云游戏中的视频帧的播放时长调整请求,包括:
21.接收客户端发送的所述播放时长调整请求;
22.所述方法还包括:
23.响应于所述时间获取请求,将所述目标播放时长返回至所述云游戏模块;所述云游戏模块用于通过所述目标播放时长对所述视频帧的播放速度进行调整,以及用于将速度调整后的视频帧发送至所述客户端;所述客户端用于对所述速度调整后的视频帧进行播放。
24.根据本公开实施例的第二方面,提供一种视频帧的播放时长调整装置,应用于云平台中的时长调整模块,包括:
25.播放时长调整请求接收模块,被配置为执行接收云游戏中的视频帧的播放时长调整请求;所述播放时长调整请求中携带所述视频帧的播放时长调整信息;
26.目标播放时长确定模块,被配置为执行根据所述视频帧的初始播放时长和所述播放时长调整信息,得到所述视频帧的目标播放时长;
27.时间获取请求响应模块,被配置为执行响应于所述云平台中的云游戏模块触发的时间获取请求,将所述目标播放时长返回至所述云游戏模块;所述云游戏模块与所述云游戏相对应。
28.在一示例性的实施方式中,所述时长调整模块预先对时间获取函数进行挂钩处理,所述时间获取请求响应模块,包括:
29.拦截单元,被配置为执行响应于所述云游戏模块调用所述时间获取函数触发的所述时间获取请求,拦截所述时间获取函数;
30.跳转单元,被配置为执行跳转至所述时间获取函数的首地址;
31.更新单元,被配置为执行基于所述目标播放时长更新所述首地址中的指令,得到更新后的时间获取函数;
32.返回单元,被配置为执行将所述更新后的时间获取函数返回至所述云游戏模块;所述云游戏模块用于从所述更新后的时间获取函数中获取所述目标播放时长。
33.在一示例性的实施方式中,所述播放时长调整信息表征:将所述视频帧的初始播放时长提高或缩短预设数量倍;所述目标播放时长确定模块,被配置为执行对所述初始播放时长和所述播放时长调整信息进行乘除运算,得到所述目标播放时长。
34.在一示例性的实施方式中,所述播放时长调整信息表征:跳过对所述视频帧中的
预设内容的播放;所述目标播放时长确定模块,被配置为执行计算所述初始播放时长和预设时间的差值,得到所述目标播放时长;所述预设时间为播放所述预设内容所需的时间。
35.在一示例性的实施方式中,所述装置还包括:
36.挂钩模块,被配置为执行通过内联钩子的方式对所述时间获取函数进行挂钩处理。
37.在一示例性的实施方式中,所述播放时长调整请求接收模块,被配置为执行接收客户端发送的所述播放时长调整请求;
38.所述时间获取请求响应模块,被配置为执行响应于所述时间获取请求,将所述目标播放时长返回至所述云游戏模块;所述云游戏模块用于通过所述目标播放时长对所述视频帧的播放速度进行调整,以及用于将速度调整后的视频帧发送至所述客户端;所述客户端用于对所述速度调整后的视频帧进行播放。
39.根据本公开实施例的第三方面,提供一种电子设备,包括:
40.处理器;
41.用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上述所述的视频帧的播放时长调整方法。
42.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备执行如上述所述的视频帧的播放时长调整方法。
43.根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述所述的视频帧的播放时长调整方法。
44.本公开的实施例提供的技术方案至少带来以下有益效果:
45.本公开实施例应用于云平台中的时长调整模块,在接收到携带视频帧的播放时长调整信息的播放时长调整请求的时候,可以根据该视频帧的初始播放时长和播放时长调整信息,得到该视频帧的目标播放时长,并在响应于云平台中的云游戏模块触发的时间获取请求时,将目标播放时长返回至云游戏模块。由于返回至云游戏模块的目标播放时长与初始播放时长不同,从而改变了视频帧的播放时长,进而可以实现视频帧的加速或减速,提高用户的游戏体验。
46.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
48.图1是根据一示例性实施例示出的一种视频帧的播放时长调整的应用环境图。
49.图2是根据一示例性实施例示出的一种云游戏的组网架构示意图。
50.图3是根据一示例性实施例示出的一种视频帧的播放时长调整方法的流程图。
51.图4是根据一示例性实施例示出的一种将视频帧的初始播放时长缩短预设数量倍的示意图。
52.图5是根据一示例性实施例示出的一种将视频帧的初始播放时长提高预设数量倍
的示意图。
53.图6是根据一示例性实施例示出的一种跳过视频帧中的预设内容的示意图。
54.图7是根据一示例性实施例示出的一种响应于上述云平台中的云游戏模块触发的时间获取请求,将上述目标播放时长返回至上述云游戏模块的流程示意图。
55.图8是根据一示例性实施例示出的另一种视频帧的播放时长调整方法的流程图。
56.图9是根据一示例性实施例示出的一种视频帧的播放时长调整装置框图。
57.图10是根据一示例性实施例示出的一种用于视频帧的播放时长调整的电子设备的框图。
具体实施方式
58.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
59.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
60.请参阅图1,图1是根据一示例性实施例示出的一种视频帧的播放时长调整的应用环境图,该应用环境可以包括客户端01和云平台02。
61.其中,云平台02可以包括时长调整模块、云游戏模块、库文件(比如,libc.so库)。该库文件中包括时间获取函数。可选地,该云平台可以是包括支持云游戏的任何操作系统类型的云主机。可选地,该云平台可以包括但不限于:基于linux系统构建的云主机、基于windows系统构建的云主机、基于andriod系统(安卓系统)构建的云主机、基于ios系统构建的云主机等。
62.示例性地,该云平台可以是包括独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
63.其中,该时长调整模块可以用于预先对库文件中的时间获取函数进行挂钩处理,以及用于接收携带云游戏中的视频帧的播放时长调整信息的播放时长调整请求,以及用于根据视频帧的初始播放时长和播放时长调整信息,得到视频帧的目标播放时长,以及用于响应于云平台中的云游戏模块触发的时间获取请求,将目标播放时长返回至云游戏模块。
64.其中,该云游戏模块可以用于接收该时长调整模块返回的目标播放时长。
65.其中,客户端01可以用于向云平台02中的时长调整模块发送云游戏中的视频帧的播放时长调整请求。可选地,客户端01可以为用户持有的玩家游戏终端,该玩家游戏终端用于启动云游戏,其可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、智能可穿戴设备等终端设备。
66.需要说明的是,上述应用环境仅仅是一种示例,本公开实施例还可以包括其他应用环境。
67.图2是根据一示例性实施例示出的一种云游戏的组网架构示意图。如图2所示,应用程序(application,app)运行在客户端01上,云游戏运行在云平台上,两者可以基于网络进行通信。
68.其中,控制流,用于表示用户可以通过操作用户终端上的app来控制云平台上的云游戏的游戏操作指令(比如:游戏中各种点击操作触发的指令),还可以用于表示app和云游戏之间进行云游戏相关的业务指令(比如:登录、支付等触发的指令)。
69.音视频流,用于表示云平台可以将云游戏的音视频流发送至客户端上的app,用于app向用户展示音视频流对应的游戏画面,以使用户基于展示的游戏画面进一步执行游戏操作来玩游戏。
70.图3是根据一示例性实施例示出的一种视频帧的播放时长调整方法的流程图,如图3所示,该方法应用于图1中的时长调整模块中,可以包括以下步骤。
71.在步骤s11中,接收云游戏中的视频帧的播放时长调整请求;上述播放时长调整请求中携带上述视频帧的播放时长调整信息。
72.示例性地,该时长调整模块可以为云平台中的、用于对播放时长进行调整的进程。
73.具体地,该云游戏可以包括任意类型的云游戏。例如,单机游戏、多人联机游戏等。该多人可以是指至少两人。
74.可选地,上述视频帧与运行在上述云平台中的云游戏相对应,上述视频帧可以为云游戏视频中的任一游戏帧,即云游戏视频中的任一播放画面。
75.具体地,视频帧的播放时长指的是:播放该视频帧所需的时间,也可以理解为两个画面切换的间隔时间(即更新每个视频帧所需的时间)。
76.示例性地,客户端在参与游戏的过程中,如果想要对游戏视频中的视频帧的播放时长进行调整,可以对客户端中展示的云游戏视频中的视频帧进行点击等操作处理,从而向云平台中的时长调整模块发送该播放时长调整请求。可选地,该播放时长调整信息可以包括但不限于:提高该视频帧的播放时长、缩短该视频帧的播放时长、跳过对视频帧中的预设内容的播放等。
77.在实际应用中,绝大部分手机游戏使用两大引擎(cocos2d引擎和unity3d引擎)开发游戏,两大引擎采用固定的库文件函数计算游戏每帧的播放时长(即更新每帧所需的时间)。例如,cocos2d引擎通过库文件中的gettimeofday函数计算每帧更新,unity3d引擎通过调用库文件中的clock_gettime计算每帧更新。
78.可选地,时长调整模块可以预先对库文件中的时间获取函数进行挂钩处理。该时间获取函数可以包括上述的gettimeofday函数、clock_gettime等。
79.在步骤s13中,根据上述视频帧的初始播放时长和上述播放时长调整信息,得到上述视频帧的目标播放时长。
80.具体地,视频帧的初始播放时长指的是:云平台预先设置的、播放该视频帧所需的预设时间,也可以理解为两个画面切换的预设间隔时间(即更新每个视频帧所需的预设时间)。其中,云游戏视频中一般会包含多个视频帧,每个视频帧的初始播放时长可以相同,也可以不同。
81.由于本公开实施例中预先设置了视频帧的初始播放时间,时长调整模块可以获取预先设置的初始播放时间,并根据视频帧的初始播放时长和上述播放时长调整信息,计算得到该视频帧的目标播放时长。
82.需要说明的是,由于云游戏视频中的每个视频帧的初始播放时长可以相同,也可以不同。在每个视频帧的初始播放时长相同的情况下,时长调整模块计算出的目标播放时长是适应于所有视频帧的。例如,用户当前正在观看的游戏画面为视频帧a,若用户此时触发了播放时长调整请求,则时长调整模块获取视频帧a的初始播放时长(相当于是获取每个视频帧的初始播放时长),并根据视频帧a的初始播放时长和播放时长调整信息,得到上述视频帧a的目标播放时长(相当于是得到每个视频帧的目标播放时长)。
83.在每个视频帧的初始播放时长不同的情况下,时长调整模块计算出的目标播放时长是适应于每个视频帧的。在这种情况下,时长调整模块需要实时获取每一视频帧的初始播放时长,并根据该初始播放时长和播放时长调整信息,计算得到每一视频帧的目标播放时长。例如,用户当前正在观看的游戏画面为视频帧a,若用户此时触发了播放时长调整请求,则时长调整模块首先获取视频帧a的初始播放时长,并根据视频帧a的初始播放时长和播放时长调整信息,得到上述视频帧a的目标播放时长。当游戏画面由视频帧a切换到下一视频帧(比如,视频帧b)时,时长调整模块可以继续获取视频帧b的初始播放时长,并根据视频帧b的初始播放时长和播放时长调整信息,得到上述视频帧b的目标播放时长,以此类推,从而得到每个视频帧的目标播放时长。
84.在步骤s15中,响应于上述云平台中的云游戏模块触发的时间获取请求,将上述目标播放时长返回至上述云游戏模块;上述云游戏模块与上述云游戏相对应。
85.具体地,云游戏模块可以为云平台中的、对云游戏的运行进行控制的云游戏进程。
86.本公开实施例中,云游戏模块可以实时调用库文件中的时间获取函数,并在调用该时间获取函数的时候,触发时间获取请求。由于时长调整模块预先挂钩时间获取函数,在时间获取函数被调用的时候,时长调整模块可以拦截该时长调整模块,从而响应于该时间获取请求,将该目标播放时长返回至该云游戏模块。
87.本公开实施例中的时长调整模块在接收到携带视频帧的播放时长调整信息的播放时长调整请求的时候,可以根据该视频帧的初始播放时长和播放时长调整信息,得到该视频帧的目标播放时长,并在响应于云平台中的云游戏模块触发的时间获取请求时,将目标播放时长返回至云游戏模块,由于返回至云游戏模块的目标播放时长与初始播放时长不同,即改变了视频帧的播放时长(提高播放时长或缩短播放时长),进而可以实现视频帧的加速或减速,提高用户的游戏体验。
88.在一个示例性的实施例中,上述播放时长调整信息表征:将上述视频帧的初始播放时长提高或缩短预设数量倍;上述根据上述视频帧的初始播放时长和上述播放时长调整信息,得到上述视频帧的目标播放时长,可以包括:
89.对上述初始播放时长和上述播放时长调整信息进行乘除运算,得到上述目标播放时长。
90.可选地,在视频帧为云游戏的过场动画、片头动画等的时候,用户存在对该类动画进行加速播放,从而节约时间的需求,此时可以在云游戏视频中展示“倍速播放”按钮。用户在客户端点击该“倍速播放”按钮可以展示速度选择框,用于点击该速度选择框中的倍速,
从而触发将视频帧的初始播放时间缩短预设倍的播放时长调整信息。
91.其中,过场动画指的是游戏里面的一部分,在展示过场动画的时候,玩家一般无法主动控制游戏的进行(或者只有很少的控制权),过场动画经常用来中断当前游戏,用于发展故事情节,展示角色的发展,或者是提供背景信息,环境氛围,对话以及线索。过场动画可以是动画的形式,也可以是实际影片画面。
92.其中,片头动画指的是游在进入游戏之前播放的多个用于推广游戏厂商品牌的动画。
93.图4是根据一示例性实施例示出的一种将视频帧的初始播放时长缩短预设数量倍的示意图。如图4所示了,在视频帧为过场动画的时候,可以展示“倍速播放”按钮,用户在客户端点击该“倍速播放”按钮可以展示速度选择框。假设用户在速度选择框选择“2x”,则表明需要将过场动画的初始播放时长缩短2倍。此时,时长调整模块可以计算过场动画的初始播放时长(假设为5s)与用户所选择的速度倍速的比值,得到该过场动画的目标播放时长为2.5s,从而缩短了过场动画的播放时间,实现了对过场动画的加速,使得用户可以用更少的时间体会游戏的剧情内容,提高用户游戏体验。
94.可选地,当云游戏中的游戏节奏过快的时候,用户可能无法完全领略游戏内容,或者对于难度较高的游戏来说,用户希望让游戏画面减慢,以便轻松通过游戏的关卡。因此,当视频帧为上述游戏画面的时候,可以在云游戏展示“一键减速”按钮。用户在客户端点击该“一键减速”按钮可以展示速度选择框,用于点击该速度选择框中的倍速,从而触发将视频帧的初始播放时间体改预设倍的播放时长调整信息。
95.示例性地,当用户在客户端点击该“倍速播放”按钮的时候,也可以不展示速度选择框,而是默认将游戏动画的初始播放时长缩短预设数量倍。
96.图5是根据一示例性实施例示出的一种将视频帧的初始播放时长提高预设数量倍的示意图。如图5所示,在视频帧为难度较高的游戏画面的时候,可以展示“一键减速”按钮,用户在客户端点击该“一键减速”按钮,可以默认将游戏动画的初始播放时长提高预设数量倍,从而延长了游戏动画的播放时间,实现了对游戏动画的减速,进而让整个游戏的速度变慢,给玩家更多的障碍物反应时间,以便用户得以顺利通过游戏关卡,提高用户游戏体验。
97.示例性地,用户在客户端点击该“一键减速”按钮的时候,还可以展示速度减速选择框,如果用户在速度减速选择框选择“2x”,则表明需要将视频帧的初始播放时长提高提预设数量倍(比如,2倍)。此时,时长调整模块可以计算过场动画的初始播放时长(假设为5s)与播放时长调整信息的乘积,得到该过场动画的目标播放时长为10s。
98.可选地,用户在客户端点击该“一键减速”按钮的时候,还可以展示速度减速选择框,如果用户在速度减速选择框选择“2x”,则表明需要将视频帧的初始播放时长提高2倍。
99.本公开实施例中,在播放时长调整信息表征将上述视频帧的初始播放时长提高或缩短预设数量倍的时候,对上述初始播放时长和上述播放时长调整信息进行乘除运算,得到上述目标播放时长,不仅能够提高目标播放时长计算的精度,还能够根据用户在客户端触发的播放时长调整请求中携带的播放时长调整信息,计算得到目标播放时长,使得目标播放时长的确定能够满足用户的实际需求,以便用户可以用更少的时间体会游戏的剧情内容或者让整个游戏的速度变慢,给用户更多的障碍物反应时间,提高用户游戏体验。
100.在一个示例性的实施例中,上述播放时长调整信息表征:跳过对上述视频帧中的
预设内容的播放;上述根据上述视频帧的初始播放时长和上述播放时长调整信息,得到上述视频帧的目标播放时长,包括:
101.计算上述初始播放时长与上述预设时间的差值,得到上述目标播放时长;上述预设时间为播放上述预设内容所需的时间
102.可选地,在视频帧为云游戏视频中的任一视频帧的情况下,预设内容可以是任一视频中的部分内容或全部内容。此时,可以将初始播放时长以及播放该预设内容所需的预设时间的差值,作为该视频帧的目标播放时间。
103.可选地,在视频帧为云游戏视频中的多个视频帧的情况下,预设内容可以是该多个视频中的部分内容或全部内容。此时,可以将多个视频帧各自对应的初始播放时间的和,与播放该多个视频中的预设内容所需的预设时间的差值,作为该多个视频帧对应的目标播放时间。
104.示例性地,在视频帧为云游戏的过场动画、片头动画、战斗回合画面(战斗回合中存在较长时间的等待,且战斗过程很多都属于全自动战斗,不需要用户操作,此时用户需要观看千篇一律的战斗动画,等战斗结束之后才能领取奖励)等的时候,可以在云游戏展示“一键跳过”按钮,用户在客户端点击该“一键跳过”按钮时,可以触发上述播放时长调整请求,进而跳过对预设内容的播放。
105.图6是根据一示例性实施例示出的一种跳过视频帧中的预设内容的示意图。如图6所示,在视频帧为战斗回合画面的时候,可以展示“一键跳过”按钮,用户在客户端点击该“一键跳过”,按钮可以跳过对该预设内容的播放,从而让战斗过程加速运行,更快领取奖励。此时,时长调整模块可以计算战斗回合画面的初始播放时长(假设为10s)与播放预设内容所需的预设时间(比如,5s)的差值,得到该战斗回合画面的目标播放时长为5s,从而缩短了战斗回合画面的播放时长,实现了对战斗回合画面中的预设内容的跳过,使得用户无需观看千篇一律的战斗动画,从而更快领取奖励,提高用户游戏体验。
106.继续如图4所示,在过场画面中,也可以展示“一键跳过”按钮,用户在客户端点击该“一键跳过”按钮可以跳过对该预设内容的播放,使得用户可以用更少的时间体会游戏的剧情内容。
107.本公开实施例中,在播放时长调整信息表征:跳过对视频帧中的预设内容的播放的时候,可以计算初始播放时长与播放该预设内容所需的预设时间的差值,得到目标播放时长。不仅能够提高目标播放时长计算的精度,还能根据用户在客户端触发的播放时长调整请求中携带的播放时长调整信息,计算得到目标播放时长,使得目标播放时长的确定能够满足用户的实际需求,以使用户可以跳过不感兴趣的内容,从而节约用户时间,提高用户体验。
108.在一个可选的实施例中,在上述接收视频帧的播放时长调整请求之前,上述方法还包括:
109.通过内联钩子的方式对上述时间获取函数进行挂钩处理。
110.本公开实施例中,可以通过内联钩子(inline hook)的方式,挂钩(hook)到库文件中的时间获取函数,该inline hook的方式能够修改时间获取函数中的指令,以改变时间获取函数的返回时间,从而改变视频帧的播放时长,进而可以实现对游戏进行加速或减速。
111.图7是根据一示例性实施例示出的一种响应于上述云平台中的云游戏模块触发的
时间获取请求,将上述目标播放时长返回至上述云游戏模块的流程示意图。如图7所示,在上述步骤s15中,上述响应于上述云平台中的云游戏模块触发的时间获取请求,将上述目标播放时长返回至上述云游戏模块,可以包括:
112.在步骤s1501中,响应于上述云游戏模块调用上述时间获取函数触发的上述时间获取请求,拦截上述时间获取函数。
113.在步骤s1503中,跳转至上述时间获取函数的首地址。
114.在步骤s1505中,基于上述目标播放时长更新上述首地址中的指令,得到更新后的时间获取函数。
115.在步骤s1507中,将上述更新后的时间获取函数返回至上述云游戏模块;上述云游戏模块用于从上述更新后的时间获取函数中获取上述目标播放时长。
116.示例性地,上述更新首地址中的指令,可以为修改首地址中的指令,即使用目标播放时长覆盖首地址中的指令。
117.具体地,云游戏模块可以实时调用库文中的时间获取函数,并触发时间获取请求,库文件可以将该事件获取请求转发至该时长调整模块。由于时长调整模块预先hook该时间获取函数,该时长调整模块可以响应于该时间获取请求,拦截该时间获取函数,跳转到该时间获取函数首地址。时长调整模块使用计算得到的目标播放时长,修改该首地址中的第一条指令,从而得到更新后的时间获取函数。在更新完成之后,时长调整模块将更新后的时间获取函数返回至云游戏模块,云游戏模块可以从该时间获取函数中获取上述目标播放时长。
118.本公开实施例中,通过在时间获取函数插入目标播放时间,以改变时间获取函数的返回时间,从而改变视频帧的播放时长,进而可以实现对游戏进行加速或减速。
119.在一个可行的实施例中,在上述步骤s11中,上述接收云游戏中的视频帧的播放时长调整请求,可以包括:
120.接收客户端发送的上述播放时长调整请求。
121.相应地,上述方法还可以包括:
122.响应于上述时间获取请求,将上述目标播放时长返回至上述云游戏模块;上述云游戏模块用于通过上述目标播放时长对上述视频帧的播放速度进行调整,以及用于将速度调整后的视频帧发送至上述客户端。
123.上述客户端用于对上述速度调整后的视频帧进行播放。
124.具体地,在云游戏模块获取该目标播放时长之后,可以通过该目标播放时长对视频帧的播放速度进行调整,并将速度跳转至后的视频发送至客户端,以使客户端对速度调整后的视频进行播放。例如,目标播放时长为初始播放时长的2倍,则将视频帧的播放速度降低2倍。
125.本公开实施例中,可以根据客户端触发的播放时长调整请求,将速度调整后的视频帧下发至客户端,由客户端进行播放。视频帧的加速或一键跳过,可以加快游戏的进度,降低用户的等待感,提升游戏体验;视频帧的减速,可以减缓游戏进度,降低游戏的挑战难度,让用户不出现“卡关”的情况,顺利通关,便于用户体验更多的游戏内容。
126.以下,以对视频帧进行倍速加速,游戏引擎为unity引擎,时间获取函数为clock_gettime为例,对视频帧的播放时长调整方法进行介绍:
127.图8是根据一示例性实施例示出的另一种视频帧的播放时长调整方法的流程图。如图8所示,包括以下步骤:
128.在步骤s201中,云平台启动时,自动拉起时长调整模块,时长调整模块通过inline hook的方式,预先hook到libc.so中的clock_gettime方法。
129.在步骤s203中,用户在客户端点击启动倍速加速后,触发携带播放时长调整信息的播放时长调整请求(该播放时长调整信息表征将视频帧的播放时长缩短预设数量倍),客户端将该播放时长调整请求传递至时长调整模块,时长调整模块在内部记录该加速倍速,并根据视频帧的初始播放时间和该播放时长调整信息,计算该视频帧的目标播放时长(即更新该视频帧所需的时间)。
130.在步骤s205中,云游戏模块调用libc.so中的clock_gettime,以触发时间获取请求。
131.在步骤s207中,libc.so将该时间获取请求转发至时长调整模块。由于时长调整模块通过inline hook的方式,预先hook到libc.so的clock_gettime方法,时长调整模块拦截该时间获取请求,并通过inline hook的方式,捕获libc.so的clock_gettime方法,跳转到该clock_gettime方法的首地址,将该首地址中的第一条指令修改为目标播放时长。
132.在步骤s209中,时长调整模块将首地址修改后的clock_gettime方法返回至云游戏模块,修改后的clock_gettime方法的首地址中的第一条指令为计算得到的目标播放时长。
133.在步骤s2011中,云游戏模块执行该首地址中的第一条指令,通过该目标播放时长提升视频帧的速度。
134.在步骤s2013中,云游戏模块将速提速后的视频帧压缩传给客户端。
135.图9是根据一示例性实施例示出的一种视频帧的播放时长调整装置框图。参照图9,该装置应用于云平台中的时长调整模块,包括播放时长调整请求接收模块31,目标播放时长确定模块33和时间获取请求响应模块35。
136.播放时长调整请求接收模块31,被配置为执行接收云游戏中的视频帧的播放时长调整请求;上述播放时长调整请求中携带上述视频帧的播放时长调整信息。
137.目标播放时长确定模块33,被配置为执行根据上述视频帧的初始播放时长和上述播放时长调整信息,得到上述视频帧的目标播放时长。
138.时间获取请求响应模块35,被配置为执行响应于上述云平台中的云游戏模块触发的时间获取请求,将上述目标播放时长返回至上述云游戏模块;上述云游戏模块与上述云游戏相对应。
139.在一个实例性的实施例中,上述时长调整模块预先对时间获取函数进行挂钩处理,上述时间获取请求响应模块,包括:
140.拦截单元,被配置为执行响应于上述云游戏模块调用上述时间获取函数触发的上述时间获取请求,拦截上述时间获取函数;
141.跳转单元,被配置为执行跳转至上述时间获取函数的首地址;
142.更新单元,被配置为执行基于上述目标播放时长更新上述首地址中的指令,得到更新后的时间获取函数;
143.返回单元,被配置为执行将上述更新后的时间获取函数返回至上述云游戏模块;
上述云游戏模块用于从上述更新后的时间获取函数中获取上述目标播放时长。
144.在一个实例性的实施例中,上述播放时长调整信息表征:将上述视频帧的初始播放时长提高或缩短预设数量倍;上述目标播放时长确定模块,被配置为执行对上述初始播放时长和上述播放时长调整信息进行乘除运算,得到上述目标播放时长。
145.在一个实例性的实施例中,上述播放时长调整信息表征:跳过对上述视频帧中的预设内容的播放;上述目标播放时长确定模块,被配置为执行计算上述初始播放时长和预设时间的差值,得到上述目标播放时长;上述预设时间为播放上述预设内容所需的时间。
146.在一个实例性的实施例中,上述装置还包括:
147.挂钩模块,被配置为执行通过内联钩子的方式对上述时间获取函数进行挂钩处理。
148.在一个实例性的实施例中,上述播放时长调整请求接收模块,被配置为执行接收客户端发送的上述播放时长调整请求;
149.上述时间获取请求响应模块,被配置为执行响应于上述时间获取请求,将上述目标播放时长返回至上述云游戏模块;上述云游戏模块用于通过上述目标播放时长对上述视频帧的播放速度进行调整,以及用于将速度调整后的视频帧发送至上述客户端;上述客户端用于对上述速度调整后的视频帧进行播放。
150.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明
151.在示例性实施例中,还提供了一种电子设备,包括处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行存储器上所存放的指令时,实现上述实施例中任一视频帧的播放时长调整方法的步骤。
152.该电子设备可以是终端、服务器或者类似的运算装置,以该电子设备是服务器为例,图10是根据一示例性实施例示出的一种用于视频帧的播放时长调整的电子设备的框图,该电子设备40可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)41(中央处理器41可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器43,一个或一个以上存储应用程序423或数据422的存储介质42(例如一个或一个以上海量存储设备)。其中,存储器43和存储介质42可以是短暂存储或持久存储。存储在存储介质42的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器41可以设置为与存储介质42通信,在电子设备40上执行存储介质42中的一系列指令操作。电子设备40还可以包括一个或一个以上电源46,一个或一个以上有线或无线网络接口45,一个或一个以上输入输出接口44,和/或,一个或一个以上操作系统421,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
153.输入输出接口44可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括电子设备40的通信供应商提供的无线网络。在一个实例中,输入输出接口44包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个示例性实施例中,输入输出接口44可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
154.本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子设
备的结构造成限定。例如,电子设备40还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
155.在示例性实施例中,还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例中任一视频帧的播放时长调整方法的步骤。
156.在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一种实施方式中提供的视频帧的播放时长调整方法。
157.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
158.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
159.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1