CN116506618A - 一种基于负载动态自适应的视频解码优化方法 - Google Patents
一种基于负载动态自适应的视频解码优化方法 Download PDFInfo
- Publication number
- CN116506618A CN116506618A CN202310756646.1A CN202310756646A CN116506618A CN 116506618 A CN116506618 A CN 116506618A CN 202310756646 A CN202310756646 A CN 202310756646A CN 116506618 A CN116506618 A CN 116506618A
- Authority
- CN
- China
- Prior art keywords
- decoding
- frame
- time
- occupancy rate
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000005457 optimization Methods 0.000 title claims abstract description 14
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 238000012360 testing method Methods 0.000 claims description 36
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims description 11
- 238000010998 test method Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 230000006837 decompression Effects 0.000 claims description 4
- 230000000750 progressive effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000000630 rising effect Effects 0.000 abstract description 3
- 208000033962 Fontaine progeroid syndrome Diseases 0.000 description 9
- 101710089428 Farnesyl pyrophosphate synthase erg20 Proteins 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 101710151842 Farnesyl pyrophosphate synthase 2 Proteins 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/127—Prioritisation of hardware or computational resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/4424—Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于负载动态自适应的视频解码优化方法,采用构造的CPU/GPU利用率测试程序控制CPU/GPU利用率的上升过程,在不同CPU/GPU利用率下获取每帧数据的解码时间,建立解码时间、当前最大解码时间与CPU/GPU占用率之间的映射关系,再在视频实际播放过程中,根据CPU/GPU的实时占用率及当前视频帧的类型确定具体的解码方式,实现了根据系统负载动态调整视频帧的解码过程,有效解决了系统高负载情况下视频播放流畅性的问题,提升了用户体验。
Description
技术领域
本发明属于计算机应用开发技术领域,具体涉及一种基于负载动态自适应的视频解码优化方法。
背景技术
根据人的眼睛对图像延迟反应的速度,一般采用帧速率为30FPS到60FPS之间的速度播放视频,30FPS是保持图像能够比较流畅显示的基本条件,一般情况下当播放速度低于25FPS时就会感到视频播放出现了闪烁或卡顿的情况,对于高清视频则采用不超过60FPS的速度播放。
视频播放软件播放一帧数据所需要的处理时间主要包括数据的读取时间、解码时间和上屏显示时间,其中,读取时间可以忽略不计,解码时间占比最高对视频播放速度的影响也最大。假设以25FPS的播放速度为例,考虑视频帧为匀速播放,那么每帧数据的处理时间不超过40ms,也就是说每帧数据的解码时间不能超过40ms。然而,如果此时GPU或CPU的利用率非常高,再或者GPU或CPU本身的处理能力较弱,那么就很可能导致每帧数据的实际解码时间超过40ms,从而导致视频播放的流畅性下降的问题。
综上所述,现有的视频播放过程中,由于GPU或CPU的性能波动对视频数据解码速度的影响可能会导致视频播放过程中出现流畅性下降甚至掉帧的问题。
发明内容
有鉴于此,本发明提供了一种基于负载动态自适应的视频解码优化方法,实现了系统负载变化情况下视频帧的动态自适应解码。
本发明提供的一种基于负载动态自适应的视频解码优化方法,包括以下步骤:
步骤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;否则结束本流程。
进一步地,所述步骤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的占用率测试程序。
进一步地,所述步骤11.4中所述常规算法包括计算π、程序编译及压缩解压缩。
进一步地,所述步骤11.5中所述时隙值为2ms。
进一步地,所述步骤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的占用率测试程序。
进一步地,所述步骤12.2采用绘制若干三角形并向三角形中填充纹理,逐渐增加三角形的数量以使GPU占用率达到N*a%的方式。
进一步地,所述a%为2%。
有益效果
本发明采用构造的CPU/GPU利用率测试程序控制CPU/GPU利用率的上升过程,在不同CPU/GPU利用率下获取每帧数据的解码时间,建立解码时间、当前最大解码时间与CPU/GPU占用率之间的映射关系,再在视频实际播放过程中,根据CPU/GPU的实时占用率及当前视频帧的类型确定具体的解码方式,实现了根据系统负载动态调整视频帧的解码过程,有效解决了系统高负载情况下视频播放流畅性的问题,提升了用户体验。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供了一种基于负载动态自适应的视频解码优化方法,其核心思想是:采用构造的CPU/GPU利用率测试程序控制CPU/GPU利用率的上升过程,在不同CPU/GPU利用率下获取每帧数据的解码时间,建立解码时间、当前最大解码时间及最小占用率之间的映射关系;在视频实际播放过程中,根据CPU/GPU的实时占用率及当前视频帧的类型确定具体的解码方式。
本发明提供的一种基于负载动态自适应的视频解码优化方法,具体包括以下步骤:
步骤1、根据操作系统解码所采用的处理器选用CPU或GPU的占用率测试程序,执行占用率测试程序按照设定的步长使CPU或GPU的占用率从0%逐步增长到100%,并在不同的占用率下计算每帧数据的解码时间,得到各类帧的平均解码时间及最小占用率与当前最大解码时间之间的映射关系。
其中,CPU的占用率测试程序,包括以下步骤:
步骤1-1.1、令占用率测试程序的迭代次数N为1,占用率步长为a%,将操作系统CPU逻辑核的个数记为M。
步骤1-1.2、结束操作系统中除启动所必须的程序及占用率测试程序之外的所有程序,使CPU占用率接近为0%。
步骤1-1.3、采用操作系统的任务管理接口,如Linux的cgroup接口,创建测试任务,将测试任务的CPU配额设置为N*a%。
步骤1-1.4、创建M个进程,将这些进程加入到测试任务中;每个进程执行一种令CPU性能满负荷的常规算法,直至测试任务占满了其对应的CPU配额。
其中,常规算法包括计算π、程序编译及压缩解压缩等。
步骤1-1.5、针对不同分辨率、不同编码格式及不同帧速率的组合构建一组测试视频,逐个播放测试视频,分别计算每个测试视频中I帧、P帧及B帧的平均解码时间;以每帧数据的播放时间减去时隙值的结果作为CPU当前最大解码时间,该时隙值为经验值其取值与CPU处理性能相关,例如时隙值为2ms,分别记录I帧、P帧及B帧的平均解码时间大于CPU当前最大解码时间时对应的占用率,记为I帧最小CPU占用率、P帧最小CPU占用率及B帧最小CPU占用率,建立I帧、P帧及B帧各自的解码时间、当前最大解码时间及CPU占用率之间的映射关系。
步骤1-1.6、若N*a%小于100%则令N自加1执行步骤1-1.2,否则结束CPU的占用率测试程序。
GPU的占用率测试程序,包括以下步骤:
步骤1-2.1、令占用率测试程序的迭代次数N为1,占用率步长为a%。
步骤1-2.2、采用逐级逼近的像素填充率测试方法,使GPU的占用率达到N*a%。
其中,逐级逼近的像素填充率测试方法为专利号为ZL202310430747.X的发明专利公开的测试方法。此外,还可采用绘制若干三角形,并不断向三角形中填充纹理,通过逐渐增加三角形的数量以使GPU占用率达到N*a%的方式。
步骤1-2.3、针对不同分辨率、不同编码格式及不同帧速率的组合构建一组测试视频,逐个播放测试视频,分别计算每个测试视频中I帧、P帧及B帧的平均解码时间;以每帧数据的播放时间作为GPU当前最大解码时间,分别记录I帧、P帧及B帧的平均解码时间大于GPU当前最大解码时间时对应的GPU占用率,记为I帧最小GPU占用率、P帧最小GPU占用率及B帧最小GPU占用率,建立I帧、P帧及B帧各自的解码时间、当前最大解码时间及GPU占用率之间的映射关系。
步骤1-2.4、若N*a%小于100%则令N自加1执行步骤1-2.2,否则结束GPU的占用率测试程序。
步骤2、当视频播放软件启动视频播放时,获取待播放视频的分辨率、编码格式和帧速率,根据帧速率计算得到CPU或GPU当前最大解码时间;根据待播放视频的分辨率、编码格式、帧速率及CPU或GPU当前最大解码时间在映射关系中查找对应的I帧最小CPU或GPU占用率、P帧最小CPU或GPU占用率及B帧最小CPU或GPU占用率;将解码偏移时间设置为0,该解码偏移时间为当前时刻之前所有解码过程累计超过CPU或GPU当前最大解码时间的值;并将预解码队列设置为空,该预解码队列用于保存需提前解码的I帧数据。
步骤3、当待播放视频进行解码播放时,获取当前CPU或GPU占用率,若当前视频帧为I帧则执行步骤4,若当前视频帧为P帧或B帧则执行步骤5。
步骤4、若当前CPU或GPU占用率大于I帧最小CPU或GPU占用率,则判断当前视频帧是否存在于预解码队列中,若存在则等待当前视频帧解码完毕后将其从预解码队列中删除,返回解码结果,执行步骤9;若不存在则获取当前CPU或GPU占用率在映射关系中对应的I帧的解码时间作为实际解码时间,执行标准解码操作完成当前视频帧的解码,再采用解码偏移时间和实际解码时间之和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9;
若当前CPU或GPU占用率不大于I帧最小CPU或GPU占用率,则执行标准解码操作,返回解码结果,执行步骤9。
步骤5、若当前CPU或GPU占用率大于P帧或B帧最小CPU或GPU占用率,则执行步骤6;否则,执行标准解码操作,返回解码结果,执行步骤9。
步骤6、获取当前CPU或GPU占用率在映射关系中对应的P帧或B帧的解码时间作为实际解码时间;并将当前视频帧的所有残差块的大小求和得到残差块大小,将残差块大小与当前视频帧大小的比值作为残差比;若实际解码时间与解码偏移时间之和不小于当前最大解码时间则执行步骤7,否则执行步骤8。
步骤7、将残差比与实际解码时间的乘积作为残差解码时间,若残差解码时间与解码偏移时间的和不大于当前最大解码时间,则将解码偏移时间设置为0,执行标准解码操作,返回解码结果,执行步骤9;否则执行步骤8。
步骤8、若残差比小于阈值,则跳过当前视频帧的解码操作,返回其前一帧的解码结果,并以解码偏移时间与残差解码时间的差值更新解码偏移时间,再将当待播放视频中当前视频帧之后的第一个I帧读入预解码队列中,并对该I帧执行解码操作,返回解码结果,执行步骤9;若残差比不小于阈值,则执行标准解码操作,以解码偏移时间与实际解码时间的和与当前最大解码时间的差值更新解码偏移时间,返回解码结果,执行步骤9。
步骤9、完成解码结果的播放,若待播放视频未播放完毕,则读取下一个视频帧并执行步骤3;否则结束本流程。
实施例
本实施例中采用本发明提供的一种基于负载动态自适应的视频解码优化方法实现了视频帧的动态自适应解码,具体包括以下步骤:
S1、建立解码时间、当前最大解码时间及CPU/GPU占用率与解码时间的映射关系,以2%为步长使CPU/GPU占用率从0%逐步增长到100%,并计算在此占用率下解码一帧视频数据所需的时间。令循环执行如下步骤50次:
S1.1、将CPU/GPU占用率提升到N*2%,N为当前循环次数。
由于简单的死循环操作不能控制占用率,同时也易被操作系统强制从CPU中调度移除,即失去对CPU的占用,因此,本发明设计了以下方式提高CPU的占用率。此外,本发明采用操作系统提供的接口获取CPU的利用率,例如,Linux系统中可通过读取/proc/stat文件获取该信息。
S1.1-1、对于CPU,执行以下步骤将CPU占用率提升至N*2%:
结束操作系统当前所有的非必要运行的程序,即结束除开机启动的程序和本发明的测试程序之外的程序,使系统CPU占用率降为0%;
利用操作系统的任务管理接口,例如Linux系统中的进程分组接口cgroup接口,创建测试任务,记为computingTask,并将该任务的CPU配额cpu quota设置为N*2%;
创建数量为当前机器CPU逻辑核个数coreCount个进程,将这些进程加入到computingTask中;
每个进程执行一个CPU性能满负荷测试的常规算法,例如计算π、程序编译、压缩解压缩等,直至computingTask中的CPU占用达到100%,即整个机器的CPU占用率达到N*2%。
S1.1-2、对于GPU,执行以下步骤将GPU占用率提升到N*2%,通过GPU驱动提供的接口可以获取当前的GPU占用率:绘制若干三角形并不断向三角形填充纹理,通过逐渐增加三角形数量使GPU占用率达到N*2%。
S1.2、当CPU/GPU占用率达到了N*2%时,开始度量解码一帧视频数据所需的时间,对于CPU解码和GPU解码,分别执行以下步骤:
S1.2-1、针对不同的分辨率、不同编码格式及不同FPS的组合,为每个组合构建一个测试视频,例如采用ffmpeg根据三个量生成测试视频。其中,分辨率如1080p、2K、4K等,编码格式如H264、H265等,常见的FPS包括25、30、40、60、120等。
S1.2-2、针对每个测试视频,执行解码操作,并分别记录I帧、P帧及B帧的平均解码时间,即记录一个测试视频中的所有I帧、P帧及B帧的平均解码时间。
S1.2-3、将1000ms/FPS的值作为GPU的最大解码时间,将“1000ms/FPS-2ms”的值作为CPU的最大解码时间。因为CPU解码的过程相对GPU解码来说多出了将数据从内存复制到显存的送显过程,因此在计算CPU的最大解码时间时需减去2ms。分别记录使得I帧、P帧及B帧的平均解码时间大于最大解码时间的CPU/GPU占用率,一般情况下I帧的解码时间最长。
S2、修改解码器的初始化函数,初始化相应数据,具体包括:
S2.1、获取当前待播放视频的分辨率、编码格式和FPS。
S2.2、若系统为GPU解码,则最大解码时间为1000ms/FPS;否则,最大解码时间为“1000ms/FPS-2ms”。
S2.3、根据分辨率、编码格式、FPS和最大解码时间获取在第一步中记录的CPU/GPU的三个占用率,其中,I帧的记为mininalWorkloadPercentageI,P帧的记为mininalWorkloadPercentageP,B帧的记为mininalWorkloadPercentageB,即在相应的分辨率、编码格式和FPS下,若CPU/GPU占用率超过mininalWorkloadPercentageI、mininalWorkloadPercentageP或mininalWorkloadPercentageB,则说明I帧、P帧及B帧的解码时间会超过最大解码时间。
S2.4、将offsetTime初始化为0,offsetTime的含义为解码当前帧时之前帧解码用时超过最大解码时间的时间和。
S2.5、将预解码队列predecodedFrameQueue初始化为空,predecodedFrameQueue用于保存被提前解码的I帧。
S3、修改解码器中解码一帧数据的实现,例如ffmpeg的avcodec_decode_video2函数,实现实时动态检测CPU/GPU占用率,当占用率较高且根据之前获取的信息判断当前解码过程将会影响解码时间,或将超过最大解码时间时,则实时跳过时间冗余较大的帧,并将节省下来的时间,用于提前解码之后的I帧,具体步骤如下:
S3.1、获取当前的CPU/GPU占用率,记为currentWorkloadPercentage。
S3.2、判断当前帧的类型,即I帧、P帧或B帧,根据帧的类型将currentWorkloadPercentage与mininalWorkloadPercentageI、mininalWorkloadPercentageP或mininalWorkloadPercentageB进行比较,如currentWorkloadPercentage大于或等于mininalWorkloadPercentageI、mininalWorkloadPercentageP或mininalWorkloadPercentageB,则:
S3.2-1、若当前帧是I帧,则根据当前帧的Id判断当前I帧是否存在于predecodedFrameQueue中,如在其中,则等待解码结束,并将此帧从predecodedFrameQueue移除,返回解码结果;
如不在其中,则根据currentWorkloadPercentage和之前记录的信息得到I帧的解码时间记为decodeTime,该解码时间实际为预测时间;由于I帧不能被忽略必须要解码,因此执行后续的标准解码操作;将offsetTime设置为“offsetTime +(实际解码时间-最大解码时间)”的值;返回解码结果。
S3.2-2、若当前帧是P帧或B帧,则根据currentWorkloadPercentage和之前记录的信息得到P帧或B帧的解码时间记为decodeTime,若“decodeTime+ offsetTime”大于或等于最大解码时间,则读取当前帧的元信息,将当前帧的所有残差块的大小求和,将该和记为blockSize,如果“(blockSize/帧大小)*decodeTime+ offsetTime”小于或等于最大解码时间,则说明该帧的残差块非常少,解码时间非常短,即使加上offsetTime都能够在最大解码时间周期内完成解码,再将offsetTime设置为0,执行标准解码流程;如果“(blockSize/帧大小)*decodeTime+ offsetTime”大于最大解码时间且“blockSize/帧大小”小于10%,根据视觉差原理快速播放的视频中连续两帧变化如果小于10%人眼不会有明显的卡顿和掉帧体验,则忽略当前帧的解码,即跳过当前帧的解码,返回前一帧的解码结果,再将offsetTime设置为“offsetTime - (blockSize/帧大小)*decodeTime”,并在预解码线程中向后读取第一个I帧,将其加入到predecodedFrameQueue的队尾,并在predecodedFrameQueue中执行解码该帧;如果“(blockSize/帧大小)*decodeTime+ offsetTime”大于最大解码时间且“blockSize/帧大小”不小于10%,则执行后续的标准解码操作,将offsetTime设置为“offsetTime +(实际解码时间-最大解码时间)”的值,再返回解码结果。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
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所述的视频解码优化方法,其特征在于,所述步骤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的占用率测试程序。
3.根据权利要求2所述的视频解码优化方法,其特征在于,所述步骤11.4中所述常规算法包括计算π、程序编译及压缩解压缩。
4.根据权利要求2所述的视频解码优化方法,其特征在于,所述步骤11.5中所述时隙值为2ms。
5.根据权利要求1所述的视频解码优化方法,其特征在于,所述步骤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的占用率测试程序。
6.根据权利要求5所述的视频解码优化方法,其特征在于,所述步骤12.2采用绘制若干三角形并向三角形中填充纹理,逐渐增加三角形的数量以使GPU占用率达到N*a%的方式。
7.根据权利要求5所述的视频解码优化方法,其特征在于,所述a%为2%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310756646.1A CN116506618B (zh) | 2023-06-26 | 2023-06-26 | 一种基于负载动态自适应的视频解码优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310756646.1A CN116506618B (zh) | 2023-06-26 | 2023-06-26 | 一种基于负载动态自适应的视频解码优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116506618A true CN116506618A (zh) | 2023-07-28 |
CN116506618B CN116506618B (zh) | 2023-08-22 |
Family
ID=87320528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310756646.1A Active CN116506618B (zh) | 2023-06-26 | 2023-06-26 | 一种基于负载动态自适应的视频解码优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116506618B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116744000A (zh) * | 2023-08-16 | 2023-09-12 | 北京麟卓信息科技有限公司 | 一种基于动态算法重构的视频编解码方式检测方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090268755A1 (en) * | 2008-04-23 | 2009-10-29 | Oki Electric Industry Co., Ltd. | Codec converter, gateway device, and codec converting method |
CN102404576A (zh) * | 2011-11-30 | 2012-04-04 | 国云科技股份有限公司 | 云终端解码器及其负载均衡算法和gpu的解码算法 |
CN105142019A (zh) * | 2015-08-14 | 2015-12-09 | 广州市百果园网络科技有限公司 | 视频解码方法及装置 |
CN107396125A (zh) * | 2017-05-27 | 2017-11-24 | 联发科技(新加坡)私人有限公司 | 解码器资源分配方法及装置 |
CN112492379A (zh) * | 2019-09-12 | 2021-03-12 | 曙光信息产业(北京)有限公司 | 音视频多路并发解码方法、装置和计算机设备 |
CN113766316A (zh) * | 2020-06-03 | 2021-12-07 | 海信视像科技股份有限公司 | 显示设备以及视频信息处理方法 |
-
2023
- 2023-06-26 CN CN202310756646.1A patent/CN116506618B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090268755A1 (en) * | 2008-04-23 | 2009-10-29 | Oki Electric Industry Co., Ltd. | Codec converter, gateway device, and codec converting method |
CN102404576A (zh) * | 2011-11-30 | 2012-04-04 | 国云科技股份有限公司 | 云终端解码器及其负载均衡算法和gpu的解码算法 |
CN105142019A (zh) * | 2015-08-14 | 2015-12-09 | 广州市百果园网络科技有限公司 | 视频解码方法及装置 |
CN107396125A (zh) * | 2017-05-27 | 2017-11-24 | 联发科技(新加坡)私人有限公司 | 解码器资源分配方法及装置 |
CN112492379A (zh) * | 2019-09-12 | 2021-03-12 | 曙光信息产业(北京)有限公司 | 音视频多路并发解码方法、装置和计算机设备 |
CN113766316A (zh) * | 2020-06-03 | 2021-12-07 | 海信视像科技股份有限公司 | 显示设备以及视频信息处理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116744000A (zh) * | 2023-08-16 | 2023-09-12 | 北京麟卓信息科技有限公司 | 一种基于动态算法重构的视频编解码方式检测方法 |
CN116744000B (zh) * | 2023-08-16 | 2023-10-13 | 北京麟卓信息科技有限公司 | 一种基于动态算法重构的视频编解码方式检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116506618B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116506618B (zh) | 一种基于负载动态自适应的视频解码优化方法 | |
US7729590B2 (en) | Digital video stream trick play | |
CN101808205B (zh) | 运动图像输出方法和运动图像输出设备 | |
US8437408B2 (en) | Decoding with reference image stored in image memory for random playback | |
CN110830838A (zh) | 一种安防高清录像倒播方法及装置 | |
US20140086564A1 (en) | Decoding interdependent frames of a video for display | |
JP2008504750A5 (zh) | ||
JP2016526336A (ja) | 適応ビットレートストリーミングのための適応量子化を用いて複数のビデオストリームをエンコードするシステムおよび方法 | |
CN106303379A (zh) | 一种视频文件逆序播放方法及系统 | |
JP4180547B2 (ja) | 動画像データ復号装置、および復号プログラム | |
CN104185982B (zh) | 视频处理方法和实施所述方法的视频设备 | |
US20140010304A1 (en) | Moving image encoding apparatus, control method therefor, and non-transitory computer readable storage medium | |
US8391688B2 (en) | Smooth rewind media playback | |
US20100086280A1 (en) | Method for smoothly playing a video stream in reverse | |
CN111510706B (zh) | 硬件编、解码支持度检测方法、终端及存储介质 | |
US7660512B2 (en) | Systems and methods for managing frame rates during multimedia playback | |
CN112714320A (zh) | 一种解码方法、解码设备及计算机可读存储介质 | |
US8300701B2 (en) | Offspeed playback in a video editing system of video data compressed using long groups of pictures | |
CN115866350B (zh) | 视频倒放方法、装置、电子设备及存储介质 | |
CN112804579B (zh) | 视频播放方法、装置、计算机设备和可读存储介质 | |
KR20060049356A (ko) | 데이터 처리 장치, 데이터 처리 방법, 데이터 처리 시스템,프로그램 및 기록매체 | |
CN112203097A (zh) | 一种自适应视频解码方法、装置,终端设备及存储介质 | |
US7912349B1 (en) | Validating frame dependency information | |
CN113645448A (zh) | 一种适用于指挥调度的视频解码方法和装置 | |
CN113923456A (zh) | 视频处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |