CN117956160A - 码率控制方法、码率控制装置以及计算机存储介质 - Google Patents

码率控制方法、码率控制装置以及计算机存储介质 Download PDF

Info

Publication number
CN117956160A
CN117956160A CN202311869002.XA CN202311869002A CN117956160A CN 117956160 A CN117956160 A CN 117956160A CN 202311869002 A CN202311869002 A CN 202311869002A CN 117956160 A CN117956160 A CN 117956160A
Authority
CN
China
Prior art keywords
frame
regulation period
term regulation
bit
complexity
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.)
Pending
Application number
CN202311869002.XA
Other languages
English (en)
Inventor
李曾
林聚财
江东
殷俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202311869002.XA priority Critical patent/CN117956160A/zh
Publication of CN117956160A publication Critical patent/CN117956160A/zh
Pending legal-status Critical Current

Links

Abstract

本申请公开了一种码率控制方法、码率控制装置以及计算机存储介质,该码率控制方法包括:对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。通过上述方式,本申请不仅考虑到相邻短期调控周期的调控情况,还考虑了当前短期调控周期的状态,在保证了码率准确的情况下提高了码率控制的适应性。

Description

码率控制方法、码率控制装置以及计算机存储介质
技术领域
本申请涉及视频编码领域,特别是涉及一种码率控制方法、码率控制装置以及计算机存储介质。
背景技术
随着数字化的不断发展,视频传播的应用场景也变得多种多样,例如有线电视、数字广播、视频会议等。在这些应用进行传播的过程中,必须使计算机的数据处理与视频信息的处理以及网络的传输相配合,而且要保证视听质量达到人们一般水平的可接受范围。
为了节约传输带宽以及存储空间,码率控制技术是影响视频编码效果的重要因素之一,其主要任务是有效的控制视频编码器,使其满足输出码流的大小满足传输信道实际带宽的限制。码率控制所关注的重点为在带宽、延时、缓存等的限制下获得更好的图像质量,在码率下高效地传输编码数据,同时保证良好和稳定的质量。
目前现有的码率控制算法包括VBR(Variable Bitrate可变比特率)和CBR(Constants Bit Rate固定比特率)两种模式。对CBR而言,可以最大限度的满足不浪费带宽传输的数据,对VBR而言,则能够在保持主观质量的前提下尽可能的节省码率。而在实际应用中,单纯使用CBR和VBR均出现了不同程度的问题。使用CBR进行码率控制时,其码率固定,对复杂场景进行编码后的质量较低,对简单场景编码时则会浪费一定的码率。使用VBR进行码率控制时,其码率是波动的,从而无法预测一定时间内所需的存储空间,在配置存储空间时,往往按照码率的上限值进行配置,就会带来成本的增加。
发明内容
本申请主要解决的技术问题是如何在保证图像质量的情况下更好地适应场景的变化,对此,本申请提供一种码率控制方法、码率控制装置以及计算机存储介质。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种码率控制方法,该方法包括:对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。
其中,对当前短期调控周期的复杂度进行预测,包括:计算当前短期调控周期内关键帧和非关键帧的数量;获取已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度;基于当前短期调控周期内关键帧和非关键帧的数量和已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度得到预测复杂度。
其中,获取当前短期调控周期的缓冲区状态,包括:获取前一短期调控周期的目标比特;计算前一短期调控周期的目标比特与前一短期调控周期的实际比特的差值,得到当前短期调控周期的缓冲区状态。
其中,基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特,包括:响应于差值大于等于预设阈值,选择复杂度比特与缓冲区比特中的较小值作为当前短期调控周期的目标比特,选择较大值作为当前短期调控周期的上限比特;响应于差值小于预设阈值,选择复杂度比特与缓冲区比特中的较小值最为当前短期调控周期的目标比特,选择复杂度比特与缓冲区比特的平均值作为当前短期调控周期的上限比特。
其中,根据目标比特确定当前短期调控周期的量化参数,使用量化参数在短期调控周期内对视频数据进行编码,包括:基于当前短期调控周期中每一帧的帧类型将目标比特分配给每一帧,得到每一帧的帧目标比特;基于每一帧的帧目标比特得到每一帧的量化参数;使用每一帧的量化参数对对应帧的视频数据进行编码。
其中,基于当前短期调控周期中每一帧的帧类型将目标比特分配给每一帧,得到每一帧的帧目标比特,包括:当帧类型为非关键帧时,计算非关键帧的帧缓冲区比特;根据非关键帧的时域复杂度和空域复杂度计算非关键帧的帧复杂度比特;根据非关键帧的帧缓冲区比特以及帧复杂度比特得到非关键帧的帧目标比特。
其中,在基于每一帧的帧目标比特得到每一帧的量化参数之前,码率控制方法还包括:根据当前短期调控周期的上溢等级对每一帧的目标比特进行更新,其中,上溢等级由当前短期调控周期的缓冲区状态决定。
其中,在使用每一帧的量化参数对对应帧的视频数据进行编码之前,码率控制方法还包括:基于非关键帧的时域复杂度得到非关键帧的量化参数偏移度;根据量化参数偏移度以及非关键帧的上一非关键帧的量化参数对非关键帧的量化参数进行调整。
其中,在基于每一帧的帧目标比特得到每一帧的量化参数之后,码率控制方法还包括:根据当前视频帧的帧目标比特和当前宏块复杂度计算当前宏块的宏块目标比特;基于宏块目标比特得到当前宏块的量化参数;使用每一帧的量化参数对对应帧的视频数据进行编码,包括:使用当前宏块的量化参数对当前宏块的视频数据进行编码。
其中,在对当前短期调控周期的复杂度进行预测之前,码率控制方法还包括:计算当前短期调控周期所在的当前中期调控周期的初始调控比特;基于当前中期调控周期的缓冲区状态,对初始调控比特进行更新,得到当前中期调控周期的目标比特。
其中,在计算当前短期调控周期所在的当前中期调控周期的初始调控比特之前,码率控制方法还包括:基于长期调控周期的平均码率和调控时长计算得到长期调控周期的总比特;基于长期调控周期的缓冲区状态,对长期调控周期的总比特进行调整,得到长期调控周期的目标比特。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种码率控制装置,该码率控制装置包括处理器和存储器,存储器与处理器耦接,存储器存储有程序数据,处理器用于执行程序数据以实现如上述的码率控制方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质存储有程序数据,程序数据在被执行时,用于实现上述的码率控制方法。
本申请的有益效果是:区别于现有技术的情况,本申请提供的码率控制方法包括:对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。通过上述方式,与常规的码率控制方法相比,本申请通过在短期调控的周期内不仅考虑到相邻短期调控的相关性,同时还考虑到当前短期调控本身的特性,在保证了视频编码质量的前提下,可以节省编码后视频的存储空间,从而提高了码率控制对于不同复杂度的场景的适应性,提升了视频的观看体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本申请提供的码率控制方法第一实施例的流程示意图;
图2是本申请提供的码率控制方法中调控周期的总体结构示意图;
图3是本申请提供的码率控制装置中应用码率控制方法的整体流程示意图;
图4是本申请提供的码率控制方法中长期调控周期的流程示意图;
图5是本申请提供的码率控制方法中中期调控周期的流程示意图;
图6是本申请提供的码率控制方法中短期调控周期的流程示意图;
图7是本申请提供的码率控制方法第二实施例的流程示意图;
图8是本申请提供的码率控制方法中帧级调控周期的流程示意图;
图9是本申请提供的码率控制方法第三实施例的流程示意图;
图10是本申请提供的码率控制装置第一实施例的结构示意图;
图11是本申请提供的码率控制装置第二实施例的结构示意图;
图12是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
本申请提供的码率控制方法主要应用于一种码率控制装置,其中,本申请的码率控制装置可以为服务器,也可以为由服务器和终端设备相互配合的系统。相应地,码率控制装置包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和终端设备中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的码率控制方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
本申请提供的码率控制方法主要应用于视频数据的编码过程中,通过调整QP来控制视频码率的行为。在不同的使用场景下,用户对视频的码率大小、稳定性会有不同的要求,因此码率控制的类型也多种多样。
在现有的码率控制方法中,当用户观看离线视频文件时,往往不需要此视频具备恒定的码率,因为整个文件都在本地,只要磁盘IO和设备解码能力都合格,基本就不会发生卡顿问题。所以压制这类视频时会倾向于保证质量而非码率平稳性。这种码率控制策略我们统称为可变码率(VBR)。但在用户观看在线视频时,由于用户带宽是恒定的,能够缓存的数据量也有限,所以需要对码率做一些限制,否则一些瞬时码率过高的片段可能会引起卡顿。所以压制这类视频时,会选择恒定码率(CBR)对视频进行编码。然而在以上两种码率控制的方法中,都无法基于视频场景中的复杂度适应性调整码率,导致码率控制的效果差。
基于此,本申请提供了一种码率控制方法,下面对本申请所采用的技术方案进行详细说明。
视频编码一般包括预测、变换、量化(码率控制)和编码。本申请中的实施例侧重介绍量化(码率控制)方法。视频编码的目标是尽可能多地保存比特,减少原始输入文件的文件大小,同时保持尽可能多的质量。码率控制是确定尺寸和质量之间权衡的关键步骤,在精确达到目标码率的同时尽可能改善编码视频的质量。
码率控制主要分为两个步骤,即比特分配和比特控制。比特分配部分基于率失真最优化准则为多个编码级别如图片组(Group of Picture,GOP)、帧级以及更细粒度的块级分配合理的比特以获得整体最优编码性能。比特控制过程是根据目标比特数,利用率失真模型(R-D模型)计算量化参数从而控制码率的大小,使编码器输出每一个基本单元、帧和GOP的比特数尽可能等于预先的目标比特。
参阅图1至图3,图1是本申请提供的码率控制方法第一实施例的流程示意图;图2是本申请提供的码率控制方法中调控周期的总体结构示意图;图3是本申请提供的码率控制装置中应用码率控制方法的整体流程示意图。
步骤11:对当前短期调控周期的复杂度进行预测。
在本申请一实施例中,如图2所示,本申请提供的整体码率控制的调控周期可以包括长期调控、中期调控、短期调控、帧级调控。其中,T1表示长期调控,T2表示中期调控,T3表示短期调控。
具体地,长期调控周期调控时长的单位可设定为秒、分钟、小时,具体取值可以根据用户需求自行设定。用户向码率控制装置输入长期调控的平均码率,以用于统计整个长期调控周期中视频数据的存储空间C,最终视频数据实际的存储空间小于等于C。
长期调控周期中包括若干个中期调控周期,中期调控周期调控时长的单位为分钟。为了防止长期调控周期与短期调控周期的调控时长过长,导致调控不准确,中期调控时长由长期调控时长和短期调控时长推导得到。
若长期调控时间小于h小时,中期调控周期等于长期调控周期,此时等同于无中期调控周期;若长期调控时长和短期调控时长两者的差异在h1小时之内,则中期调控时长为m1分钟;若两者差异在h2小时之内,中期调控时长为m2分钟;若两者差异大于h3小时,中期调控时长为m3分钟。其中,h、h1、m1、h2、m2、h3、m3的取值范围根据用户需求或历史经验值设定,在此不做限定。
中期调控周期中包括若干个短期调控周期,短期调控周期调控时长的单位为秒,具体取值可以根据用户需求自行设定。短期调控周期中设置了视频码率的最大码率以及最小码率。
帧级调控周期则处于短期调控周期之中,由短期调控周期中帧的数量值确定帧级调控的数目,主要的目的是在短期调控的基础上更加合理的分配比特,保证主观质量。
下面将按照图2和图3所示的码率控制方法中各个调控周期的顺序依次介绍。
在本申请一实施例中,码率控制装置使用如图4所示的方法进行长期调控。参阅图4,图4是本申请提供的码率控制方法中长期调控周期的流程示意图。
具体地,码率控制装置基于用户设定的视频数据的平均码率以及长期调控周期的调控时长计算得到长期调控周期的总比特,并
可选地,码率控制装置根据长期调控周期的缓冲区状态对长期调控周期的总比特进行调整得到当前长期调控周期的目标比特。
具体地,码率控制装置在得到中期调控周期的数目和长期调控周期的目标比特后,将当前长期调控周期的总比特平均分配至每个中期调控周期中,分别为Bm1、Bm2…Bmn
在本申请一实施例中,码率控制装置使用如图5所示的方法进行中期调控,参阅图5,图5是本申请提供的码率控制方法中中期调控周期的流程示意图。
具体地,码率控制装置在中期调控周期开始之前,计算当前中期调控周期的初始调控比特和当前长期调控周期中包含的中期调控周期的数目,并对当前中期调控周期的缓冲区进行初始化,将当前缓冲区中的数据大小mediumvbf记为0。
具体地,码率控制装置计算当前长期调控周期中包含的中期调控周期的数目mediumtermnum,计算公式如下:
mediumtermnum=ceil(longtermstatstime/mediumtermstatstime)
其中,longtermstatstime表示长期调控周期的调控时长,mediumtermstatstime表示中期调控周期的调控时长,ceil()表示向上取整。
其中,码率控制装置使用长期调控周期的平均码率计算当前中期调控周期的初始调控比特。计算公式如下:
term_unit=60
其中,longtermbitrate为用户设定的长期调控周期的平均码率,mediumtermnum为长期调控周期中计算得到的中期调控周期的数目,longtermstatstime为用户设定的长期调控周期的调控时长,term_unit表示将单位由分钟转为秒,1024表示将单位从kbit转为bit。
具体地,码率控制装置获取当前中期调控周期的缓冲区状态,当前中期调控周期的缓冲区状态为前一中期调控周期的目标比特与前一中期调控周期的实际比特的差值,公式如下:
其中,为前一中期调控周期的目标比特,为前一中期调控周期的实际比特。
具体地,码率控制装置使用缓冲区状态对当前中期调控周期的目标比特进行调整,计算公式如下:
其中,mediumvbf为当前中期调控周期的缓冲区状态,为根据缓冲区状态更新的当前中期调控周期的目标比特,在实际应用中均赋值给下面均使用其表示当前中期调控周期最终的目标比特,sw表示窗口,表示想要在sw个周期内补足缓冲区中剩余未调控的比特,sw的大小取值可以根据用户需求自行设定,取值范围为[0,短期调控周期数目]。
具体地,码率控制装置根据所剩的中期调控周期的数目判断长期调控周期是否结束,若结束,则进入下一个长期调控周期;若未结束,则进入下一中期调控周期。
在本申请一实施例中,码率控制装置使用如图6所示的方法进行短期调控,参阅图6,图6是本申请提供的码率控制方法中短期调控周期的流程示意图。
具体地,在进行短期调控周期之前,码率控制装置初始化短期调控周期的缓冲区shortvbf为0,并计算当前中期调控周期中包含的短期调控周期的数量shorttermnum,计算公式如下:
其中,mediumtermstatstime表示中期调控周期的调控时长,shorttermstatstime表示短期调控周期的调控时长。
具体地,若当前短期调控周期为当前中期调控周期中的第一个短期调控周期,则当前短期调控周期的目标比特根据当前中期调控周期的总目标比特确定,即当前短期调控周期的目标比特为当前短期调控周期的初始化目标比特,计算公式如下:
其中为当前短期调控周期的初始化目标比特,为当前短期调控周期所在的中期调控周期的总目标比特,shorttermnum为当前中期调控周期中短期调控周期的数目。
可选地,码率控制装置基于当前短期调控周期中视频数据的最大码率确定当前短期调控周期的上限比特
在本申请一实施例中,码率控制装置使用如图7所示的方法对不为第一个短期调控周期的当前短期调控周期的复杂度进行预测,参阅图7,图7为本申请提供的码率控制方法第二实施例的流程示意图。
步骤71:计算当前短期调控周期内关键帧和非关键帧的数量。
具体地,非关键帧可以包括前向参考帧P帧,在一些实施例中,非关键帧还可以包括双向参考帧B帧,为了方便说明,本申请中均以非关键帧为前向参考帧P帧为例进行说明。
具体地,码率控制装置获取当前短期调控周期中关键帧I帧的帧数目Iframenum、非关键帧P帧的帧数目Pframenum以及帧总数数目framenum
具体地,I帧表示关键帧,可以理解为这一帧画面的完整保留,又称为内部画面(intra picture)。I帧通常是每个GOP(Group of Picture,图片组,一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像。
P帧即前向参考帧,表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)。
步骤72:获取已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度。
具体地,码率控制装置在已调控的短期调控周期内获取最后一帧关键帧I帧以及最后一帧非关键帧P帧的帧复杂度。
步骤73:基于当前短期调控周期内关键帧和非关键帧的数量和已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度得到预测复杂度。
具体地,码率控制装置使用以下计算公式得到预测复杂度:
其中,Iframenum、Pframenum为上述步骤71中获取的当前短期调控周期中的关键帧I帧和非关键帧P帧的数目, 则表示已调控的上一邻近关键帧I帧的帧复杂度和上一邻近非关键帧P帧的帧复杂度,/>为预测当前短期调控周期的预测复杂度。
步骤12:基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特。
具体地,码率控制装置根据当前短期调控周期的预测复杂度与前一短期调控周期的实际复杂度的比值,以及前一短期调控周期的实际比特,计算当前短期调控周期的复杂度比特,计算公式如下:
其中,为当前短期调控周期的预测复杂度,/>为前一短期调控周期的实际复杂度,/>为当前短期调控周期的复杂度比特,为前一短期调控周期的实际比特。
步骤13:获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特。
具体地,码率控制装置获取前一短期调控周期的目标比特,计算前一短期调控周期的目标比特与前一短期调控周期的实际比特的差值,得到当前短期调控周期的缓冲区状态shortvbf,计算公式如下:
其中,为前一短期调控周期的目标比特,/>为前一短期调控周期的实际比特。
具体地,码率控制装置使用缓冲区状态计算当前短期调控周期的缓冲区比特,计算公式如下:
其中,为当前短期调控周期的缓冲区比特,/>为当前短期调控周期的初始化目标比特,shortvbf为当前短期调控周期的缓冲区状态,sw表示窗口,/>表示想要在sw个周期内补足上一短期调控周期中剩余的比特。
步骤14:基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特。
在本申请一实施例中,码率控制装置基于当前短期调控周期的缓冲区状态shortvbf确定当前短期调控周期的目标比特。
响应于缓冲区状态的差值大于等于预设阈值,码率控制装置选择复杂度比特与缓冲区比特中的较小值作为当前短期调控周期的目标比特,选择较大值作为当前短期调控周期的上限比特。其中,预设阈值可以为0,表示当前短期调控周期的码率存在余量,可以为当前短期调控周期中的视频数据多分配一点码率。
响应于缓冲区状态的差值小于预设阈值,码率控制装置选择复杂度比特与缓冲区比特中的较小值最为当前短期调控周期的目标比特,选择复杂度比特与缓冲区比特的平均值作为当前短期调控周期的上限比特。其中,预设阈值可以为0,表示当前短期调控周期的码率不存在余量。
短期调控周期的目标比特用于整个短期调控周期过程,而上限比特则用于防止短期调控周期中出现场景的变化,提高了码率控制装置对于不同场景的适应性。
可选地,在确定当前短期调控周期的目标比特之后,码率控制装置使用用户设定的最大码率和最小码率限制当前短期调控周期的目标比特,计算公式如下:
其中,分别为用户设定的短期调控周期的最大码率和最小码率,shorttermstatstime为当前短期调控周期的调控时长,clip()限定在最大比特和最小比特之间。
在本申请一实施例中,码率控制装置基于当前中期调控周期的缓冲区状态以及当前短期调控周期的缓冲区状态确定当前短期调控周期的上溢等级。上溢等级vbflevel用于作为后续帧级码率控制的依据,上溢等级越高表示码率越容易出现上溢,在后续的调控周期中应对码率加以控制,具体确定公式如下:
具体地,码率控制装置根据剩余的短期调控周期的数目判断当前中期调控周期是否结束,若结束,则进行下一个中期调控周期;若未结束,则进入下一短期调控周期。
步骤15:根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。
在本申请一实施例中,短期调控周期中还包括帧级调控周期,码率控制装置使用如图8和图9所示的方法进行帧级调控,参阅图8和图9,图8是本申请提供的码率控制方法中帧级调控周期的流程示意图;图9是本申请提供的码率控制方法第三实施例的流程示意图。
步骤91:基于当前短期调控周期中每一帧的帧类型将目标比特分配给每一帧,得到每一帧的帧目标比特。
具体地,帧的类型可以包括关键帧I帧和非关键帧P帧。
在本申请一实施例中,当帧类型为关键帧I帧时,码率控制装置使用关键帧的复杂度以及缓冲区比特对关键帧的帧目标比特进行分配。
具体地,码率控制装置使用以下公式计算当前关键帧的缓冲区比特:
其中,为关键帧的缓冲区比特,w1为初始化系数,可设置范围[0.40.7]。
具体地,码率控制装置使用以下公式计算当前关键帧的复杂度比特
其中,Iframesatd为当前关键帧的复杂度,为前一个关键帧的复杂度,/>为前一个关键帧的实际比特。
具体地,码率控制装置根据当前短期调控周期的上溢等级确定当前关键帧的帧目标比特。
当上溢等级为0和1,选取和/>最大的比特作为当前帧的目标比特,公式如下:
当上溢等级为2时,确定当前关键帧的帧目标比特的公式如下:
当上溢等级为3时,确定当前关键帧的帧目标比特的公式如下:
在本申请一实施例中,当帧类型为非关键帧P帧时,码率控制装置基于关键帧已消耗的比特数对非关键帧的缓冲区比特进行计算,具体公式如下:
其中,为非关键帧的帧缓冲区比特,framesatd为当前非关键帧的帧复杂度,/>为预测的当前短期调控中所有关键帧的帧复杂度,表示关键帧已经消耗的比特数。
再计算当前缓冲区状态,使用缓冲区状态更新帧缓冲区比特,计算公式如下:
其中,framevbf为当前帧级调控的缓冲区大小,sw表示窗口,表示想要在sw个周期内补足前面调控中上一帧实际比特和目标比特/>差异部分,即实际还未调控的部分。
具体地,码率控制装置使用当前非关键帧的时域复杂度sad计算当前视频帧的运动情况,并基于时域复杂度sad确定时域系数wt以及量化参数QP偏移值,具体如下:
framesad[DH_MD_LEVEL]={0.1,0.4,0.8,1.2,2.0,3.0,6.0,10.0};
wt[DH_MD_LEVEL]={0.8,0.9,1.0,1.2,1.4,1.6,1.8,2.0};
QPoffset[DH_MD_LEVEL]={1,1,0,0,-1,-1,-2,-2};
其中DH_MD_LEVEL设置为8,framesad越大表示当前帧的运动越剧烈,其对应的权重wt越大,QPoffset也就越小。
例如当前非关键帧的framesad为1.2,其大于等于1.2小于2.0,则其对应的wt为1.4,QPoffset为-1。
通过上述根据当前帧的时域复杂度计算当前帧图像的运动情况,并根据运动情况确定量化参数偏移值,可以在运动场景下提供更加平稳的图像质量,并在静止场景下节省码率。
具体地,码率控制装置使用非关键帧的时域复杂度与空域复杂度计算当前非关键帧的帧复杂度比特,公式如下:
其中,wt表示时域系数,ws表示空域系数,空域系数的计算公式为当前非关键帧的空域复杂度除以上一非关键帧的空域复杂度。表示当前短期调控周期中所有已编码关键帧的平均比特,计算公式如下:
表示当前短期调控周期中所有已编码关键帧的总比特,Pframenum-Pframeleftnum表示当前短期调控周期中所有已编码的关键帧的总数目。
在得到非关键帧的帧复杂度比特与帧缓冲区比特后,码率控制装置基于当前短期调控周期的上溢等级以及帧的运动情况确定非关键帧的帧目标比特,具体实施方法与关键帧的帧目标比特确定方法相似,在此不做赘述。
通过上述方法,码率控制装置不仅考虑到当前短期调控周期内的情况,同时还考虑到当前视频帧本身的时域空域复杂度,在帧级调控的范围内进行更加精细的比特分配,提高了码率控制的准确度。
可选地,码率控制装置可以根据当前短期调控周期的上溢等级vbflevel和QPoffset进行限制和更新,从而得到对于不同复杂度的场景更有适应性的帧目标比特以及量化参数偏移值。
步骤92:基于每一帧的帧目标比特得到每一帧的量化参数。
具体地,码率控制装置使用得到的帧目标比特代入到R-λ或者R-Q模型,即可计算得到当前视频帧的量化参数QP。
可选地,码率控制装置根据前一帧的量化参数QP以及对应的量化参数偏移值QPoffset限制当前帧的量化参数QP,具体如下:
其中,frameQP为当前帧的量化参数QP,为前一帧的量化参数QP,QPoffset为根据运动情况确定的量化参数QP偏移值。
码率控制装置使用关键帧和非关键帧的量化参数最大值对当前帧的量化参数frameQP进行限制。
其中,分别表示帧级调控中关键帧的量化参数QP的最小值与最大值,分别为26、45;/> 分别表示帧级调控中非关键帧量化参数QP的最小值与最大值,分别为28、51。
在本申请一实施例中,如图8中所示,帧级调控中还包括宏块级调控。码率控制装置根据当前视频帧的帧目标比特以及当前宏块的复杂度计算当前宏块的宏块目标比特,计算公式如下:
其中,为当前宏块的宏块目标比特,/>为帧目标比特,mbgrad和framegrad分别为当前宏块的复杂度和当前帧的帧复杂度。
具体地,码率控制装置根据当前宏块的复杂度确定当前宏块的量化参数最小偏移值以及量化参数最大偏移值/>并将宏块目标比特代入R-λ或者R-Q模型,即可计算得到当前宏块的量化参数mbQP
具体地,R-λ模型作为码率控制模型中的一种,使用的就是率失真优化,通过R-λ模型构建了分配比特(R)与率失真参数(λ)之间的数学关系模型,再通过率失真参数(λ)与量化参数(QP)之间的映射关系,求出量化参数QP,从而控制码率的大小。而R-Q模型则直接构建了分配比特(R)与量化因子(Qscale)之间的数学关系模型,再由量化因子Qscale计算得到量化参数QP。
可选地,码率控制装置使用当前帧的量化参数以及当前宏块的量化参数最大偏移值和量化参数最小偏移值对当前宏块的量化参数进行限制,具体公式如下:
具体地,码率控制装置根据剩余的帧数目判断当前短期调控周期是否结束,若结束,则进行下一个短期调控周期;若未结束,则进入下一帧级调控周期。
步骤93:使用每一帧的量化参数对对应帧的视频数据进行编码。
具体地,码率控制装置使用当前帧的量化参数对当前视频帧的视频数据进行编码,在存在当前宏块的量化参数时,使用当前宏块的量化参数对当前宏块的视频数据进行编码。
区别于现有技术的情况,本申请提供的码率控制方法包括:对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。通过上述方式,与常规的码率控制方法相比,本申请通过在短期调控的周期内不仅考虑到相邻短期调控的相关性,同时还考虑到当前短期调控本身的特性,在保证了视频编码质量的前提下,可以节省编码后视频的存储空间,从而提高了码率控制对于不同复杂度的场景的适应性,提升了视频的观看体验。
上述实施例的方法,可以利用一码率控制装置来实现,下面结合图10进行描述,图10是本申请提供的码率控制装置第一实施例的结构示意图。
如图10所示,本申请实施例的码率控制装置100包括复杂度预测模块101、复杂度比特计算模块102、缓冲区比特计算模块103、目标比特确定模块104和编码模块105。
其中,复杂度预测模块101,用于对当前短期调控周期的复杂度进行预测。
复杂度比特计算模块102,用于基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特。
缓冲区比特计算模块103,用于获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特。
目标比特确定模块104,用于基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特。
编码模块105,用于根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。
上述实施例的方法,可以利用一码率控制装置来实现,下面结合图11,图11是本申请提供的码率控制装置第二实施例的结构示意图,该码率控制装置110包括存储器111和处理器112,存储器111用于存储程序数据,处理器112用于执行程序数据以实现如下的方法:
对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。
上述实施例的方法,可以利用一计算机可读存储介质来实现,下面结合图12,图12是本申请提供的计算机可读存储介质一实施例的结构示意图,该计算机可读存储介质120存储有程序数据121,程序数据121在被处理器执行时,用于实现如下的方法:
对当前短期调控周期的复杂度进行预测;基于预测复杂度与前一短期调控周期的实际复杂度、前一短期调控周期的实际比特计算当前短期调控周期的复杂度比特;获取当前短期调控周期的缓冲区状态,基于缓冲区状态确定当前短期调控周期的缓冲区比特;基于复杂度比特与缓冲区比特确定当前短期调控周期的目标比特;根据目标比特确定当前短期调控周期的量化参数,使用量化参数在当前短期调控周期内对视频数据进行编码。
本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (13)

