一种基于负载动态自适应的视频解码优化方法技术

技术编号:38336830 阅读:16 留言:0更新日期:2023-08-02 09:17
本发明专利技术公开了一种基于负载动态自适应的视频解码优化方法,采用构造的CPU/GPU利用率测试程序控制CPU/GPU利用率的上升过程,在不同CPU/GPU利用率下获取每帧数据的解码时间,建立解码时间、当前最大解码时间与CPU/GPU占用率之间的映射关系,再在视频实际播放过程中,根据CPU/GPU的实时占用率及当前视频帧的类型确定具体的解码方式,实现了根据系统负载动态调整视频帧的解码过程,有效解决了系统高负载情况下视频播放流畅性的问题,提升了用户体验。体验。

【技术实现步骤摘要】
一种基于负载动态自适应的视频解码优化方法


[0001]本专利技术属于计算机应用开发
,具体涉及一种基于负载动态自适应的视频解码优化方法。

技术介绍

[0002]根据人的眼睛对图像延迟反应的速度,一般采用帧速率为30FPS到60FPS之间的速度播放视频,30FPS是保持图像能够比较流畅显示的基本条件,一般情况下当播放速度低于25FPS时就会感到视频播放出现了闪烁或卡顿的情况,对于高清视频则采用不超过60FPS的速度播放。
[0003]视频播放软件播放一帧数据所需要的处理时间主要包括数据的读取时间、解码时间和上屏显示时间,其中,读取时间可以忽略不计,解码时间占比最高对视频播放速度的影响也最大。假设以25FPS的播放速度为例,考虑视频帧为匀速播放,那么每帧数据的处理时间不超过40ms,也就是说每帧数据的解码时间不能超过40ms。然而,如果此时GPU或CPU的利用率非常高,再或者GPU或CPU本身的处理能力较弱,那么就很可能导致每帧数据的实际解码时间超过40ms,从而导致视频播放的流畅性下降的问题。
[0004]综上所述,现有的视频播放过程中,由于GPU或CPU的性能波动对视频数据解码速度的影响可能会导致视频播放过程中出现流畅性下降甚至掉帧的问题。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于负载动态自适应的视频解码优化方法,实现了系统负载变化情况下视频帧的动态自适应解码。
[0006]本专利技术提供的一种基于负载动态自适应的视频解码优化方法,包括以下步骤:步骤1、执行占用率测试程序按照设定的步长使CPU或GPU的占用率增长到100%,在不同占用率下记录不同类型的每帧数据的解码时间,得到各类帧的解码时间及最小占用率与当前最大解码时间之间的映射关系,其中,当前最大解码时间为根据帧速率计算的每帧数据的播放时间,各类帧的最小占用率为其解码时间大于当前最大解码时间时CPU或GPU的占用率;步骤2、当视频播放软件启动视频播放时,根据待播放视频的帧速率计算得到当前最大解码时间,并在映射关系中查找对应的各类帧的最小占用率;将解码偏移时间设置为0,该解码偏移时间为当前时刻之前所有解码过程累计超过当前最大解码时间的值;并将预解码队列设置为空,该预解码队列用于保存需提前解码的I帧数据;步骤3、当待播放视频进行解码播放时,获取当前占用率,若当前视频帧为I帧则执行步骤4,若当前视频帧为P帧或B帧则执行步骤5;步骤4、若当前占用率大于I帧的最小占用率且当前视频帧存在于预解码队列中,则等待当前视频帧解码完毕后将其从预解码队列中删除,返回解码结果,执行步骤9;若不存在则以当前占用率在映射关系中对应的I帧的解码时间作实际解码时间,执行标准解码
操作完成当前视频帧的解码,再采用解码偏移时间和实际解码时间之和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9;若当前占用率不大于I帧的最小占用率,则执行标准解码操作,返回解码结果,执行步骤9;步骤5、若当前占用率大于P帧或B帧的最小占用率,则执行步骤6;否则,执行标准解码操作,返回解码结果,执行步骤9;步骤6、以当前占用率在映射关系中对应的P帧或B帧的解码时间为实际解码时间,将当前视频帧的所有残差块的大小求和得到残差块大小,将残差块大小与当前视频帧大小的比值作为残差比;若实际解码时间与解码偏移时间之和不小于当前最大解码时间则执行步骤7,否则执行步骤8;步骤7、以残差比与实际解码时间的乘积为残差解码时间,若残差解码时间与解码偏移时间的和不大于当前最大解码时间,则将解码偏移时间设置为0,执行标准解码操作,返回解码结果,执行步骤9;否则执行步骤8;步骤8、若残差比小于阈值,则跳过当前视频帧的解码操作,返回其前一帧的解码结果,并以解码偏移时间与残差解码时间的差值更新解码偏移时间,再将当前视频帧之后的第一个I帧读入预解码队列中,并对该I帧执行解码操作,返回解码结果,执行步骤9;若残差比不小于阈值,则执行标准解码操作,以解码偏移时间与实际解码时间的和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9;步骤9、完成解码结果的播放,若待播放视频未播放完毕,则读取下一个视频帧并执行步骤3;否则结束本流程。
[0007]进一步地,所述步骤1中当为CPU时所述映射关系的建立方式为:步骤11.1、令占用率测试程序的迭代次数N为1,占用率步长为a%,将操作系统CPU逻辑核的个数记为M;步骤11.2、结束操作系统中除启动所必须的程序及占用率测试程序之外的所有程序,使CPU占用率接近为0%;步骤11.3、采用操作系统的任务管理接口创建测试任务,将测试任务的CPU配额设置为N*a%;步骤11.4、创建M个进程,将这些进程加入测试任务中;每个进程均执行令CPU性能满负荷的常规算法,直至测试任务占满其CPU配额;步骤11.5、针对不同分辨率、不同编码格式及不同帧速率的组合构建一组测试视频,逐个播放测试视频,分别计算每个测试视频中I帧、P帧及B帧的解码时间;以每帧数据的播放时间与时隙值的差为CPU当前最大解码时间,该时隙值为经验值,分别记录I帧、P帧及B帧的解码时间大于CPU当前最大解码时间时对应的占用率,记为I帧最小CPU占用率、P帧最小CPU占用率及B帧最小CPU占用率,建立I帧、P帧及B帧各自的解码时间、当前最大解码时间及CPU占用率之间的映射关系;步骤11.6、若N*a%小于100%则令N自加1执行步骤11.2,否则结束CPU的占用率测试程序。
[0008]进一步地,所述步骤11.4中所述常规算法包括计算π、程序编译及压缩解压缩。
[0009]进一步地,所述步骤11.5中所述时隙值为2ms。
[0010]进一步地,所述步骤1中当为GPU时所述映射关系的建立方式为:步骤12.1、令占用率测试程序的迭代次数N为1,占用率步长为a%;步骤12.2、采用逐级逼近的像素填充率测试方法,使GPU的占用率达到N*a%;步骤12.3、针对不同分辨率、不同编码格式及不同帧速率的组合构建一组测试视频,逐个播放测试视频,分别计算每个测试视频中I帧、P帧及B帧的解码时间;以每帧数据的播放时间作为GPU当前最大解码时间,分别记录I帧、P帧及B帧的解码时间大于GPU当前最大解码时间时对应的GPU占用率,记为I帧最小GPU占用率、P帧最小GPU占用率及B帧最小GPU占用率,建立I帧、P帧及B帧各自的解码时间、当前最大解码时间及GPU占用率之间的映射关系;步骤12.4、若N*a%小于100%则令N自加1执行步骤12.2,否则结束GPU的占用率测试程序。
[0011]进一步地,所述步骤12.2采用绘制若干三角形并向三角形中填充纹理,逐渐增加三角形的数量以使GPU占用率达到N*a%的方式。
[0012]进一步地,所述a%为2%。
[0013]有益效果
[0014]本专利技术采用构造的CPU/GPU利用率测试程序控制CPU/GPU利用率的上升过程,在不同CPU/GPU利用率下获取每帧数据的解码时间,建立解码时间、当前最大解码时间与CPU/GPU占用率之间的映射关系本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于负载动态自适应的视频解码优化方法,其特征在于,包括以下步骤:步骤1、执行占用率测试程序按照设定的步长使CPU或GPU的占用率增长到100%,在不同占用率下记录不同类型的每帧数据的解码时间,得到各类帧的解码时间及最小占用率与当前最大解码时间之间的映射关系,其中,当前最大解码时间为根据帧速率计算的每帧数据的播放时间,各类帧的最小占用率为其解码时间大于当前最大解码时间时CPU或GPU的占用率;步骤2、当视频播放软件启动视频播放时,根据待播放视频的帧速率计算得到当前最大解码时间,并在映射关系中查找对应的各类帧的最小占用率;将解码偏移时间设置为0,该解码偏移时间为当前时刻之前所有解码过程累计超过当前最大解码时间的值;并将预解码队列设置为空,该预解码队列用于保存需提前解码的I帧数据;步骤3、当待播放视频进行解码播放时,获取当前占用率,若当前视频帧为I帧则执行步骤4,若当前视频帧为P帧或B帧则执行步骤5;步骤4、若当前占用率大于I帧的最小占用率且当前视频帧存在于预解码队列中,则等待当前视频帧解码完毕后将其从预解码队列中删除,返回解码结果,执行步骤9;若不存在则以当前占用率在映射关系中对应的I帧的解码时间作实际解码时间,执行标准解码操作完成当前视频帧的解码,再采用解码偏移时间和实际解码时间之和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9;若当前占用率不大于I帧的最小占用率,则执行标准解码操作,返回解码结果,执行步骤9;步骤5、若当前占用率大于P帧或B帧的最小占用率,则执行步骤6;否则,执行标准解码操作,返回解码结果,执行步骤9;步骤6、以当前占用率在映射关系中对应的P帧或B帧的解码时间为实际解码时间,将当前视频帧的所有残差块的大小求和得到残差块大小,将残差块大小与当前视频帧大小的比值作为残差比;若实际解码时间与解码偏移时间之和不小于当前最大解码时间则执行步骤7,否则执行步骤8;步骤7、以残差比与实际解码时间的乘积为残差解码时间,若残差解码时间与解码偏移时间的和不大于当前最大解码时间,则将解码偏移时间设置为0,执行标准解码操作,返回解码结果,执行步骤9;否则执行步骤8;步骤8、若残差比小于阈值,则跳过当前视频帧的解码操作,返回其前一帧的解码结果,并以解码偏移时间与残差解码时间的差值更新解码偏移时间,再将当前视频帧之后的第一个I帧读入预解码队列中,并对该I帧执行解码操作,返回解码结果,执行步骤9;若残差比不小于阈值,则执行标准解码操作,以解码偏移时间与实际解码时间的和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9;步骤9、完成解码结果的播放,若待播放视频未播放完毕,则读取下一个视频帧并执行步骤3;否则结束本流程。2.根据权利要求1所...

【专利技术属性】
技术研发人员:温研赵旺林
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1