searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于帧生成时间针云游戏长短帧卡顿的解决办法

2024-10-31 09:28:47
8
0

随着云计算潮流的推动,云游戏作为一种新型的游戏互动方式正在快速的推进和普及。云游戏作为新兴技术力量,将游戏渲染从玩家设备转移至集中服务器,革新游戏体验。但是云游戏在体验上仍和本地游戏环境有差距,流畅度的差异是其中较为明显的问题。

在传统的本地游戏环境中,影响流畅度体验的因素有游戏的帧率(cpu、显卡等部件决定),显示器刷新率等因素,显示器从显卡的帧缓存区中读取显卡渲染好的画面数据并显示出来。当显卡渲染帧率和显示器刷新率不匹配时,显示器可能会同时读取到上一帧的上半部分和下一帧的下半部分,会造成画面撕裂。而云游戏的流程会更为复杂一些,服务端显卡输出完画面后会输出给虚拟显示器,云游戏串流软件在这过程中采集画面,由于画面采集不是读取显存中帧缓存区,因此当采集的频率和显卡帧率不对应时,出现的不是画面撕裂,而是长短帧问题。长短帧问题即若采集频率大于显卡输出帧率时,采集软件会按照固定频率采集(60FPS即为每秒采集60次),因此会出现不同的画面帧被采集了不同次数,可能有些画面帧采集了一次,有些画面帧采集了两次或更多,会造成一些帧显示时间过长,一些帧显示时间过短,这会造成画面的不连续感,而产生卡顿,在采集频率低于显卡输出帧率时,则会导致有一些帧的漏采,在连续运动的画面中也会造成卡顿感。

而目前主流的云游戏方案大多是采用固定帧率采集,例如30FPS、60FPS,采用固定帧率的原因是因为在客户端解码后也是固定的30FPS和60FPS,这能和客户端的显示器刷新率相匹配减少画面撕裂的产生,然而固定的采集帧率遇上不匹配的显卡输出帧率,长短帧导致的卡顿感也自然无法避免。这是云游戏采集阶段出现的长短帧卡顿问题。

当然除了固定帧率采集之外,还可以使用动态帧率采集来解决采集阶段的长短帧卡顿问题,但是动态帧率采集会造成客户端解码后帧率与显示器不匹配造成画面撕裂,同时由于网络波动,帧数据经过网络传输后到达时间有差异,原本正确的帧时间间隔受到变化,每帧显示时间也受到影响也同样会在客户端渲染阶段造成一定程度的长短帧卡顿问题 

这就是云游戏流畅度始终和本地游戏有差距的其中一个原因。

综上所述,目前云游戏在流畅度上主要有以下问题

1)传统云游戏的固定帧率采集虽然能减少客户端画面撕裂问题,但是会在采集阶段引入长短帧的卡顿问题。

2)传统云游戏的动态帧率采集会造成客户端帧率与显示器不匹配,同时因为网络波动而在客户端渲染阶段造成帧时间间隔变化而产生的长短帧卡顿问题。

本文所提出的基于帧生成时间针云游戏长短帧卡顿的解决办法核心思维是在云游戏算力端采用动态帧率采集以避免采集阶段出现的长短帧卡顿问题,并在算力端渲染每一帧画面时,都记录这一帧的帧生成时间,客户端解码渲染时,再根据每一帧的原始帧生成时间,设置时间间隔依次渲染。同时客户端开启自适应同步,让显示器自动适配客户端输出的动态帧率解决画面撕裂问题。最终能够实现的效果就是,动态采集解决采集阶段的长短帧卡顿问题,同时客户端展示每一帧的时间间隔(也是每一帧的显示时长)和算力端渲染出来的帧时间间隔是相同的。因此能够保证视频不会因为网络传输导致帧时间间隔变化而导致的长短帧卡顿问题。

具体流程如下

1)云游戏算力端采用动态帧率采集策略,根据算力端显卡渲染的每一帧来进行采集,并在采集时根据渲染时间间隔记录帧生成时间。

2)云游戏算力端的画面帧数据和其对应的帧生成时间通过网络分包发送给客户端,客户端将每一帧的完整数据加入到解码缓冲队列,同时将每一帧对应的帧生成时间也加入到帧生成时间缓冲队列。

3)通过多重缓冲队列和双解码器稳定解码时长,可以保证串流视频画面的解码时长基本固定,所有解码时长差异可以忽略不计,因此在解码之前调整解码时长间隔即可,在解码是设置双解码器队列,依次从帧数据缓冲队列中取出每一帧的数据按照帧生成时间间隔交叉输入各两条解码器队列,两个解码器生成的帧画面输出给显存中的画面缓存,结合显示器的自适应同步技术,依次输出,这样即可保证云游戏每一帧画面在客户端输出时保证和云端相同的帧生成时间,避免帧生成时间变化产生的长短帧卡顿问题。

 

0条评论
0 / 1000
l****n
12文章数
0粉丝数
l****n
12 文章 | 0 粉丝
原创

