一种视频帧内存优化方法及系统与流程
- 国知局
- 2024-08-02 14:58:42
本发明涉及云游戏,尤其涉及一种视频帧内存优化方法及系统。
背景技术:
1、在云游戏的很多场景之中,需要对视频流的数据做二次处理以满足客户多样化的需求,比较典型的场景有ar视频的二次处理、直播视频流的多路视频合成等。在这些场景之下在低端机型之上基本必然会出现由于java堆内存不足而引起的应用崩溃,而在一些高端机型之上也很容易出现因为内存管理耗时的问题而导致的应用性能降低,这会给用户带来很差的体验。
2、另外,由于音视频处理的复杂性,在进行二次处理时引入的时间消耗,会增大每一帧的渲染延迟,并且这种延迟是累计的,这会导致随着时间的推移用户看到的画面和当前真实画面的延迟越来越大,并且不能及时处理的视频帧也会继续占用内存空间,增加内存管理的复杂性以及oom(out of memory,内存溢出)的概率。
3、目前主要解决方案有如下两种:
4、1、通过编译参数来配置更大的堆内存来解决内存不足的问题,同时减少内存垃圾的回收频率。但这很容易带来另一个负面影响,在一些物理内存本身不是很大的设备上,为了满足虚拟堆内存的要求,可能需要频繁的进行物理内存与磁盘存储空间的页交换(页交换指把物理内存中的数据存储到磁盘或者加载磁盘中的数据到物理内存)。频繁的页交换会消耗巨大的io资源。
5、2、通过设置大小固定的对象缓存池来尽量避免对象的频繁分配,该方案在一定程度可以减少由于内存管理机制导致的系统资源的消耗,但是无法根据实际情况来最优的使用内存,可能会导致常驻内存升高或者在一些中低端机型由于设置的对象缓存大小不合理而依旧会产生内存溢出导致的应用崩溃。
技术实现思路
1、本发明的目的在于提供基于网页的视频帧内存优化方法及系统,以解决上述技术问题。本发明提供的诸多技术方案中的优选技术方案所能产生的诸多技术效果详见下文阐述。
2、为实现上述目的,本发明提供了以下技术方案:
3、本发明提供的一种视频帧内存优化方法,包括如下步骤:
4、为关键对象分配内存块作为所述关键对象的复用管理的对象池,对所述关键对象的数量、所述对象池的最大缓存量进行初始化,所述关键对象为解码后的视频帧对象;
5、生产并交付供消费者消费的所述关键对象,将生成的所述关键对象填充至所述对象池;
6、所述对象池的填充数量达到最大缓存量后,每次生成新关键对象前,判断所述对象池中是否有可供所述新关键对象复用的对象;如有,则所述新关键对象复用可供复用对象的缓存;否则,对所述对象池中的关键对象进行动态丢帧或为所述新关键对象分配临时对象;
7、根据应用的实际耗时计算关键对象生产速率和关键对象消费速率,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量。
8、进一步地,对所述对象池中的关键对象进行动态丢帧,包括如下步骤:
9、根据允许的最大延迟和消费一帧所述关键对象平均耗时计算基准丢帧阈值;其中,所述基准丢帧阈值等于允许的最大延迟除以消费一帧所述关键对象平均耗时;若所述对象池中未消费完成的所述关键对象的数量大于所述基准丢帧阈值时,进一步判断当前消费耗时阶段最早开始消费的所述关键对象的耗时是否小于平均消费耗时与设定比例的乘积;若小于,则保留当前消费耗时阶段最早开始消费的所述关键对象;否则,丢弃当前消费耗时阶段最早开始消费的所述关键对象;丢弃当前消费耗时阶段最早开始消费的所述关键对象后,将生成的所述新关键对象填充至所述对象池。
10、进一步地,每个所述关键对象都对应有引用计数,当引用计数为0的所述关键对象为可供复用的对象。
11、进一步地,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量,包括如下步骤:
12、若设备的常驻内存在连续多个单位时间内发生垃圾回收,则采用平缓的方式降低所述对象池的数量;其中,所述设备关键性能指标包括所述设备的常驻内存在连续多个单位时间内发生垃圾回收。
13、进一步地,采用所述平缓的方式得到所述对象池的数量为所述对象池的基准数量减1。
14、进一步地,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量,还包括如下步骤:
15、若单个所述关键对象的大小与一固定数值的乘积大于设备的可用内存大小,则采用快速收敛方式降低所述对象池的数量;其中,所述设备关键性能指标包括所述设备的可用内存大小。
16、进一步地,采用所述快速收敛方式得到所述对象池的数量为所述对象池的基准数量除以2。
17、进一步地,所述对象池的基准数量通过如下步骤获得:
18、根据所述允许的最大延迟除以所述速率差得到第一基准数量;
19、所述第一基准数量与一常数的和乘以单个所述关键对象的大小得到的积是否大于设备的可用内存大小;如大于,则根据所述可用内存大小和单个所述关键对象的大小计算所述对象池的基准数量;否则,所述第一基准数量即为所述对象池的基准数量。
20、进一步地,根据所述可用内存大小和单个所述关键对象的大小计算所述对象池的基准数量count,通过如下公式获得:
21、count=(可用内存大小/单个关键对象的大小)/2。
22、根据本发明的另一方面,基于上文所述的一种视频帧内存优化方法,还提供了一种视频帧内存优化系统,包括:
23、设备性能采集模块,用于采集调节所述对象池的大小的设备关键性能指标;
24、对象复用管理模块,用于对所述关键对象的数量、所述对象池的最大缓存量进行初始化,以及所述对象池的填充数量达到最大缓存量后,每次生成新关键对象前,判断所述对象池中是否有可供所述新关键对象复用的对象,如有,则所述新关键对象复用可供复用对象的缓存;否则,或为所述新关键对象分配临时对象;
25、动态丢帧管理模块,用于在所述对象复用管理模块判断所述对象池中没有可供所述新关键对象复用的对象时,对所述对象池中的关键对象进行动态丢帧;
26、对象池缓存动态调节模块,用于根据应用的实际耗时计算关键对象生产速率和关键对象消费速率,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量。
27、实施本发明上述技术方案中的一个技术方案,具有如下优点或有益效果:
28、本发明通过对应用中关键对象进行合理的复用管理可以达到在不配置编译参数来强行扩大堆内存的情况下,也能够在中低端机型正常的运行云游戏;同时不会引发频繁的内存垃圾回收或页交换的情况,在常驻内存最低的情况下满足用户的需求,也会保证不会因为内存不足而产生应用崩溃。本发明还通过合适的主动丢帧策略,来达到避免累计延迟的同时尽可能少的丢帧,以达到用户看到的画面是低延迟并且流畅的。
技术特征:1.一种视频帧内存优化方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种视频帧内存优化方法,其特征在于,对所述对象池中的关键对象进行动态丢帧,包括如下步骤:
3.根据权利要求1所述的一种视频帧内存优化方法,其特征在于,每个所述关键对象都对应有引用计数,当引用计数为0的所述关键对象为可供复用的对象。
4.根据权利要求2所述的一种视频帧内存优化方法,其特征在于,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量,包括如下步骤:
5.根据权利要求4所述的一种视频帧内存优化方法,其特征在于,采用所述平缓的方式得到所述对象池的数量为所述对象池的基准数量减1。
6.根据权利要求2所述的一种视频帧内存优化方法,其特征在于,根据两者的速率差和获取的设备关键性能指标更新所述对象池的最大缓存量,还包括如下步骤:
7.根据权利要求6所述的一种视频帧内存优化方法,其特征在于,采用所述快速收敛方式得到所述对象池的数量为所述对象池的基准数量除以2。
8.根据权利要求5或7所述的一种视频帧内存优化方法,其特征在于,所述对象池的基准数量通过如下步骤获得:
9.根据权利要求8所述的一种视频帧内存优化方法,其特征在于,根据所述可用内存大小和单个所述关键对象的大小计算所述对象池的基准数量count,通过如下公式获得:
10.一种视频帧内存优化系统,其特征在于,基于权利要求1-9任一项所述的一种视频帧内存优化方法,包括:
技术总结本发明公开了一种视频帧内存优化方法及系统,涉及云游戏技术领域。其步骤包括:为关键对象分配内存块作为关键对象的复用管理的对象池;生产并交付供消费者消费的关键对象,将生成的关键对象填充至对象池;对象池的填充数量达到最大缓存量后,每次生成新关键对象前,判断对象池中是否有可供新关键对象复用的对象;如有,则新关键对象复用可供复用的对象;否则,对对象池中的关键对象进行动态丢帧或为新关键对象分配临时对象;根据应用的实际耗时计算关键对象生产速率和关键对象消费速率,根据两者的速率差和获取的设备关键性能指标更新对象池的最大缓存量。本发明不会引发频繁的内存垃圾回收或页交换的情况,提升了用户游戏体验。技术研发人员:靳超群,刘宇峰受保护的技术使用者:深圳云天畅想信息科技有限公司技术研发日:技术公布日:2024/7/29本文地址:https://www.jishuxx.com/zhuanli/20240801/244532.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。