一种云游戏的视频流优化方法、装置、设备及存储介质与流程

未命名 10-18 阅读:111 评论:0


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.视频流确定模块,用于从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;
49.插帧模块,用于对所述第一视频流片段进行插帧操作,得到第二视频流片段;
50.视频流切换模块,用于在玩家再次闯关且进行到所述关键节点的上一个节点的结束点时,将所述第一视频流片段切换为所述第二视频流片段进行播放。
51.第三方面,本发明实施例提供了一种云游戏的视频流优化设备,包括:处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面中任意一项所述的云游戏的视频流优化方法。
52.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一方面中任意一项所述的云游戏的视频流优化方法。
53.相对于现有技术,本发明实施例的有益效果在于:通过对在玩家闯关失败的关键节点对应的第一视频流片段进行插帧操作,得到第二视频流片段;从而在玩家再次闯关且达到所述关键节点时,切换到所述第二视频流片段进行播放,并在播放完所述第二视频流片段后,在对玩家闯关失败的关键节点对应的第一视频流片段进行插帧操作后,可以在玩家下一次闯关时无感知地增加相应关卡节点的游戏操作时间,进行降低游戏难度,使得游戏难度与用户能力相匹配,提升游戏关卡的通关概率,提升用户的游戏体验。
附图说明
54.为了更清楚地说明本发明的技术方案,下面将对实施方式中所占据要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1是本发明实施例提供的一种云游戏的视频流优化方法的流程图;
56.图2是本发明实施例提供的一种云游戏的视频流优化装置的示意图;
57.图3是本发明实施例提供的一种云游戏的视频流优化设备的示意图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.实施例一
60.请参见图1,其是本发明实施例提供的一种云游戏的视频流优化方法的流程图。所述云游戏的视频流优化方法,具体包括:
61.s1:监听云游戏运行过程中视频流;
62.假设某云游戏有多个关卡,每个关卡具有若干个节点,当玩家进行某一关卡闯关时,需要完成该关卡中各个节点对应的任务。例如某关卡设有4个boss,每一个boss对应一个节点,玩家闯关成功则需要在设定时间内击败4个boss。在云游戏开启时,会触发视频流监听服务开启,用于实时监听玩家在各个关卡进行闯关时的视频流。
63.s2:从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;
64.当监听到玩家在某一关卡闯关失败时,会分析玩家闯关失败的关键节点,例如,玩家在该关卡的某一个节点任务失败,游戏进度会暂停在任务失败时对应的游戏画面,并弹出闯关失败窗口,此时,可以获取当前暂停的游戏画面所在的节点作为关键节点。
65.或者在该关卡的某一个节点任务失败时,获取游戏闯关记录中的关卡完成度,根据关卡完成度和该关卡的节点数量,确定关键节点;例如:假设整个闯关流程成功时的完成度为100,成功闯过的关卡的节点数量为n,根据关卡的节点数量计算各节点的理论完成度,具体计算公式为:其中,f(x)表示第x个节点的理论完成度。然后将游戏闯关记录中的关卡完成度和计算得到的各个节点的节点的理论完成度进行匹配,并将与游戏闯关记录中的关卡完成度一致的理论完成度对应的节点作为关键节点。
66.又或者监听到玩家在某一关卡闯关失败时,根据游戏闯关记录中相应关卡中各个节点的总实际消耗时长和各个节点的总理论消耗时长,确定作为关键节点。
67.之后提取该关键节点与其上一个节点之间的视频流片段,作为待插帧的第一视频流片段。
68.s3:对所述第一视频流片段进行插帧操作,得到第二视频流片段;
69.需要说明的是,在本发明实施例中对视频流插帧的方式不做具体限定,例如可以采用最近邻插值算法、双线性插值算法、双三次插值算法、基于光流法进行插帧等。
70.s4:在玩家再次闯关且达到所述关键节点的上一个节点的结束点时,将所述第一视频流片段切换为所述第二视频流片段进行播放。
71.在完成插帧操作后,玩家再次进行相应关卡的闯关时,在达到所述关键节点前,即完成所述关键节点的上一个节点的任务后,将原有的第一视频流片段隐藏播放,并播放插帧后的到的第二视频流片段,其中,隐藏的第一视频流片段的播放速度小于所述第二视频流片段的播放速度。例如:
72.使得隐藏的第一视频流片段的首帧和末帧的时间点分别与所述第二视频流片段的首帧和末帧的时间点对齐,然后在所述第二视频流片段播放结束后,恢复到云游戏本身的视频流,即将所述关键节点与其上一个节点之间的第一视频流片段隐藏播放,并插入播放插帧后得到的第二视频流片段,使得玩家继续进行所述关键节点的闯关,避免由于闯关失败导致游戏画面出现卡顿问题,从而使得游戏过程中游戏画面更加流畅;同时在对玩家闯关失败的关键节点对应的第一视频流片段进行插帧操作后,可以在玩家下一次闯关时无感知地增加相应关卡节点的游戏操作时间,进行降低游戏难度,提升游戏关卡的通关概率,提升用户的游戏体验。
73.在一种可选的实施例中,所述从监听到的视频流中确定闯关失败的关键节点及其对应的第一视频流片段,包括:
74.当监听到玩家闯关失败时,根据相应关卡的游戏闯关记录,确定玩家闯关失败的关键节点;
75.将所述关键节点与其上一个节点之间的视频流片段,作为第一视频流片段。
76.在一种可选的实施例中,所述游戏闯关记录包括相应关卡中各个节点的总实际消耗时长,所述根据相应关卡的游戏闯关记录,确定玩家闯关失败的关键节点,包括:
77.根据相应关卡的当前节点的总实际消耗时长和上一个节点的总实际消耗时长,计算完成当前节点的实际耗时;
78.示例性,可计算当前节点的总实际消耗时长与上一个节点的总实际消耗时长的差值,得到完成当前节点的实际耗时。
79.根据完成当前节点的实际耗时,计算第一评估值;
80.根据当前节点的总实际消耗时长,计算第二评估值;
81.根据所述第一评估值和所述第二评估值,判断是否满足预设的评估条件;其中,所述评估条件包括:所述第一评估值大于第一设定阈值,且所述第二评估值大于第二设定阈值;
82.需要说明的是,在本发明实施例中对所述第一设定阈值、第二设定阈值不做具体限定,用户可根据实际需要设定。
83.当满足所述评估条件时,确定当前节点为关键节点。
84.进一步,所述根据完成当前节点的实际耗时,计算第一评估值,包括:
85.获取相应关卡的闯关配置信息;其中,所述闯关配置信息包括相应关卡中各个节点的总理论消耗时长;
86.根据相应关卡的当前节点的总理论消耗时长和上一个节点的总理论消耗时长,计算完成当前节点的理论耗时;
87.示例性,可计算当前节点的总理论消耗时长与上一个节点的总理论消耗时长的差值,得到完成当前节点的理论耗时。
88.根据完成当前节点的实际耗时和理论耗时,计算第一评估值;
89.示例性,可结合节点的理论完成度、完成当前节点的实际耗时和理论消耗通过特定公式计算当前节点x的第一评估值r(x),例如:
[0090][0091]
其中,t(x)表示达到当前节点的总实际消耗时长,t(x-1)表示达到当前节点的前一个节点的总实际消耗时长,t(x)-t(x-1)表示完成当前节点的实际耗时,g(x)表示完成当前节点的理论耗时,可通过计算达到当前节点的总理论消耗时长与达到上一个节点的总理论消耗时长的差值得到,n表示关卡的节点数量。
[0092]
通过公式简化,可以通过计算完成当前节点的实际耗时与其理论消耗的商,得到当前节点x的第一评估值r(x)。
[0093]
所述根据当前节点的总实际消耗时长,计算第二评估值,包括:
[0094]
根据当前节点的总实际消耗时长和其总理论消耗时长,计算第二评估值。
[0095]
同理,可结合节点的理论完成度、当前节点的总实际消耗时长和总理论消耗时长,计算当前节点x的第二评估值,例如:
[0096][0097]
其中,t(x)表示达到当前节点的总实际消耗时长,p(x)表示到达当前节点的总理论消耗时长。
[0098]
通过公式简化,可以通过计算当前节点的总实际消耗时长与其总理论消耗时长的商,得到当前节点x的第二评估值s(x)。
[0099]
示例性,当玩家达到关卡的每个节点时,会记录此时关卡的完成度和达到当前节点的总实际消耗时长。设定第一设定阈值取值为1。
[0100]
当玩家闯关失败时,通过上述公式(1)可以计算出节点x的第一评估值r(x),通过公式(2)计算出节点x的第一评估值s(x),当r(x)》1且s(x)》1,则代表玩家在此环节需要帮助,那该节点x与前一个节点x-1之间的视频流即为需要进行插帧的视频流片段,即所述第二视频流片段,节点x为关键节点。
[0101]
例如,假设玩家在进行某云游戏的一项闯关任务,该任务要求玩家在200s(秒)内击败4boss,此时4boss为4个节点,每个boss对应的完成度应为100/4=25,对应的消耗时长为200s/4=50s,则按照顺序对应的消耗时长集合应为{50s,100s,150s,200s}。玩家最终挑战失败时,数据库记录的当前任务完成度为95%,总实际消耗时长集合为{55s,99s,168s,200s(未完成)}。
[0102]
此时,在节点1的总理论消耗时长为50,玩家达到节点1的总实际消耗时长为55,节点1的第一评估值r(1)、s(1)为1.1,即r(1)》1且s(1)》1,玩家可能需要帮助;
[0103]
在节点2理论消时为50,达到节点2的总理论消耗时长为100,玩家在节点2的实际耗时=99-55=44,达到节点2的总实际消耗时长为99,节点2的第一评估值r(2)、s(1)为0.88,即r(1)《1,玩家该节点2中不需要帮助。再计算出到达该节点2的第二评估值s(2)值为0.99,即s(1)《1此时玩家在规定时长范围内完成了节点1和节点2,则节点1中玩家需要帮助的可能性排除;
[0104]
可以理解,在关键节点的判定过程中,除了通过节点的第一评估值和第二评估值判断相应节点是否为需要帮助的关键节点外,还需要结合下一个节点的判断结果来联合判
定,即所述评估条件包括:当前节点的第一评估值大于第一设定阈值,且第二评估值大于第二设定阈值;同时下一个节点的第二评估值大于第二设定阈值。
[0105]
例如当初步判断当前节点可能需要帮助,若下一个节点的的第一评估值小于第一设定阈值,且第二评估值小于第二设定阈值,说明玩家可以完成下一个节点的任务,此时,当前节点任务也可以完成,即判断当前节点不需要帮助,不将当前节点设为关键节点。
[0106]
到达节点3理论耗时为50,总理论消耗时长为150,玩家该节点3实际耗时为69,达到节点3的总实际消耗时长为168,该节点3计算出的r(3)值为1.38,r(3)》1,玩家可能需要帮助。再计算出到达该节点3的s(3)值为1.12,s(3)》1,玩家可能需要帮助;
[0107]
玩家最终未到达节点4,节点4理论耗时为50,达到节点4的总理论消耗时长200,玩家在该节点4实际耗时为32,到达节点4的总实际消耗时长为200,此时总时长200消耗完毕,任务总进度95,该节点实际完成进度为95-25
×
3=20,以此计算该节点4计算出的r(4)值为0.8,玩家该节点中不需要帮助。
[0108]
由以上步骤可以清晰得出玩家在到达节点3的过程中需要帮助,节点3为关键节点,那么节点2与节点3之间的视频流即为需要插帧视频流片段。通过上述关键节点识别过程,可以准确定位出云游戏中原视频流可能会出现卡顿的节点。
[0109]
在一种可选的实施例中,所述对所述第一视频流片段进行插帧操作,得到第二视频流片段,包括:
[0110]
对于所述第一视频流片段中的各帧图像,判断当前帧图像的下一帧图像是否为关键帧图像;
[0111]
若是,在当前帧图像和其下一帧图像之间插入过渡帧图像;
[0112]
若否,以下一帧图像作为当前帧图像继续判断其下一帧图像是否为关键帧图像,直至遍历所述第一视频流片段中的所有图像,得到第二视频流片段。
[0113]
在一种可选的实施例中,所述对于所述第一视频流片段中的各帧图像,判断当前帧图像的下一帧图像是否为关键帧图像,包括:
[0114]
对所述第一视频流片段中的各帧图像进行图像块分割;
[0115]
以首帧图像作为参考帧图像,对下一帧图像进行图像块的运动估计,得到下一帧图像中每个图像块的运动矢量;
[0116]
根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像。
[0117]
具体地,对所述第一视频流片段进行插帧操作流程如下:
[0118]
对所述第一视频流片段中的各帧图像进行图像块分割;
[0119]
以首帧图像作为参考帧图像,对下一帧图像进行图像块的运动估计,得到下一帧图像中每个图像块的运动矢量;
[0120]
根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像;
[0121]
若是,在所述参考帧图像和下一帧图像之间插入过渡帧图像;
[0122]
若否,将下一帧图像作为参考帧图像,并对当前所述参考帧图像的下一帧图像进行运动估计和关键帧判断,直至遍历所述第一视频流片段中的所有图像,得到第二视频流片段。
[0123]
视频中的每一张图像称为一帧。每一秒的视频是由多张静态的图像组合而来的,静态的图像快速播放就变成视频。视频关键帧,指角色或者物体运动或变化中的关键动作
所处的那一帧,只有关键帧才能作为运动补间动画和形状补间动画的起始点和结束点。基于上述原理,本发明实施例通过对需要插帧的第二视频流片段的各帧图像进行图像块分割和图像块的运动估计,从而识别出第二视频流片段中的关键帧图像,并在关键帧图像与其上一帧图像之间插入过渡帧图像,实现第二视频流片段的插帧操作。其中,过渡帧图像的画面生成可以通过各种插值算法进行帧间插值得到,本发明实施例对此不做详细赘述。基于图像的运动估计识别出第二视频流片段的关键帧图像并进行插帧,使得插帧后的第二视频流片段的整体流畅度显著提升,游戏画面更加流畅。
[0124]
在一种可选的实施例中,所述根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像,包括:
[0125]
从下一帧图像中每个图像块的运动矢量中选取最大运动矢量;
[0126]
判断所述最大运动矢量是否满足预设的运动矢量条件;其中,所述运动矢量条件包括所述最大运动矢量与第一设定运动矢量的商大于等于设定的数值阈值,或所述最大运动矢量大于等于设定的运动矢量临界值;
[0127]
当满足所述运动矢量条件时,确定下一帧图像为关键帧图像;
[0128]
当不满足所述运动矢量条件时,确定下一帧图像为非关键帧图像。
[0129]
在一种可选的实施例中,所述在当前帧图像和下一帧图像之间插入过渡帧图像,包括:
[0130]
根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量;
[0131]
采用插值算法在当前帧图像和下一帧图像之间生成相应帧数量的过渡帧。
[0132]
示例性,将第二视频流片段的每一帧图像分割成互不重叠的图像块,假设在图像序列中t时刻对应于第k帧图像,t-δt时刻对应于第k-1帧图像。
[0133]
以首帧图像为参考帧图像,在下一帧图像做基于块的运动矢量估计;其中,运动矢量v是通过对两帧图像间图像块的匹配来进行运动估值得到。
[0134]
对于第k帧图像中的一个图像块,在第k-1帧图像中寻找与其最相似的图像块,并认为该匹配图像块在第k-1帧图像所处的位置就是第k帧图像中相应图像块位移前的位置。其中,图像块的匹配可以通过各种匹配算法实现,例如基于灰度的平均绝对差算法、绝对误差和算法、误差平均和算法、平均误差平方和方法等,本发明实施例对此不做详细赘述。
[0135]
然后根据公式b
t
(z)=b
t-δt
(z-v)可以得到该图像块的运动矢量v,其中,b表示像素(亮度,彩色)值,z=(x,y)
t
为位移矢量,t代表矢量的转置,v为在时间间隔δt内物体运动的位移矢量。
[0136]
取所有运动矢量中的最大值,与各阈值比较,以确定下一帧图像是否为关键帧图像。
[0137]
如果不满足所述运动矢量条件,表示该帧图像为普通帧需要保留;若果满足所述运动矢量条件,则表示该帧图像为关键帧图像,且可在参考帧图像与关键帧图像之间插中间过渡帧图像。示例性,所述数值阈值为2,所述运动矢量临界值可根据人眼的视觉特性选定,在这里不做具体限定。
[0138]
在一种可选的实施例中,所述根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量,包括:
[0139]
计算所述最大运动矢量与设定的第一运动矢量阈值的商,并对计算得到的商进行
向下取整,得到当前帧图像和下一帧图像之间需要插入的帧数量。
[0140]
在本发明实施例中,设定第一运动矢量阈值为v
t
,可已通过公式计算出所需插入的帧数量,其中,floor()表示向下取整函数。同时可以将计算得到的帧数量flag,储存在标记flag表中,作为判断关键帧图像的参数;
[0141]
如果flag=0,表示该帧图像为普通帧需要保留;如果flag=m,m》1,则表示该帧图像为关键帧图像,且可在当前帧与关键帧之间插入m-1帧中间过渡帧图像。
[0142]
当m不为1时取前一帧图像为当前帧,重复前面的步骤,直至整个第二视频流片段。
[0143]
在本发明实施例中,经过图像的运动估计判断进行插帧操作,并把运动矢量量化为插帧数量,可以准确计算出两帧图像之间所需插入的中间过渡帧图像的数量,进一步提升插帧后画面的流畅度。
[0144]
在另一种可选的实施例中,所述根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量,包括:
[0145]
判断所述最大运动矢量所属的运动矢量区间;其中,每一个运动矢量区间对应不同的整数值;
[0146]
将所述最大运动矢量所属的运动矢量区间对应的整数值,作为当前帧图像和下一帧图像之间需要插入的帧数量。
[0147]
在本发明实施例中,还可以根据人眼的视觉特性选定多个运动矢量区间,例如[v
t0
,v
t1
),[v
t1
,v
t2
),[v
t2
,v
t3
),...等,帧数量的取值如下:当|v|《v
t0
,则取flag=0;当|v|∈[v
t0
,v
t1
),则取flag=1;当|v|∈[v
t1
,v
t2
),则取flag=2;当|v|∈[v
t2
,v
t3
),则取flag=3;以此类推。同样可以将上述得到的帧数量flag,储存在标记flag表中,作为判断关键帧图像的参数;
[0148]
如果flag=0,表示该帧图像为普通帧需要保留;如果flag=m,m》1,则表示该帧图像为关键帧图像,且可在当前帧与关键帧之间插入m-1帧中间过渡帧图像。
[0149]
当m不为1时取下一帧图像为当前帧,重复前面的步骤,直至整个第二视频流片段。
[0150]
在本发明实施例中,经过图像的运动估计判断进行插帧操作,并把运动矢量量化为插帧数量,可以准确计算出两帧图像之间所需插入的中间过渡帧图像的数量,进一步提升插帧后画面的流畅度。
[0151]
假设玩家在关卡的第三个节点需要帮助,相应第一视频流片段的时长为50秒,以每秒视频由24帧静态图像组成为例,可以得知,所述第一视频流片段一共拥有50
×
24=1200帧静态图像,再依据上述提供的处理方案,计算出需要插入的过渡帧的帧数量为456帧,那么经过插帧处理后的第二视频流片段的总帧数达到流1656帧,此时重建的序列长度大于原序列长度。
[0152]
计算出1656帧静态图像播完所需要的时长为69秒。当玩家再次尝试游戏挑战而进行第三个节点时,云游戏将自己本身的第一视频流片段进行50/69倍速播放并将其画面隐藏,为玩家播放重新生成的插帧后第二视频流片段。当第二视频流片段播放结束后,再恢复游戏本身的视频流播放。
[0153]
在播放新生成的第二视频流片段时,持续采集玩家的操作行为指令,如果玩家的操作行为指令在第二视频流片段中的原始帧图像(即非过渡帧图像)中进行,则正常将操作
行为指令反馈至云游戏。若玩家的操作行为指令在新生成的过渡帧图像中进行,则将操作行为指令归集到第二视频流片段中距离该过渡帧图像最近的关键帧图像中反馈至云游戏。
[0154]
通过对闯关失败的关键节点对应的视频流进行插帧,可以使得玩家再次闯关时不知不觉的多出了一部分思考和操作的时间,从而提升关卡完成的概率,从而提升了游戏的体验感。
[0155]
相对于现有技术,本发明实施例的有益效果在于:
[0156]
(1)通过对闯关失败的关键节点对应的视频流进行插帧,使得插帧后的第二视频流片段的整体流畅度显著提升,从而使得游戏过程中游戏画面更加流畅;
[0157]
(2)通过对闯关失败的关键节点对应的视频流进行插帧,使得玩家再次进行所述关键节点的闯关时,无感知地增加相应关卡节点的游戏操作时间,进行降低游戏难度,使得游戏难度与用户能力相匹配,从而提升游戏关卡的通关概率,减少玩家反复挑战某一关卡失败的可能,提升玩家的游戏信心,提升用户的游戏体验;同时避免由于闯关失败导致游戏画面出现卡顿问题,进一步提升使得游戏过程中游戏画面的流畅度。
[0158]
实例二
[0159]
请参见图2,本发明实施例提供了一种云游戏的视频流优化装置,包括:
[0160]
视频流监听模块1,用于监听云游戏运行过程中视频流;
[0161]
视频流确定模块2,用于从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;
[0162]
插帧模块3,用于对所述第一视频流片段进行插帧操作,得到第二视频流片段;
[0163]
视频流切换模块4,用于在玩家再次闯关且进行到所述关键节点的上一个节点的结束点时,将所述第一视频流片段切换为所述第二视频流片段进行播放。
[0164]
在一种可选的实施例中,所述视频流确定模块,包括:
[0165]
关键节点确定单元,用于当监听到玩家闯关失败时,根据相应关卡的游戏闯关记录,确定玩家闯关失败的关键节点;
[0166]
第一视频流片段确定单元,将所述关键节点与其上一个节点之间的视频流片段,作为第一视频流片段。
[0167]
在一种可选的实施例中,所述游戏闯关记录包括相应关卡中各个节点的总实际消耗时长,则所述关键节点确定单元,包括:
[0168]
实际耗时计算子单元,用于根据相应关卡的当前节点的总实际消耗时长和上一个节点的总实际消耗时长,计算完成当前节点的实际耗时;
[0169]
第一评估值计算子单元,用于根据完成当前节点的实际耗时,计算第一评估值;
[0170]
第二评估值计算子单元,用于根据当前节点的总实际消耗时长,计算第二评估值;
[0171]
判断子单元,用于根据所述第一评估值和所述第二评估值,判断是否满足预设的评估条件;其中,所述评估条件包括:所述第一评估值大于第一设定阈值,且所述第二评估值大于第二设定阈值;
[0172]
关键节点确定子单元,用于当满足所述评估条件时,确定当前节点为关键节点。
[0173]
在一种可选的实施例中,所述第一评估值计算子单元,具体用于:
[0174]
获取相应关卡的闯关配置信息;其中,所述闯关配置信息包括相应关卡中各个节点的总理论消耗时长;
[0175]
根据相应关卡的当前节点的总理论消耗时长和上一个节点的总理论消耗时长,计算完成当前节点的理论耗时;
[0176]
根据完成当前节点的实际耗时和理论耗时,计算第一评估值;
[0177]
所述第二评估值计算子单元,具体用于:
[0178]
根据当前节点的总实际消耗时长和总理论消耗时长,计算第二评估值。
[0179]
在一种可选的实施例中,所述插帧模块包括:
[0180]
关键帧判断单元,用于对于所述第一视频流片段中的各帧图像,判断当前帧图像的下一帧图像是否为关键帧图像;
[0181]
过渡帧插入单元,用于若是,在当前帧图像和其下一帧图像之间插入过渡帧图像;
[0182]
所述关键帧判断单元,还用于若否,以下一帧图像作为当前帧图像继续判断其下一帧图像是否为关键帧图像,直至遍历所述第一视频流片段中的所有图像,得到第二视频流片段。
[0183]
在一种可选的实施例中,所述关键帧判断单元包括:
[0184]
图像分割子单元,用于对所述第一视频流片段中的各帧图像进行图像块分割;
[0185]
运动估计子单元,用于以首帧图像作为参考帧图像,对下一帧图像进行图像块的运动估计,得到下一帧图像中每个图像块的运动矢量;
[0186]
关键帧图像判断子单元,用于根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像。
[0187]
在一种可选的实施例中,所述关键帧图像判断子单元,包括:
[0188]
最大运动矢量选取子单元,用于从下一帧图像中每个图像块的运动矢量中选取最大运动矢量;
[0189]
运动矢量条件判断子单元,用于判断所述最大运动矢量是否满足预设的运动矢量条件;其中,所述运动矢量条件包括所述最大运动矢量与第一设定运动矢量的商大于等于设定的数值阈值,或所述最大运动矢量大于等于设定的运动矢量临界值;当满足所述运动矢量条件时,确定下一帧图像为关键帧图像;当不满足所述运动矢量条件时,确定下一帧图像为非关键帧图像。
[0190]
在一种可选的实施例中,所述过渡帧插入单元,包括:
[0191]
帧数量计算子单元,用于根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量;
[0192]
过渡帧生成子单元,用于采用插值算法在当前帧图像和下一帧图像之间生成相应帧数量的过渡帧。
[0193]
在一种可选的实施例中,帧数量计算子单元,具体用于:
[0194]
计算所述最大运动矢量与设定的第一运动矢量阈值的商,并对计算得到的商进行向下取整,得到当前帧图像和下一帧图像之间需要插入的帧数量。
[0195]
在一种可选的实施例中,帧数量计算子单元,具体还用于:
[0196]
判断所述最大运动矢量所属的运动矢量区间;其中,每一个运动矢量区间对应不同的整数值;
[0197]
将所述最大运动矢量所属的运动矢量区间对应的整数值,作为当前帧图像和下一帧图像之间需要插入的帧数量。
[0198]
需要说明的是,本发明实施例的技术原理和所能达到的技术效果与实施例一相同,在这里不再重复赘述。
[0199]
实施例三
[0200]
参见图3,是本发明实施例提供的云游戏的视频流优化设备的示意图。该实施例的云游戏的视频流优化设备包括:处理器100、存储器200以及存储在所述存储器200中并可在所述处理器100上运行的计算机程序,例如云游戏的视频流优化程序。所述处理器100执行所述计算机程序时实现上述各个云游戏的视频流优化方法实施例中的步骤,例如图1所示的步骤s1-s4。
[0201]
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述云游戏的视频流优化设备中的执行过程。
[0202]
所述云游戏的视频流优化设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是云游戏的视频流优化设备的示例,并不构成对云游戏的视频流优化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述云游戏的视频流优化设备还可以包括输入输出设备、网络接入设备、总线等。
[0203]
所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述云游戏的视频流优化设备的控制中心,利用各种接口和线路连接整个云游戏的视频流优化设备的各个部分。
[0204]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述云游戏的视频流优化设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0205]
其中,所述云游戏的视频流优化设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些
中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。
[0206]
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0207]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出多台改进和润饰,这些改进和润饰也视为本发明的保护范围。

