CN115914632A - 视频编码方法、解码方法、视频编解码器及计算机介质 - Google Patents
视频编码方法、解码方法、视频编解码器及计算机介质 Download PDFInfo
- Publication number
- CN115914632A CN115914632A CN202211117885.4A CN202211117885A CN115914632A CN 115914632 A CN115914632 A CN 115914632A CN 202211117885 A CN202211117885 A CN 202211117885A CN 115914632 A CN115914632 A CN 115914632A
- Authority
- CN
- China
- Prior art keywords
- bit
- rate
- current frame
- parameter
- distortion parameter
- 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
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了视频编码方法、解码方法、视频编解码器及计算机介质,该视频编码方法包括:获取当前帧的第一预编码比特,基于第一预编码比特计算当前帧的第一率失真参数;根据第一率失真参数计算预测帧的第二预编码比特;基于第二预编码比特与虚拟缓冲区的比特调控区间,对第一率失真参数进行更新;按照更新后的第一率失真参数计算当前帧的第一量化参数,并基于第一量化参数对当前帧进行编码,以得到当前帧的码流。通过本申请的方法,能够根据预测帧的第二预编码比特与虚拟缓冲区的比特调控区间对当前帧的第一率失真参数进行更新,保证当前帧的编码不会超出未来虚拟缓冲区的比特调控区间,提高视频编码的准确率和质量。
Description
技术领域
本申请涉及视频编解码技术领域,特别是涉及视频编码方法、解码方法、视频编解码器及计算机介质。
背景技术
码率控制在视频应用,特别是视频实时通信应用中扮演着重要的角色。码率控制的核心问题之一是估计编码视频序列的率失真函数。随着视频编码方案变的越来越复杂,为了在有限的带宽下尽可能实现流媒体视频的低延迟高质量播放,提出了一种利用R-λ模型进行码率控制的方法:通过对率失真函数进行建模,计算用于率失真优化的拉格朗日乘子λ,然后再建立λ到QP的映射关系。
然而,当场景变化或网络带宽波动时,视频的码率会发生波动并产生上溢或下溢的问题,影响视频编码的质量。
发明内容
为解决上述技术问题,本申请提供了一种视频编码方法、解码方法、视频编解码器及计算机介质。
为解决上述问题,本申请提供一种视频编码方法,包括:获取当前帧的第一预编码比特,基于所述第一预编码比特计算所述当前帧的第一率失真参数;根据所述第一率失真参数计算预测帧的第二预编码比特;基于所述第二预编码比特与虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新;按照更新后的所述第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码,以得到所述当前帧的码流。
其中,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新的步骤包括:判断所述第二预编码比特是否位于所述比特调控区间内;若所述第二预编码比特大于所述比特调控区间包含的最大值,则减小所述第一率失真参数;基于减小后的所述第一率失真参数计算所述预测帧的第三预编码比特,以使得所述第三预编码比特对应的所述未占用空间位于所述比特调控区间内。
其中,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新的步骤还包括:若所述未占用空间小于所述比特调控区间包含的最小值,则增大所述第一率失真参数。
其中,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新,包括:若所述未占用空间属于所述比特调控区间内,则不对所述第一率失真参数进行调整。
其中,所述获取当前帧的第一预编码比特,基于所述第一预编码比特计算所述当前帧的第一率失真参数的步骤包括:获取第一模型参数,基于所述第一模型参数和所述第一预编码比特计算所述当前帧的第一率失真参数;所述按照更新后的第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码之后,所述视频编码方法还包括:获取所述当前帧实际编码的第一实际分配比特和第二量化参数;基于所述第二量化参数计算所述当前帧实际编码的第三率失真参数;基于所述第三率失真参数、所述第一实际分配比特对所述第一模型参数进行更新。
其中,所述根据所述第一率失真参数计算预测帧的第二预编码比特的步骤包括:获取第二模型参数,所述第二模型参数包括所述预测帧的纹理信息;基于所述第二模型参数的纹理信息和所述第一率失真参数计算所述第二预编码比特。
其中,所述视频编码方法还包括:获取至少一个与所述当前帧相邻的编码帧的第二率失真参数,并获取所述编码帧对应的第二实际分配比特;基于所述第二率失真参数以及所述第二实际分配比特对所述第二模型参数进行更新。
其中,所述视频编码方法还包括:获取当前时间段的第四预编码比特,并获取在所述当前时间段内的第三实际分配比特;基于所述第四预编码比特与所述第三实际分配比特,对下一时间段的所述第四预编码比特进行更新。
为解决上述问题,本申请提供一种视频解码方法,包括:获取当前帧的码流;对所述码流进行解码,以得到所述当前帧的第一量化参数;基于所述第一量化参数计算所述当前帧的第一率失真参数,所述第一率失真参数由所述当前帧相邻的预测帧的预编码比特以及虚拟缓冲区的比特调控区间决定;基于所述第一率失真参数计算所述当前帧的预解码比特,按照所述预解码比特对所述当前帧进行解码,以得到所述当前帧。
为解决上述问题,本申请提供一种视频编解码器,包括获取模块、计算模块、更新模块和编码模块。所述获取模块用于获取当前帧的第一预编码比特,并基于所述第一预编码比特计算所述当前帧的第一率失真参数;所述计算模块,用于根据所述第一率失真参数计算预测帧的第二预编码比特;所述更新模块用于基于所述第二预编码比特与虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新;所述编码模块用于按照更新后的第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码,以得到所述当前帧的码流。
为解决上述问题,本申请提供一种视频编解码器,包括处理器以及与所述处理器连接的存储器,其中,所述存储器中存储有程序数据,所述处理器调取所述存储器存储的所述程序数据,以执行如上所述的视频编码方法和/或视频解码方法。
为解决上述问题,本申请提供一种计算机可读存储介质,存储有程序指令,所述程序指令被执行以实现如上所述的视频编码方法和/或视频解码方法。
本申请提出了视频编码方法、解码方法、视频编解码器及计算机介质,该视频编码方法包括:获取当前帧的第一预编码比特,基于第一预编码比特计算当前帧的第一率失真参数;根据第一率失真参数计算预测帧的第二预编码比特;基于第二预编码比特与虚拟缓冲区的比特调控区间,对第一率失真参数进行更新;按照更新后的第一率失真参数计算当前帧的第一量化参数,并基于第一量化参数对当前帧进行编码,以得到当前帧的码流。通过本申请的方法,能够根据预测帧的第二预编码比特与虚拟缓冲区的比特调控区间,对当前帧的第一率失真参数进行更新,以保证当前帧的第一率失真参数不会超出未来虚拟缓冲区的比特调控区间,从而保证视频码率稳定,提高视频编码的准确率和质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的视频编码方法的一实施例的流程图;
图2是本申请提供的视频编码方法的另一实施例的流程图;
图3是本申请提供的视频编码方法的又一实施例的流程图;
图4是本申请提供的视频解码方法的一实施例的流程示意图;
图5是本申请提供的视频编解码器的一实施例的框架示意图;
图6是本申请提供的视频编解码器的另一实施例的框架示意图;
图7是本申请提供的计算机可读存储介质的一实施例的框架示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动情况下所获得的所有其他实施例,均属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
视频编解码技术旨在将对采集到的视频信号压缩成不同的标准格式的数据,用于传输或存储。现有的视频编解码的标准包括但不局限于H.264/AVC、H.265/HEVC、H.266/VVC、VP8/VP9/AV1等。
码率控制是视频编码标准的关键技术之一,通过对编码过程中的编码参数进行调节,可以对视频数据进行数据压缩,进而控制各个时刻的码率大小。视频中的每一幅图片被称为一帧,一帧压缩后的大小与编码器在编码过程中的参数相关,这些参数包括帧的类型、运动信息、量化参数(QP)等。在这些参数中,量化参数(QP)控制的是有损量化处理过程中损失数据量的大小,对编码帧的大小有直接影响。
率失真理论在数据压缩中,为数据压缩的性能提供理论极限和比较标准,依靠率失真理论提高视频压缩质量的方法被称为率失真优化(Rate-distortion optimization,RDO)。R-λ模型作为码率控制模型中的一种,使用的就是率失真优化,通过R-λ模型构建了分配比特(R)与率失真参数(λ)之间的数学关系模型,再通过率失真参数(λ)与量化参数(QP)之间的映射关系,求出量化参数QP,以根据量化参数QP控制码率的大小。
为了解决视频码率上溢或下溢的问题,本申请首先提出了一种视频编码方法,该视频编码方法应用于一种视频编解码器中,其中,本申请的视频编解码器包括视频编码器和视频解码器;视频编解码器可以为服务器,也可以为由服务器和本地终端相互配合的系统。相应地,电子终端包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和本地终端中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的视频编码方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
请参见图1,图1是本申请提供的视频编码方法的一实施例的流程图。如图1所示,本实施例的视频编码方法包括以下步骤:
步骤S11:获取当前帧的第一预编码比特,基于第一预编码比特计算当前帧的第一率失真参数。
在对视频编码时,获取时间上连续间隔的多个图像帧,并获取当前图像帧的第一预编码比特与码率相关参数,并根据当前帧的第一预编码比特和码率相关参数计算当前帧的第一率失真参数。其中,率失真参数为率失真曲线上某一点切线斜率的绝对值,以通过当前帧的率失真参数对当前帧进行失真控制。
步骤S12:根据第一率失真参数计算预测帧的第二预编码比特,其中,预测帧与当前帧相邻,并且预测帧为未编码帧。
具体的,预测帧与当前帧相邻,预测帧为当前帧之后的若干个未编码的图像帧。可以理解为,预测帧为在时间序列上与当前帧相邻的视频帧,预测帧与当前帧具有较强的时域相关性,并且预测帧与当前帧一般具有相似的纹理信息,因此可以根据当前帧的第一率失真参数以及预测帧的时空域纹理信息,计算预测帧的第二预编码比特。
步骤S13:基于第二预编码比特与虚拟缓冲区的比特调控区间,对第一率失真参数进行更新。
具体的,视频编解码器设置有虚拟缓冲区,虚拟缓冲区用于平滑编码时的输出码流,防止码流抖动过大,避免出现比特上溢或下溢的问题。比特上溢会导致码流丢失,比特下溢会导致视频播放卡顿,影响用户的使用体验。
为此,本申请通过预测帧的第二预编码比特与虚拟缓冲区的比特调控区间,判断以当前帧的第一率失真参数进行编码是否导致在对预测帧进行编码时虚拟缓冲区的未占用空间超出比特调控区间。若超出比特调控区间,则按照预设规则对第一率失真参数进行更新;若未超出比特调控区间,则不对第一率失真参数进行更新。
其中,预测帧可以为连续的多个未编码帧,则根据多个预测帧的第二预编码比特获取预测帧的平均预编码比特,并根据平均预编码比特与虚拟缓冲区的比特调控区间,对第一率失真参数进行更新。
步骤S14:按照更新后的第一率失真参数计算当前帧的第一量化参数,并基于第一量化参数对当前帧进行编码,以得到当前帧的码流。
当预测帧的第二预编码比特超出虚拟缓冲区的比特调控区间时,对第一率失真参数进行更新,并按照更新后的第一率失真参数计算当前帧的第一量化参数。
具体的,当前帧的第一率失真参数与第一量化参数之间存在映射关系,可以通过率失真参数与量化参数之间的映射关系以及更新后的第一率失真参数计算第一量化参数,示例性地,率失真参数与量化参数之间的映射关系可以通过如下公式体现:
Q_P=α·ln(λ)+β
其中,α、β为关系参数,ln为以e为底的对数。
当预测帧的第二预编码比特在虚拟缓冲区的比特调控区间时,不对第一率失真参数进行更新,按照当前帧的第一率失真参数计算第一量化参数,并基于第一量化参数对当前帧进行编码,以得到当前帧的码流。
因此,在本申请实施例中,能够根据预测帧的第二预编码比特与虚拟缓冲区的比特调控区间,对当前帧的第一率失真参数进行更新,以保证当前帧的第一率失真参数不会导致在对预测帧进行编码时虚拟缓冲区的未占用空间超出比特调控区间,避免出现比特上溢或下溢的问题,从而保证视频比特稳定,提高视频编码的准确率和质量。
请参见图2,图2是本申请提供的视频编码方法的另一实施例的流程图。如图2所示,步骤S13进一步包括以下步骤:
步骤S21:基于第二预编码比特获取虚拟缓冲区的未占用空间。
在虚拟缓冲区中预设有目标比特,第二预设分配比特为预测帧实际编码时流入虚拟缓冲区的比特值,目标比特为预测帧实际编码时流出的虚拟缓冲区的比特值。在获取预测帧的第二预编码比特后,获取根据第二预编码比特进行编码时对应的虚拟缓冲区的未占用空间。
步骤S22:判断未占用空间是否位于比特调控区间内。
获取根据第二预编码比特进行编码时对应的虚拟缓冲区的未占用空间,判断未占用空间是否位于虚拟缓冲区的比特调控区间内。具体的,预测帧实际编码时虚拟缓冲区的未占用空间大小为当前虚拟缓冲区的未占用空间减去流出的第二预设分配比特再加上流入的目标比特所获得的数值,以根据第二预编码比特判断虚拟缓冲区的未占用空间大小是否位于虚拟缓冲区的比特调控区间内。
示例性地,虚拟缓冲区的比特调控区间的最大值为800万比特,虚拟缓冲区的比特调控区间的最小值为400万比特,当前状况下虚拟缓冲区的未占用空间大小为700万比特,虚拟缓冲区的目标比特值为209万比特,计算得到的第二预设分配比特为220万比特,则预测帧实际编码时虚拟缓冲区的未占用空间大小为700-220+209=689万比特,位于虚拟缓冲区的比特调控区间内,无需对第一率失真参数进行更新。
步骤S23:若未占用空间大于比特调控区间包含的最大值,则减小第一率失真参数。
在未占用空间大于比特调控区间的最大值时,则按照第一预设规则减小第一率失真参数。例如,在当前帧的第一率失真参数为200、预测帧的第二预设分配比特为20万比特时,则预测帧实际编码时虚拟缓冲区的未占用空间大小为700-20+209=889万比特,超过了比特调控区间的最大值,此时,可以按照第一预设规则减小第一率失真参数。
其中,在一实施方式中,第一预设规则可以是对第一率失真参数进行预设数值的减法或者除法的运算,例如,可以对当前帧的第一率失真参数减去一个固定数值,以更新当前帧的第一率失真参数。在另一实施方式中,第一预设规则还可以根据第二预编码比特超出比特调控区间的最大值的大小选择第一率失真参数减少的数值,例如,未占用空间超出比特调控区间的最大值设置有多个区间,第一区间为800-900,第二区间为900-1000,第三区间为1000-1100等,当虚拟缓冲区的未占用空间大小为889万比特并落在第一区间时,预设数据可以设置为40,当虚拟缓冲区的未占用空间大小落在第二区间时,预设数据可以设置为80。第一预设规则还可以是其他能够减小第一率失真参数的规则,在此不做具体限定。
步骤S24:基于减小后的第一率失真参数计算预测帧的第三预编码比特,以使得第三预编码比特对应的未占用空间位于比特调控区间内。
获取减小后的第一率失真参数,重新计算预测帧的第三预编码比特,以使得第三预编码比特对应的未占用空间能够位于虚拟缓冲区的比特调控区间内。例如,在预测帧实际编码时虚拟缓冲区的未占用空间大小为700-20+209=889万比特超过了比特调控区间的最大值时,第一率失真参数减小为150,并以此计算出预测帧的第三预编码比特为122万比特,此时,预测帧以第三预编码比特进行编码时虚拟缓冲区的未占用空间大小为700-122+209=787万比特,此时,预测帧的第三预编码比特对应的未占用空间位于虚拟缓冲区的比特调控区间内,并根据减小后的第一率失真参数对当前帧进行编码。
示例性地,在将第一率失真参数减小为198,计算出预测帧的第三预编码比特为22万比特时,预测帧实际编码时虚拟缓冲区的未占用空间大小为700-22+209=887万比特,仍大于比特调控区间的最大值,则继续减小第一率失真参数,直到第三预编码比特对应的未占用空间能够位于虚拟缓冲区的比特调控区间内。
因此,在本申请实施例中,在第二预编码比特对应的未占用空间大于比特调控区间的最大值时按照第一预设规则减小第一率失真参数,以根据基于减小后的第一率失真参数计算的预测帧的第三预编码比特,第三预编码比特对应的未占用空间能够位于虚拟缓冲区的比特调控区间内,以保证当前帧的第一率失真参数不会导致在对预测帧进行编码时虚拟缓冲区的未占用空间超出比特调控区间。
可选地,步骤S13进一步包括以下步骤:若未占用空间小于比特调控区间包含的最小值,则增大第一率失真参数。
具体的,当第二预编码比特对应的未占用空间小于比特调控区间的最小值时,则按照第二预设规则增大第一率失真参数,并基于增大后的第一率失真参数再次计算预测帧的预编码比特,以使得预测帧的预编码比特对应的虚拟缓冲区的未占用空间位于虚拟缓冲区的比特调控区间内。该步骤与步骤S22类似,在此不再赘述。
可选地,若第二预编码比特对应的未占用空间属于比特调控区间内,则不对第一率失真参数进行调整,按照第一预编码比特对当前帧进行编码。
进一步地,当前帧的第一预编码比特与第一率失真参数的关系通过第一模型确定,当前帧的第一率失真参数与预测帧的第二预编码比特的关系通过第二模型确定。
可选地,步骤S11还包括以下步骤:获取第一模型参数,基于第一模型参数和第一预编码比特计算第一率失真参数。
具体的,在对视频编码时,为了获取当前帧的第一率失真参数,需要根据视频的内容特性建立分配比特到率失真参数、率失真参数到第一量化参数的第一模型,并获取第一模型的初始化的第一模型参数。具体的,第一模型包括但不局限于R-λ模型,第一模型通过采用双曲线函数对率失真函数进行建模,并对率失真函数进行求导系数获得分配比特与率失真参数关系,如下式所示:
λ_1=α_1·〖R_1〗^(β_1);
其中,λ_1为当前帧的第一率失真参数;R_1为当前帧的第一预编码比特;α_1为与视频内容相关的第一参数;β_1为与视频内容相关的第二参数。
示例性地,在α的初始值为3.2003,β_1的初始值为-1.367时,第一预编码比特可以为0.4,则此时第一率失真参数的计算结果为λ_1=α_1·〖R_1〗^(β_1)=3.2003*(0.4)-1.367=11.2。
可以理解的,第一模型参数包括第一参数和第二参数,第一参数和第二参数与视频的内容特性以及序列特性相关。
请参见图3,图3是本申请提供的视频编码方法的又一实施例的流程图。如图3所示,在本实施例中,步骤S14之后,视频编码方法还包括以下步骤:
步骤S31:获取当前帧实际编码的第一实际分配比特和第二量化参数。
具体的,第一实际分配比特和第二量化参数为当前帧实际编码时从视频编解码器的编码信息获取的。而第一量化参数为根据更新后的第一率失真参数计算得到的,第一量化参数用于指导视频编解码器对当前帧进行编码,但是在实际编码过程中,由于规则、编码过程的复杂多变,实际编码所使用的第二量化参数会根据对第一量化参数进行细微调整所得,即第二量化参数可以为第一量化参数,也可以根据第一量化参数进行调整得到,在此,对第二量化参数不做具体限定。
步骤S32:基于第二量化参数计算当前帧实际编码的第三率失真参数。
获取当前帧实际编码的第一实际分配比特和第二量化参数后,可以根据量化参数与率失真参数的映射关系计算当前帧实际编码的第三率失真参数。
步骤S33:基于第三率失真参数、第一实际分配比特对第一模型参数进行更新。
基于当前帧实际编码的第三率失真参数以及第一实际分配比特,对第一模型参数进行更新。
具体的,基于当前帧的第一实际分配比特计算用于比较的第四率失真参数,如下式所示:
λ_comp=α_old·〖R〗^(〖βold〗);
其中,λ_comp为第四率失真参数;α_old为当前帧的第一参数;β_old为当前帧的第二参数;R为当前帧的第一实际分配比特。
基于第三率失真参数、第四率失真参数对第一参数进行更新,如下式所示:
α_new=α_old+θ_α*(ln(λ_real)-ln(λ_comp))*α_old;
其中,θ_α为用于调节第一参数的收敛速度的固定系数;λ_real为第三率失真参数。
基于第三率失真参数、第一实际分配比特以及计算的用于比较的第四率失真参数对第二参数进行更新,如下式所示:
β_new=β_old+θ_β*(ln(λ_real)-ln(λ_comp))*lnR;
其中,θ_β为用于调节第二参数的收敛速度的固定系数。
在本申请实施例中,通过对第一模型参数进行更新,使得第一模型与视频的内容特性更贴合,第一率失真参数更能准确表达,进而提高视频编码的准确率。
可选地,步骤S12还包括以下步骤:获取第二模型参数,第二模型参数包括预测帧的纹理信息;基于第二模型参数的纹理信息和第一率失真参数计算第二预编码比特。
由于预测帧与当前帧具有较强的时域相关性以及相似的纹理信息,因此,可以根据第二模型参数的纹理信息构建第二模型,第二模型用于对预测帧的预编码比特进行预测。其中,第二模型包括但不局限于λ-R模型,公式如下所示:
R_2=α_2·〖λ_2〗^(β_2);
其中,R_2为预测帧的第二预编码比特;λ_2为当前帧的第一率失真参数;α_2为第三参数;β_2为第四参数。
示例性地,在α_2的初始值为3.2003,β_2的初始值为-1.367时,第一率失真参数可以为24,则此时第二预编码比特的计算结果为R_2=α_2·〖λ_2〗^(β_2)=3.2003*〖(24)〗^(-1.367)=0.0415。
第二模型参数包括第三参数和第四参数,第三参数和第四参数与预测帧的纹理信息有关。
可选地,本实施例的视频编码方法还包括:获取至少一个与当前帧相邻的编码帧的第二率失真参数,并获取编码帧对应的第二实际分配比特;基于第二率失真参数以及第二实际分配比特对第二模型参数进行更新。
具体的,与当前帧相邻的编码帧和预测帧对应,可以理解为,编码帧为当前帧之前已编码的至少一个连续的编码帧,预测帧为当前帧之后至少一个连续的未编码帧,编码帧与预测帧的数量对应。本实施例通过选取与预测帧对应的编码帧对预测帧的第二模型参数进行更新,具体的更新公式与步骤S35的类似,在此不再赘述。
因此,本实施例可以根据预测帧的纹理信息构建第二模型,通过第二模型获取预测帧的第二预编码比特,并根据与当前帧相邻的编码帧对预测帧的第二模型参数进行更新,以使得第二模型参数更贴合预测帧的纹理信息,第二模型的预测效果更好,提高视频编码的准确率。
可选地,在一种实施方式中,用于确定当前帧的第一预编码比特与第一率失真参数的关系的第一模型和用于确定当前帧的第一率失真参数与预测帧的第二预编码比特的关系的第二模型可以为一个模型,此时,第一模型参数和第二模型参数相等;在其他实施方式中,第一模型和第二模型为不同的模型,此时对第一模型参数和第二模型参数分别进行更新,具体的更新方式如上述实施例所述,在此不再赘述。
可选地,本实施例的视频编码方法还包括:获取当前时间段的第四预编码比特,并获取在当前时间段内的第三实际分配比特;基于第四预编码比特与第三实际分配比特,对下一时间段的第四预编码比特进行更新。
具体的,本实施例的视频编解码器按照每个时间段进行比特分配,按照时间序列设置有多个时间段。其中,第四预编码比特为视频编解码器预设的当前时间段内的预分配的比特数,视频编解码器按照第四预编码比特对每一时间段编码的总比特进行限制,用于指导时间序列的比特分配。
第三实际分配比特为当前时间段实际编码的比特数,获取第四预编码比特与第三实际分配比特,并根据第四预编码比特与第三实际分配比特对下一时间段的第四预编码比特进行更新。
示例性地,当前时间段的第四预编码比特为4194304bit,如果在当前时间段内的第三实际分配比特为4294304bit,则当前时间段比预设的第四预编码比特多编码了10万比特,则在进行下一时间段的编码时,应对第四预编码比特进行更新,下一时间段的第四预编码比特应该为4194304-100000=4094304bit。
因此,本申请实施例按照时间序列对每一时间段的第四预编码比特进行调整,将当前时间段编码剩余的比特或超出的比特叠加至下一时间段内,保证比特分配的精准性,提高视频编码的准确率。
下面继续介绍视频解码的过程,需要说明的是,上述任一实施例所述的视频编码过程和视频解码过程实质上互为逆过程,即在上述实施例介绍的编码过程中所采用的编码技术,通过逆工程的方式可以推导出解码过程中所采用的解码技术,在此不一一列举。
请参见图4,图4是本申请提供的视频解码方法的一实施例的流程示意图。如图4所示,该视频解码方法包括以下步骤:
步骤S41:获取当前帧的码流。
在本申请实施例中,当前帧的码流为经过上述任一实施方式的视频编码方法所获得的编码码流。
步骤S42:对码流进行解码,以得到当前帧的第一量化参数。
基于编码信息,对当前帧的码流进行解码,以获得当前帧的第一量化参数。
步骤S43:基于第一量化参数计算当前帧的第一率失真参数,第一率失真参数由当前帧相邻的预测帧的预编码比特以及虚拟缓冲区的比特调控区间决定。
基于当前帧的第一量化参数,以及量化参数与率失真参数的映射关系,计算当前帧的第一率失真参数,第一率失真参数由与当前帧相邻的预测帧的预编码比特以及虚拟缓冲区的比特调控区间决定。预测帧的预编码比特为在对当前帧进行编码时,基于预测帧与当前帧相似的纹理信息,所计算的预测帧的预编码比特。
步骤S44:基于第一率失真参数计算当前帧的预解码比特,按照预解码比特对当前帧进行解码,以得到当前帧。
基于当前帧的第一率失真参数,计算当前帧的预解码比特,并按照计算的预解码比特对当前帧进行解码,以得到当前帧。请参见图5,图5是本申请提供的视频编解码器的一实施例的框架示意图。如图5所示,该视频编解码器100包括处理器101以及与处理器101连接的存储器102,其中,存储器102中存储有程序数据,处理器101调取存储器102存储的程序数据,以执行上述的视频编码方法以及视频解码方法。
可选地,在一实施例中,处理器101用于执行程序数据以实现如下方法:获取当前帧的第一预编码比特,基于第一预编码比特计算当前帧的第一率失真参数;根据第一率失真参数计算预测帧的第二预编码比特;基于第二预编码比特与虚拟缓冲区的比特调控区间,对第一率失真参数进行更新;按照更新后的第一率失真参数计算当前帧的第一量化参数,并基于第一量化参数对当前帧进行编码,以得到当前帧的码流。
可选地,在另一实施例中,处理器101用于执行程序数据以实现如下方法:获取当前帧的码流;对码流进行解码,以得到当前帧的第一量化参数;基于第一量化参数计算当前帧的第一率失真参数,第一率失真参数由当前帧相邻的预测帧的预编码比特以及虚拟缓冲区的比特调控区间决定;基于第一率失真参数计算当前帧的预解码比特,按照预解码比特对当前帧进行解码,以得到当前帧。
其中,处理器101还可以称为CPU(Central Processing Unit,中央处理单元)。处理器101可能是一种电子芯片,具有信号的处理能力。处理器101还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器102可以为内存条、TF卡等,可以存储视频编解码器100中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器102中。它根据处理器101指定的位置存入和取出信息。有了存储器102,视频编解码器100才有记忆功能,才能保证正常工作。视频编解码器100的存储器102按用途可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。
请参见图6,图6是本申请提供的视频编解码器的另一实施例的框架示意图。如图6所示,本申请还提供了另一种视频编解码器100,该视频编解码器100包括获取模块103、计算模块104、更新模块105和编码模块106。
获取模块103用于获取当前帧的第一预编码比特,并基于当前帧的第一预编码比特计算当前帧的第一率失真参数;计算模块104用于根据当前帧的第一率失真参数计算预测帧的第二预编码比特;更新模块105用于基于第二预编码比特与虚拟缓冲区的比特调控区间的大小关系,对第一率失真参数进行更新;编码模块106用于按照更新后的第一率失真参数计算当前帧的第一量化参数,并基于第一量化参数对当前帧进行编码。
其中,在本申请的一个实施例,视频编解码器100中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。
请参见图7,图7是本申请提供的计算机可读存储介质的一实施例的框架示意图。如图7所示,该计算机可读存储介质110中存储有能够实现上述所有方法的程序指令111。
在本申请各个实施例中的各功能单元集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读存储介质110中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机可读存储介质110在一个程序指令111中,包括若干指令用以使得一台计算机设备(可以是个人计算机,系统服务器,或者网络设备等)、电子设备(例如MP3、MP4等,也可以是手机、平板电脑、可穿戴设备等移动终端,也可以是台式电脑等)或者处理器(processor)以执行本申请各个实施方式方法的全部或部分步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质110(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机可读存储介质110实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机可读存储介质110到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的程序指令111产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机可读存储介质110也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储介质110中的程序指令111产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机可读存储介质110也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的程序指令111提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种视频编码方法,其特征在于,包括:
获取当前帧的第一预编码比特,基于所述第一预编码比特计算所述当前帧的第一率失真参数;
根据所述第一率失真参数计算预测帧的第二预编码比特,其中,所述预测帧与所述当前帧相邻,并且所述预测帧为未编码帧;
基于所述第二预编码比特与虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新;
按照更新后的所述第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码,以得到所述当前帧的码流。
2.根据权利要求1所述的视频编码方法,其特征在于,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新,包括:
基于所述第二预编码比特获取所述虚拟缓冲区的未占用空间;
判断所述未占用空间是否位于所述比特调控区间内;
若所述未占用空间大于所述比特调控区间包含的最大值,则减小所述第一率失真参数;
基于减小后的所述第一率失真参数计算所述预测帧的第三预编码比特,以使得所述第三预编码比特对应的所述未占用空间位于所述比特调控区间内。
3.根据权利要求2所述的视频编码方法,其特征在于,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新,还包括:
若所述未占用空间小于所述比特调控区间包含的最小值,则增大所述第一率失真参数。
4.根据权利要求2所述的视频编码方法,其特征在于,所述基于所述第二预编码比特与所述虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新,包括:
若所述未占用空间属于所述比特调控区间内,则不对所述第一率失真参数进行调整。
5.根据权利要求1所述的视频编码方法,其特征在于,所述获取当前帧的第一预编码比特,基于所述第一预编码比特计算所述当前帧的第一率失真参数,包括:
获取第一模型参数,基于所述第一模型参数和所述第一预编码比特计算所述第一率失真参数;
所述按照更新后的第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码之后,所述视频编码方法还包括:
获取所述当前帧实际编码的第一实际分配比特和第二量化参数;
基于所述第二量化参数计算所述当前帧实际编码的第三率失真参数;
基于所述第三率失真参数、所述第一实际分配比特对所述第一模型参数进行更新。
6.根据权利要求1所述的视频编码方法,其特征在于,所述根据所述第一率失真参数计算预测帧的第二预编码比特,包括:
获取第二模型参数,所述第二模型参数包括所述预测帧的纹理信息;
基于所述第二模型参数的纹理信息和所述第一率失真参数计算所述第二预编码比特。
7.根据权利要求6所述的视频编码方法,其特征在于,所述视频编码方法还包括:
获取至少一个与所述当前帧相邻的编码帧的第二率失真参数,并获取所述编码帧对应的第二实际分配比特;
基于所述第二率失真参数以及所述第二实际分配比特对所述第二模型参数进行更新。
8.根据权利要求1所述的视频编码方法,其特征在于,所述视频编码方法还包括:
获取当前时间段的第四预编码比特,并获取在所述当前时间段内的第三实际分配比特;
基于所述第四预编码比特与所述第三实际分配比特,对下一时间段的所述第四预编码比特进行更新。
9.一种视频编解码器,其特征在于,所述视频编解码器包括:
获取模块,用于获取当前帧的第一预编码比特,并基于所述第一预编码比特计算所述当前帧的第一率失真参数;
计算模块,用于根据所述第一率失真参数计算预测帧的第二预编码比特;
更新模块,用于基于所述第二预编码比特与虚拟缓冲区的比特调控区间,对所述第一率失真参数进行更新;
编码模块,用于按照更新后的第一率失真参数计算所述当前帧的第一量化参数,并基于所述第一量化参数对所述当前帧进行编码,以得到所述当前帧的码流。
10.一种视频解码方法,其特征在于,包括:
获取当前帧的码流;
对所述码流进行解码,以得到所述当前帧的第一量化参数;
基于所述第一量化参数计算所述当前帧的第一率失真参数,所述第一率失真参数由所述当前帧相邻的预测帧的预编码比特以及虚拟缓冲区的比特调控区间决定;
基于所述第一率失真参数计算所述当前帧的预解码比特,按照所述预解码比特对所述当前帧进行解码,以得到所述当前帧。
11.一种视频编解码器,其特征在于,包括处理器以及与所述处理器连接的存储器,其中,所述存储器中存储有程序数据,所述处理器调取所述存储器存储的所述程序数据,以执行如权利要求1-8任一项所述的视频编码方法和/或权利要求10所述的视频解码方法。
12.一种计算机可读存储介质,其特征在于,存储有程序指令,所述程序指令被执行以实现如权利要求1-8任一项所述的视频编码方法和/或权利要求10所述的视频解码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117885.4A CN115914632A (zh) | 2022-09-14 | 2022-09-14 | 视频编码方法、解码方法、视频编解码器及计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117885.4A CN115914632A (zh) | 2022-09-14 | 2022-09-14 | 视频编码方法、解码方法、视频编解码器及计算机介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914632A true CN115914632A (zh) | 2023-04-04 |
Family
ID=86479384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211117885.4A Pending CN115914632A (zh) | 2022-09-14 | 2022-09-14 | 视频编码方法、解码方法、视频编解码器及计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914632A (zh) |
-
2022
- 2022-09-14 CN CN202211117885.4A patent/CN115914632A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101644208B1 (ko) | 이전에 계산된 모션 정보를 이용하는 비디오 인코딩 | |
KR101643790B1 (ko) | 적응적 비디오 스트리밍용의 가변 비트 레이트 및 동적 해상도를 이용한 다중 비트 레이트 비디오 인코딩 | |
US20050254578A1 (en) | Model based bit rate control for a macroblock encoder | |
CN107846590B (zh) | 一种视频编码的方法和视频编码器 | |
CN109862359A (zh) | 基于分层b帧的码率控制方法、装置和电子设备 | |
US9560386B2 (en) | Pyramid vector quantization for video coding | |
CN101518088A (zh) | 针对有效速率控制和增强视频编码质量的ρ域帧级比特分配的方法 | |
US9955168B2 (en) | Constraining number of bits generated relative to VBV buffer | |
WO2021129007A1 (zh) | 视频码率的确定方法、装置、计算机设备及存储介质 | |
US20150172680A1 (en) | Producing an Output Need Parameter for an Encoder | |
US20120076202A1 (en) | System and method for frame level bit rate control without pre-analysis | |
WO2018095890A1 (en) | Methods and apparatuses for encoding and decoding video based on perceptual metric classification | |
US20240040127A1 (en) | Video encoding method and apparatus and electronic device | |
CN112272299A (zh) | 一种视频编码的方法、装置、设备和存储介质 | |
CN113473131A (zh) | 视频编码码率动态调节方法、装置、电子设备及存储介质 | |
Pang et al. | An analytic framework for frame-level dependent bit allocation in hybrid video coding | |
RU2485711C2 (ru) | Способ управления скоростью передачи битов видео, устройство управления скоростью передачи битов видео, машиночитаемый носитель записи, на котором записана программа управления скоростью передачи битов видео | |
CN115428451A (zh) | 视频编码方法、编码器、系统以及计算机存储介质 | |
KR20040007818A (ko) | 동영상 부호화를 위한 dct연산량 조절 방법 및 그 장치 | |
CN115914632A (zh) | 视频编码方法、解码方法、视频编解码器及计算机介质 | |
JP2017123545A (ja) | 映像符号化方法、映像符号化装置及び映像符号化プログラム | |
CN112243129B (zh) | 视频数据处理方法、装置、计算机设备及存储介质 | |
Sanz-Rodríguez et al. | A rate control algorithm for HEVC with hierarchical GOP structures | |
CN112584143A (zh) | 一种视频编码方法、装置、系统及计算机可读存储介质 | |
CN114513664B (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 |