基于帧生成时间针云游戏长短帧卡顿的解决办法

2024-10-31 09:28:47
8
0

随着云计算潮流的推动,云游戏作为一种新型的游戏互动方式正在快速的推进和普及。云游戏作为新兴技术力量,将游戏渲染从玩家设备转移至集中服务器,革新游戏体验。但是云游戏在体验上仍和本地游戏环境有差距,流畅度的差异是其中较为明显的问题。

在传统的本地游戏环境中,影响流畅度体验的因素有游戏的帧率(cpu、显卡等部件决定),显示器刷新率等因素,显示器从显卡的帧缓存区中读取显卡渲染好的画面数据并显示出来。当显卡渲染帧率和显示器刷新率不匹配时,显示器可能会同时读取到上一帧的上半部分和下一帧的下半部分,会造成画面撕裂。而云游戏的流程会更为复杂一些,服务端显卡输出完画面后会输出给虚拟显示器,云游戏串流软件在这过程中采集画面,由于画面采集不是读取显存中帧缓存区,因此当采集的频率和显卡帧率不对应时,出现的不是画面撕裂,而是长短帧问题。长短帧问题即若采集频率大于显卡输出帧率时,采集软件会按照固定频率采集(60FPS即为每秒采集60次),因此会出现不同的画面帧被采集了不同次数,可能有些画面帧采集了一次,有些画面帧采集了两次或更多,会造成一些帧显示时间过长,一些帧显示时间过短,这会造成画面的不连续感,而产生卡顿,在采集频率低于显卡输出帧率时,则会导致有一些帧的漏采,在连续运动的画面中也会造成卡顿感。

而目前主流的云游戏方案大多是采用固定帧率采集,例如30FPS、60FPS,采用固定帧率的原因是因为在客户端解码后也是固定的30FPS和60FPS,这能和客户端的显示器刷新率相匹配减少画面撕裂的产生,然而固定的采集帧率遇上不匹配的显卡输出帧率,长短帧导致的卡顿感也自然无法避免。这是云游戏采集阶段出现的长短帧卡顿问题。

当然除了固定帧率采集之外,还可以使用动态帧率采集来解决采集阶段的长短帧卡顿问题,但是动态帧率采集会造成客户端解码后帧率与显示器不匹配造成画面撕裂,同时由于网络波动,帧数据经过网络传输后到达时间有差异,原本正确的帧时间间隔受到变化,每帧显示时间也受到影响也同样会在客户端渲染阶段造成一定程度的长短帧卡顿问题 

这就是云游戏流畅度始终和本地游戏有差距的其中一个原因。

综上所述,目前云游戏在流畅度上主要有以下问题

1)传统云游戏的固定帧率采集虽然能减少客户端画面撕裂问题,但是会在采集阶段引入长短帧的卡顿问题。

2)传统云游戏的动态帧率采集会造成客户端帧率与显示器不匹配,同时因为网络波动而在客户端渲染阶段造成帧时间间隔变化而产生的长短帧卡顿问题。

本文所提出的基于帧生成时间针云游戏长短帧卡顿的解决办法核心思维是在云游戏算力端采用动态帧率采集以避免采集阶段出现的长短帧卡顿问题,并在算力端渲染每一帧画面时,都记录这一帧的帧生成时间,客户端解码渲染时,再根据每一帧的原始帧生成时间,设置时间间隔依次渲染。同时客户端开启自适应同步,让显示器自动适配客户端输出的动态帧率解决画面撕裂问题。最终能够实现的效果就是,动态采集解决采集阶段的长短帧卡顿问题,同时客户端展示每一帧的时间间隔(也是每一帧的显示时长)和算力端渲染出来的帧时间间隔是相同的。因此能够保证视频不会因为网络传输导致帧时间间隔变化而导致的长短帧卡顿问题。

具体流程如下

1)云游戏算力端采用动态帧率采集策略,根据算力端显卡渲染的每一帧来进行采集,并在采集时根据渲染时间间隔记录帧生成时间。

2)云游戏算力端的画面帧数据和其对应的帧生成时间通过网络分包发送给客户端,客户端将每一帧的完整数据加入到解码缓冲队列,同时将每一帧对应的帧生成时间也加入到帧生成时间缓冲队列。

3)通过多重缓冲队列和双解码器稳定解码时长,可以保证串流视频画面的解码时长基本固定,所有解码时长差异可以忽略不计,因此在解码之前调整解码时长间隔即可,在解码是设置双解码器队列,依次从帧数据缓冲队列中取出每一帧的数据按照帧生成时间间隔交叉输入各两条解码器队列,两个解码器生成的帧画面输出给显存中的画面缓存,结合显示器的自适应同步技术,依次输出,这样即可保证云游戏每一帧画面在客户端输出时保证和云端相同的帧生成时间,避免帧生成时间变化产生的长短帧卡顿问题。

 

文章来自个人专栏
云游戏
12 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0