技术特征:
1.一种云游戏的视频流优化方法,其特征在于,包括:监听云游戏运行过程中视频流;从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;对所述第一视频流片段进行插帧操作,得到第二视频流片段;在玩家再次闯关且进行到所述关键节点的上一个节点的结束点时,将所述第一视频流片段切换为所述第二视频流片段进行播放。2.如权利要求1所述的云游戏的视频流优化方法,其特征在于,所述从监听到的视频流中确定闯关失败的关键节点及其对应的第一视频流片段,包括:当监听到玩家闯关失败时,根据相应关卡的游戏闯关记录,确定玩家闯关失败的关键节点;将所述关键节点与其上一个节点之间的视频流片段,作为第一视频流片段。3.如权利要求2所述的云游戏的视频流优化方法,其特征在于,所述游戏闯关记录包括相应关卡中各个节点的总实际消耗时长,所述根据相应关卡的游戏闯关记录,确定玩家闯关失败的关键节点,包括:根据相应关卡的当前节点的总实际消耗时长和上一个节点的总实际消耗时长,计算完成当前节点的实际耗时;根据完成当前节点的实际耗时,计算第一评估值;根据当前节点的总实际消耗时长,计算第二评估值;根据所述第一评估值和所述第二评估值,判断是否满足预设的评估条件;其中,所述评估条件包括:所述第一评估值大于第一设定阈值,且所述第二评估值大于第二设定阈值;当满足所述评估条件时,确定当前节点为关键节点。4.如权利要求3所述的云游戏的视频流优化方法,其特征在于,所述根据完成当前节点的实际耗时,计算第一评估值,包括:获取相应关卡的闯关配置信息;其中,所述闯关配置信息包括相应关卡中各个节点的总理论消耗时长;根据相应关卡的当前节点的总理论消耗时长和上一个节点的总理论消耗时长,计算完成当前节点的理论耗时;根据完成当前节点的实际耗时和理论耗时,计算第一评估值;所述根据当前节点的总实际消耗时长,计算第二评估值,包括:根据当前节点的总实际消耗时长和总理论消耗时长,计算第二评估值。5.如权利要求1所述的云游戏的视频流优化方法,其特征在于,所述对所述第一视频流片段进行插帧操作,得到第二视频流片段,包括:对于所述第一视频流片段中的各帧图像,判断当前帧图像的下一帧图像是否为关键帧图像;若是,在当前帧图像和其下一帧图像之间插入过渡帧图像;若否,以下一帧图像作为当前帧图像继续判断其下一帧图像是否为关键帧图像,直至遍历所述第一视频流片段中的所有图像,得到第二视频流片段。6.如权利要求1所述的云游戏的视频流优化方法,其特征在于,所述对于所述第一视频流片段中的各帧图像,判断当前帧图像的下一帧图像是否为关键帧图像,包括:
对所述第一视频流片段中的各帧图像进行图像块分割;以首帧图像作为参考帧图像,对下一帧图像进行图像块的运动估计,得到下一帧图像中每个图像块的运动矢量;根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像。7.如权利要求6所述的云游戏的视频流优化方法,其特征在于,所述根据下一帧图像中每个图像块的运动矢量,判断下一帧图像是否为关键帧图像,包括:从下一帧图像中每个图像块的运动矢量中选取最大运动矢量;判断所述最大运动矢量是否满足预设的运动矢量条件;其中,所述运动矢量条件包括所述最大运动矢量与第一设定运动矢量的商大于等于设定的数值阈值,或所述最大运动矢量大于等于设定的运动矢量临界值;当满足所述运动矢量条件时,确定下一帧图像为关键帧图像;当不满足所述运动矢量条件时,确定下一帧图像为非关键帧图像。8.如权利要求6所述的云游戏的视频流优化方法,其特征在于,所述在当前帧图像和下一帧图像之间插入过渡帧图像,包括:根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量;采用插值算法在当前帧图像和下一帧图像之间生成相应帧数量的过渡帧。9.如权利要求8所述的云游戏的视频流优化方法,其特征在于,所述根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量,包括:计算所述最大运动矢量与设定的第一运动矢量阈值的商,并对计算得到的商进行向下取整,得到当前帧图像和下一帧图像之间需要插入的帧数量。10.如权利要求8所述的云游戏的视频流优化方法,其特征在于,所述根据所述最大运动矢量,计算当前帧图像和下一帧图像之间需要插入的帧数量,包括:判断所述最大运动矢量所属的运动矢量区间;其中,每一个运动矢量区间对应不同的整数值;将所述最大运动矢量所属的运动矢量区间对应的整数值,作为当前帧图像和下一帧图像之间需要插入的帧数量。11.一种云游戏的视频流优化装置,其特征在于,包括:视频流监听模块,用于监听云游戏运行过程中视频流;视频流确定模块,用于从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;插帧模块,用于对所述第一视频流片段进行插帧操作,得到第二视频流片段;视频流切换模块,用于在玩家再次闯关且进行到所述关键节点的上一个节点的结束点时,将所述第一视频流片段切换为所述第二视频流片段进行播放。12.一种云游戏的视频流优化设备,其特征在于,包括:处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至10中任意一项所述的云游戏的视频流优化方法。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至10中任意一项所述的云游戏的视频流优化方法。

技术总结
本发明公开了一种云游戏的视频流优化方法、装置、设备及存储介质,所述方法包括:监听云游戏运行过程中视频流;从监听到的视频流中确定玩家闯关失败的关键节点及其对应的第一视频流片段;对所述第一视频流片段进行插帧操作,得到第二视频流片段;在玩家再次闯关且进行到所述关键节点的上一个节点的结束点时,将所第一视频流片段切换为所述第二视频流片段进行播放。本发明通过对玩家闯关失败的关键节点对应的视频流进行插帧,可以有效提高云游戏过程中的游戏操作时间,进行降低游戏难度,使得游戏难度与用户能力相匹配,提升游戏关卡的通关概率,提升用户的游戏体验。提升用户的游戏体验。提升用户的游戏体验。


技术研发人员:赵辉
受保护的技术使用者:咪咕文化科技有限公司 中国移动通信集团有限公司
技术研发日:2023.07.10
技术公布日:2023/10/15
版权声明

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

飞行汽车 https://www.autovtol.com/

分享:

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

相关推荐