1.一种码率控制方法,其特征在于,所述码率控制方法包括:
对当前短期调控周期的复杂度进行预测;
基于预测复杂度与前一短期调控周期的实际复杂度、所述前一短期调控周期的实际比特计算所述当前短期调控周期的复杂度比特;
获取所述当前短期调控周期的缓冲区状态,基于所述缓冲区状态确定所述当前短期调控周期的缓冲区比特;
基于所述复杂度比特与所述缓冲区比特确定所述当前短期调控周期的目标比特;
根据所述目标比特确定所述当前短期调控周期的量化参数,使用所述量化参数在所述当前短期调控周期内对视频数据进行编码。
2.根据权利要求1所述码率控制方法,其特征在于,
所述对当前短期调控周期的复杂度进行预测,包括:
计算所述当前短期调控周期内关键帧和非关键帧的数量;
获取已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度;
基于所述当前短期调控周期内关键帧和非关键帧的数量和所述已调控的上一邻近关键帧的复杂度与上一邻近非关键帧的复杂度得到所述预测复杂度。
3.根据权利要求1所述的码率控制方法,其特征在于,
所述获取所述当前短期调控周期的缓冲区状态,包括:
获取所述前一短期调控周期的目标比特;
计算所述前一短期调控周期的目标比特与所述前一短期调控周期的实际比特的差值,得到所述当前短期调控周期的缓冲区状态。
4.根据权利要求3所述的码率控制方法,其特征在于,
所述基于所述复杂度比特与所述缓冲区比特确定所述当前短期调控周期的目标比特,包括:
响应于所述差值大于等于预设阈值,选择所述复杂度比特与所述缓冲区比特中的较小值作为所述当前短期调控周期的目标比特,选择较大值作为所述当前短期调控周期的上限比特;
响应于所述差值小于所述预设阈值,选择所述复杂度比特与所述缓冲区比特中的较小值最为所述当前短期调控周期的目标比特,选择所述复杂度比特与所述缓冲区比特的平均值作为所述当前短期调控周期的上限比特。
5.根据权利要求1所述的码率控制方法,其特征在于,
所述根据所述目标比特确定所述当前短期调控周期的量化参数,使用所述量化参数在所述短期调控周期内对视频数据进行编码,包括:
基于所述当前短期调控周期中每一帧的帧类型将所述目标比特分配给每一所述帧,得到每一所述帧的帧目标比特;
基于每一所述帧的帧目标比特得到每一所述帧的量化参数;
使用每一所述帧的量化参数对对应帧的视频数据进行编码。
6.根据权利要求5所述的码率控制方法,其特征在于,
所述基于所述当前短期调控周期中每一帧的帧类型将所述目标比特分配给每一所述帧,得到每一所述帧的帧目标比特,包括:
当所述帧类型为非关键帧时,计算所述非关键帧的帧缓冲区比特;
根据所述非关键帧的时域复杂度和空域复杂度计算所述非关键帧的帧复杂度比特;
根据所述非关键帧的所述帧缓冲区比特以及所述帧复杂度比特得到所述非关键帧的帧目标比特。
7.根据权利要求6所述的码率控制方法,其特征在于,
在所述基于每一所述帧的帧目标比特得到每一所述帧的量化参数之前,所述码率控制方法还包括:
根据所述当前短期调控周期的上溢等级对每一所述帧的目标比特进行更新,其中,所述上溢等级由所述当前短期调控周期的缓冲区状态决定。
8.根据权利要求6所述的码率控制方法,其特征在于,
在所述使用每一所述帧的量化参数对对应帧的视频数据进行编码之前,所述码率控制方法还包括:
基于所述非关键帧的时域复杂度得到所述非关键帧的量化参数偏移度;
根据所述量化参数偏移度以及所述非关键帧的上一非关键帧的所述量化参数对所述非关键帧的量化参数进行调整。
9.根据权利要求5所述的码率控制方法,其特征在于,
在所述基于每一所述帧的帧目标比特得到每一所述帧的量化参数之后,所述码率控制方法还包括:
根据当前视频帧的帧目标比特和当前宏块复杂度计算所述当前宏块的宏块目标比特;
基于所述宏块目标比特得到所述当前宏块的量化参数;
所述使用每一所述帧的量化参数对对应帧的视频数据进行编码,包括:
使用所述当前宏块的量化参数对所述当前宏块的视频数据进行编码。
10.根据权利要求1所述的码率控制方法,其特征在于,
在所述对当前短期调控周期的复杂度进行预测之前,所述码率控制方法还包括:
计算所述当前短期调控周期所在的当前中期调控周期的初始调控比特;
基于所述当前中期调控周期的缓冲区状态,对所述初始调控比特进行更新,得到所述当前中期调控周期的目标比特。
11.根据权利要求10所述的码率控制方法,其特征在于,
在所述计算所述当前短期调控周期所在的当前中期调控周期的初始调控比特之前,所述码率控制方法还包括:
基于长期调控周期的平均码率和调控时长计算得到所述长期调控周期的总比特;
基于所述长期调控周期的缓冲区状态,对所述长期调控周期的总比特进行调整,得到所述长期调控周期的目标比特。
12.一种码率控制装置,其特征在于,所述码率控制装置包括存储器以及与所述存储器耦接的处理器;
其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如权利要求1至11任一项所述的码率控制方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储程序数据,所述程序数据在被计算机执行时,用以实现如权利要求1至11任一项所述的码率控制方法。
CN202311869002.XA 2023-12-29 2023-12-29 码率控制方法、码率控制装置以及计算机存储介质 Pending CN117956160A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311869002.XA CN117956160A (zh) 2023-12-29 2023-12-29 码率控制方法、码率控制装置以及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311869002.XA CN117956160A (zh) 2023-12-29 2023-12-29 码率控制方法、码率控制装置以及计算机存储介质

Publications (1)

Publication Number Publication Date
CN117956160A true CN117956160A (zh) 2024-04-30

Family

ID=90793736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311869002.XA Pending CN117956160A (zh) 2023-12-29 2023-12-29 码率控制方法、码率控制装置以及计算机存储介质

Country Status (1)

Country Link
CN (1) CN117956160A (zh)

Similar Documents

Publication Publication Date Title
Lee et al. Scalable rate control for MPEG-4 video
JP4390112B2 (ja) ビデオシーケンスのレートを制御する方法及び装置並びにビデオ符号化装置
JP5351040B2 (ja) 映像符号化規格に対応した映像レート制御の改善
US9071840B2 (en) Encoder with adaptive rate control for H.264
CN101069432B (zh) 用于视频编码器速率控制的量化参数的确定方法和设备
CN113766226A (zh) 图像编码方法、装置、设备及存储介质
WO2018113191A1 (zh) 一种码率控制方法及装置
US6879632B1 (en) Apparatus for and method of variable bit rate video coding
CN100574442C (zh) 基于图像直方图的码率控制方法
US20240040127A1 (en) Video encoding method and apparatus and electronic device
US20140092204A1 (en) Dynamic rate control algorithm for high definition video conferencing
US7480332B2 (en) Bit rate control method and apparatus for MPEG-4 video coding
CN112272299A (zh) 一种视频编码的方法、装置、设备和存储介质
RU2485711C2 (ru) Способ управления скоростью передачи битов видео, устройство управления скоростью передачи битов видео, машиночитаемый носитель записи, на котором записана программа управления скоростью передачи битов видео
CN117956160A (zh) 码率控制方法、码率控制装置以及计算机存储介质
KR100543608B1 (ko) 오브젝트 기반 비트율 제어방법 및 장치
Chi et al. Region-of-interest video coding by fuzzy control for H. 263+ standard
Tsai Rate control for low-delay video using a dynamic rate table
Bhattacharyya et al. Burstiness minimized rate control for high resolution H. 264 video conferencing
CN114513664B (zh) 视频帧编码方法、装置、智能终端及计算机可读存储介质
Arachchi et al. PSO based bit rate optimization for MPEG-1/2 video coding
KR100949755B1 (ko) 비디오 시퀀스의 레이트를 제어하는 방법 및 장치, 비디오부호화 장치
Overmeire et al. Constant quality video coding using video content analysis
Hsu et al. A predictive H. 263 bit-rate control scheme based on scene information
Chang et al. A two-layer characteristic-based rate control framework for low delay video transmission

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination