CN112752103B - 码率控制的方法与装置 - Google Patents
码率控制的方法与装置 Download PDFInfo
- Publication number
- CN112752103B CN112752103B CN201911063042.9A CN201911063042A CN112752103B CN 112752103 B CN112752103 B CN 112752103B CN 201911063042 A CN201911063042 A CN 201911063042A CN 112752103 B CN112752103 B CN 112752103B
- Authority
- CN
- China
- Prior art keywords
- current
- code rate
- frame
- coding layer
- layer
- 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.)
- Active
Links
Images
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/124—Quantisation
-
- 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/146—Data rate or code amount at the encoder output
-
- 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/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种码率控制的方法与装置,该方法包括:获取当前编码层上的当前帧的实际码率;根据当前帧的实际码率,确定当前编码层当前的权重;基于剩余码率与当前编码层当前的权重,确定当前编码层当前的目标码率。通过当前编码层上当前帧的实际码率来确定当前编码层当前的权重,进而是基于当前编码层上当前帧的实际码率来确定当前编码层当前的目标码率,因此,本申请在为层分配目标码率的过程中考虑了编码器的特性,从而,相对于现有的码率控制方案,可以提高码率控制算法的通用性。
Description
技术领域
本申请涉及视频编码技术领域,具体涉及一种码率控制的方法与装置。
背景技术
在视频编码中,码率控制具有重要作用,它用于实现对码流大小的控制,以使输出码率符合预期,从而可以保证码流的稳定传输,减少由于码率波动引起的视频卡顿等现象。码率控制大致分为两步,第一步分配目标码率;第二步基于目标码率进行编码,例如通过调整编码参数以使实际编码比特与所分配的目标码率吻合。
当前技术中,通常一个码率控制算法只适用于特定的编码器,导致码率控制方案的通用性较低。
发明内容
本申请提供一种码率控制的方法与装置,可以提高码率控制算法对于编码器的通用性。
第一方面,提供一种码率控制的方法,所述方法包括:获取当前编码层上的当前帧的实际码率;根据所述当前帧的实际码率,确定所述当前编码层当前的权重;基于剩余码率与所述当前编码层当前的权重,确定所述当前编码层当前的目标码率。
第二方面,提供一种码率控制的装置,所述装置包括:获取单元,用于获取当前编码层上的当前帧的实际码率;确定单元用于:根据所述当前帧的实际码率,确定所述当前编码层当前的权重;基于剩余码率与所述当前编码层当前的权重,确定所述当前编码层当前的目标码率。
第三方面,提供一种编码装置,所述编码装置包括存储器和处理器,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,并且对所述存储器中存储的指令的执行使得,第一方面提供的方法被执行。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得,第一方面提供的方法被执行。
例如,所述计算机可以为编码器。
在本申请中,通过当前编码层上当前帧的实际码率来确定当前编码层当前的权重,进而是基于当前编码层上当前帧的实际码率来确定当前编码层当前的目标码率,因此,本申请在为层分配目标码率的过程中考虑了编码器的特性,从而,相对于现有的码率控制方案,可以提高码率控制算法的通用性。
附图说明
图1是视频编码的架构示意图。
图2是图像组(GOP)级的分层编码的示意图。
图3是本申请实施例提供的码率控制的方法的示意性流程图。
图4是本申请实施例提供的码率控制的方法的另一示意性流程图。
图5是本申请实施例提供的编码装置的示意性框图。
图6是本申请实施例提供的编码装置的另一示意性框图。
具体实施方式
为了便于理解本申请的方案,下面首先介绍视频编码架构。
图1是视频编码的架构示意图。如图1所示,视频编码过程包括预测、变换、码率控制、量化和熵编码等步骤。
预测的目的在于,利用预测块信息去除当前待编码图像块的冗余信息。预测包括帧内预测和帧间预测两种类型。帧内预测是利用本帧图像的信息获得预测块数据。帧间预测利用参考帧的信息获得预测块数据。仅使用帧内预测模式的帧被称为I帧;可以使用前向参考帧进行帧间预测的帧称为P帧;可以拥有双向参考帧的帧称为B帧。
变换的目的在于去除图像块的冗余信息。
码率控制的目的在于,通过动态地调整编码参数,使得实际编码比特与目标码率相吻合。
作为示例而非限定,码率控制算法可大致分为以下两步。
第一步,为编码单元分配目标码率。
第二步,在编码单元的编码过程中,通过动态调整编码参数,以使得实际编码比特与目标编码比特(即目标码率)相吻合。
其中,动态调整的编码参数包括量化参数等编码参数。
量化的目的在于,根据码率控制得到的量化参数获得量化系数。
熵编码的目的在于,对量化系数进行熵编码,得到编码比特流。
编码端在完成图像编码后,可以将熵编码得到的编码比特流以及编码模式信息(如帧内预测模式、运动矢量信息等信息)发送到解码端。
在解码端,接收编码端发送的编码比特流之后,通过与视频编码相反的过程进行视频解码。
应理解,图1仅为示例而非限定,在实际应用中,根据应用需求,视频编码过程还可以包括反变换、反量化等操作,本申请对此不作限定。
当前技术中,通常一个码率控制算法只适用于特定的编码器,导致码率控制方案的通用性较低。
本申请提出一种码率控制的方案,通过在码率控制过程中综合考虑编码器的特性以及层的特性,从而可以提高码率控制算法的通用性。
本申请实施例中提及的层(例如,图3所示实施例中的第一层)表示,分层编码中层的概念。
图2示出了分层编码的示意图。在图2中,以分层图像组(group of pictures,GOP)级的分层编码为例进行描述。假设图像组中包含的帧数为8,即图像组的大小(GOP size)等于8。记该图像组中的第一帧图像为帧1(如图2中标记为1的帧),第二帧图像为帧2(如图2中标记为2的帧),…,第8帧图像为帧8(如图2中标记为8的帧)。可以理解到,该图像组中的8帧图像的播放顺序为:帧1—帧2—帧3—帧4—帧5—帧6—帧7—帧8。图2中还示出标记为0的帧(记为帧0),帧0不属于该图像组。帧0表示该图像组进行编码时参考的帧。例如,帧0可以为I帧。帧0的播放顺序在帧1之前。
该图像组的分层情况如图2所示,分为4层,其中,帧8位于第1层,帧4位于第2层,帧2与帧6位于第3层,帧1、帧3、帧5与帧7位于第4层。帧0所在层可以称为第0层。其中,这些帧的编码顺序为:帧0—帧8—帧4—帧2—帧1—帧3—帧6—帧5—帧7。
图2中所示的帧之间的箭头表示,箭头出发的帧可以参考该箭头到达的帧进行编码。以帧4与帧8之间的箭头为例,表示,帧4可以参考帧8进行编码。再例如,对于帧4来说,可以参考帧8,和/或帧0进行编码。
本文中提及的层也可以称为时域层。
本申请实施例中提及的编码层表示,分层编码的层结构包括的所有层。例如,在图2所示的示例中,编码层表示4个层。
图3为本申请实施例提供的码率控制的方法的示意性流程图。该方法可以由编码器或由配置于编码器中的芯片或电路执行。该方法包括如下步骤。
S310,编码当前编码层上的当前帧的实际码率。
文本中涉及的当前帧表示当前进行编码的图像帧。
例如,对当前编码层的当前帧进行编码,获得当前帧的实际编码比特;基于当前帧的实际编码比特获得当前帧的实际码率。
当前编码层表示分层编码的层结构中当前进行编码的图像帧所在的层。应理解,本申请中的当前编码层可以表示分层编码的层结构中的任一层。
分层编码的层结构包括的所有层可以称为编码层。当前编码层表示该编码层中当前进行编码的图像帧所在的层。
S320,根据当前帧的实际码率,确定当前编码层当前的权重。
换言之,通过考虑编码当前编码层上当前帧的实际码率来确定当前编码层当前的权重。
下文将进一步描述步骤S320的实现方式。
S330,基于剩余码率与当前编码层当前的权重,确定当前编码层当前的目标码率。
例如,基于剩余码率与当前编码层当前的权重的乘积,获取当前编码层当前的目标码率。
其中,剩余码率表示,总目标码率对应的码率预算,与编码过程中已消耗的码率的差值。换言之,剩余码率表示,总目标码率对应的码率预算,与已编码的帧的码率的差值。
例如,剩余码率可以至少根据编码控制周期、总目标码率、以及编码层上已编码的帧的码率中的一个或者多个确定。其中,编码控制周期与总目标码率的乘积可以称为总目标码率对应的码率预算。
其中,编码控制周期表示编码层上的总帧数。
例如,在帧(Frame)级的码率控制场景中,编码控制周期为1。在图像组(group ofpictures,GOP)级的码率控制场景中,编码控制周期为图像组中包含的帧数(GOP size)。在I-帧周期(Intra period)级的码率控制场景中,编码控制周期为I帧周期(Intra Period)。在序列(Sequence)级的码率控制场景中,编码控制周期为总编码帧数。
其中,总目标码率表示根据视频传输的带宽确定的目标码率。应理解,视频的实际传输码率不应该超过该总目标码率。
作为示例,在步骤S330中,根据编码控制周期与总目标码率的乘积,与编码层上已编码的帧的实际码率之和的差值,获取该剩余码率。
应理解,该剩余码率随编码过程而动态变化。
在本申请中,通过当前编码层的当前帧的实际码率来确定当前编码层当前的权重,因为当前编码层当前的目标码率是基于当前编码层当前的权重确定的,因而当前编码层当前的目标码率是基于当前编码层的当前帧的实际码率确定的。因此,本申请在为层分配目标码率的过程中考虑了编码器的特性,从而,相对于现有的码率控制方案,可以提高码率控制算法的通用性。
例如,本申请提供的码率控制的方法,可以适用于全帧内(all intra,AI)编码框架、低延时(low delay,LD)编码框架、随机访问(random access,RA)编码框架或基于混合编码框架的编码器。其中,在LD模式下,若帧的类型包括I帧与B帧,LD模式也可称为LDB模式;若帧的类型包括I帧与P帧,LD模式也可以称为LDP模式。
需要说明的是,本文中提及的当前编码层表示编码层中当前进行编码的图像帧所在的层。应理解,本申请实施例提供的码率控制的方法可以应用于编码层中的每一层。
例如,在对编码层中的某一层(记为第一层)上的图像帧进行编码的场景中,该第一层的目标码率是基于该第一层上的当前帧的实际码率来确定的。再例如,在对编码层中的另一层(记为第二层)上的图像帧进行编码的场景中,该第二层的目标码率是基于该第二层上的当前帧的实际码率来确定的。
因此,本申请在为不同层分配目标码率时,是基于不同层的特性来分配的,而不是简单地让不同层分到相同的目标码率。因此,本申请在为层分配目标码率的过程中考虑了层的特性。
因此,本申请在为层分配目标码率的过程中,综合考虑了编码器的特性与层的特性。
下文将描述步骤S320的实现方式。
可选地,作为步骤S320的一种实现方式,步骤S320包括步骤S321与步骤S322。
S321,基于当前帧的实际码率确定当前编码层当前的预设码率。
可选地,作为步骤S321的一种实现方式,在当前帧是当前编码层的第一帧的情况下,将当前帧的实际码率作为当前编码层当前的预设码率。
可选地,作为步骤S321的另一种实现方式,在当前帧不是当前编码层的第一帧的情况下,基于当前帧的实际码率与当前编码层的上一个预设码率,获取当前编码层当前的预设码率。其中,当前编码层的上一个预设码率表示,根据当前编码层上当前帧的上一帧的实际码率获得的当前编码层的预设码率。
例如,可以通过对当前帧的实际码率与当前编码层的上一个预设码率进行求平均处理,来获取当前编码层当前的预设码率。
这里提及的求平均处理可以是直接求平均,也可以是加权求平均。求平均的算法可以是求几何平均算法,或者可以是求数值平均的算法。
应理解,通过对当前帧的实际码率与当前编码层的上一个预设码率进行求平均处理,来获取当前编码层当前的预设码率,可以实现平滑码率波动。
可选地,作为步骤S321的又一种实现方式,在当前帧不是当前编码层的第一帧的情况下,基于当前帧的实际码率与当前编码层上的已编码的至少一帧的实际码率,获取所述当前编码层当前的预设码率。
例如,可以通过对前帧的实际码率与当前编码层上的已编码的至少一帧的实际码率进行求平均处理,来获取当前编码层当前的预设码率。求平均处理的描述参见上文,这里不再赘述。
其中,当前编码层上的已编码的至少一帧可以是当前编码层上已编码的任一帧或多帧。例如,当前编码层上的已编码的至少一帧为当前编码层上当前帧的前一帧。
可选地,作为步骤S321的再一种实现方式,不管当前编码层上当前帧是否是当前编码层上的第一帧,将当前帧的实际码率作为当前编码层当前的预设码率。
S322,基于当前编码层当前的预设码率,以及编码层上未编码的帧的预设码率,获得当前编码层当前的权重。
可选地,编码层上未编码的帧的预设码率为该未编码的帧所在的层当前的预设码率。
例如,第x帧为编码层上还未编码的帧,该第x帧的预设码率为该第x帧所在层当前的预设码率。
可选地,编码层上未编码的帧的预设码率可以根据该帧的图像复杂度等信息估计。
例如,第x帧为编码层上还未编码的帧,该第x帧的预设码率根据该第x帧的图像复杂度等其它特性确定,或者,该第x帧的预设码率根据经验值确定。
作为步骤S322的一种可能的实现方式,基于当前编码层当前的预设码率与编码层上未编码的帧的预设码率之和的乘积,获得当前编码层当前的权重。
应理解,随着编码过程,当前编码层的预设码率处于动态变化中,当前编码层的权重也处于动态变化中,其中,当前编码层的预设码率的动态变化与当前编码层上当前帧的实际码率相关,则当前编码层的权重的动态变化也与当前编码层上当前帧的实际码率相关。因此,在本申请中,为层分配的目标码率随着编码过程进行更新,因此,可以实现基于编码器的特性进行码率控制,从而可以进一步实现码率控制算法对于编码器的通用性。
可选地,作为步骤S320的另一种实现方式,步骤S320包括:基于当前编码层上当前帧的实际码率,以及编码层上未编码的帧的预设码率,获得当前编码层当前的权重。
例如,基于当前编码层当前的实际码率与编码层上未编码的帧的预设码率之和的乘积,获得当前编码层当前的权重。
在本实施例中,编码层上未编码的帧的预设码率为该未编码的帧所在层上最新编码的帧的实际码率;或者,可以根据该帧的图像复杂度等信息估计。
除了上文描述的确定当前编码层当前的权重的实现方式之外,还可以采用其它可行的方式确定当前编码层当前的权重,只要是基于当前编码层上的当前帧的实际码率确定即可。应理解,通过考虑当前编码层上的当前帧的实际码率来确定当前编码层当前的权重的方案均落入本申请的保护范围。
可选地,在步骤S330之后,该方法还可以包括:利用当前编码层当前的目标码率,对当前编码层上的下一帧进行编码(假设当前帧不是当前编码层上的最后一帧)。
在当前帧为当前编码层上的第一帧的情况下,基于当前帧的实际码率确定的当前编码层的权重可以称为当前编码层的初始权重,基于当前编码层的初始权重确定的当前编码层的目标码率可以称为当前编码层的初始目标码率。
可选地,在当前帧为当前编码层上的第一帧的情况下,在步骤S310中,可以分别对编码层中每一层的第一帧进行编码,获得编码层中每一层的第一帧的实际码率。
应理解,编码层中第i层的第一帧的实际码率可以用于确定第i层的初始权重,进而确定第i层的初始目标码率,i为1,2,…,M,M表示编码层的层数。
例如,可以通过上文描述的步骤S321与步骤S322的操作方式,由第i层的第一帧的实际码率确定第i层的初始权重。即基于第i层的第一帧的实际码率确定第i层的初始预设码率,进而基于第i层的初始预设码率确定第i层的初始权重。
在当前帧不是当前编码层的第一帧的情况下,步骤S310包括:利用当前编码层的上一个目标码率,对当前帧进行编码。其中,当前编码层的上一个目标码率表示基于当前编码层上的当前帧的前一帧的实际码率获得的当前编码层的目标码率。
可选地,本文中涉及的码率的单位为比特每像素(bit/pixel)。
例如,本申请实施例中涉及的当前编码层的当前帧的实际码率、当前编码层当前的预设码率、编码层中未编码的帧的预设码率、总目标码率的单位均为比特每像素。
可选地,本文中涉及的码率的单位为比特每秒(bit/s)。
例如,本申请实施例中涉及的当前编码层的当前帧的实际码率、当前编码层当前的预设码率、编码层中未编码的帧的预设码率、总目标码率的单位均为比特每秒。
以总目标码率为例,记TBR表示以比特每秒(bit/s)为单位的总目标码率,Tbpp表示以比特每像素(bit/pixel)为单位的总目标码率,Tbpp与TBR的转换关系如下:
其中,FPS表示视频的帧率,W与H分别表示视频的图像帧的宽和高。
应理解,通过将码率的单位转换为比特每像素,可以实现不同序列的目标码率的度量方式的统一。
基于上述描述可知,在本申请中,通过当前编码层上当前帧的实际码率来确定当前编码层当前的权重,因为当前编码层当前的目标码率是基于当前编码层当前的权重确定的,因而当前编码层当前的目标码率是基于当前编码层上当前帧的实际码率确定的,因此,在为层分配目标码率的过程中考虑了编码器的特性,相对于现有的码率控制方案,可以提高码率控制算法的通用性。此外,本申请在为层分配目标码率的过程中也考虑了层的特性,从而可以为不同的层分配较为合理的目标码率。因此,本申请在码率控制的过程中,综合考虑了编码器的特性与层的特性。
为了更好地理解本申请实施例,下面给出一个具体示例。在下面示例中,以码率的单位为比特每像素(bit/pixel)为例。记待编码图像序列包括的总帧数为Fs。可选地,该总帧数Fs也可以称为编码控制周期。
对该待编码图像序列进行码率控制的过程包括如下步骤。
步骤一,对待编码图像序列中的前M帧进行编码,获得前M帧的实际码率。
其中,在启用分层图像组(GOP)时,M的取值为编码层的总层数。在未启用分层GOP时,M的取值为帧类型的数目。例如,在全帧内(all intra,AI)模式下,只存在I帧,因此,M的取值为1。再例如,在低延时(low delay,LD)模式下,只存在I帧和B(或P)帧,此时,M取值为2。
在本示例中,统一将M视为编码层的层数。
其中,将M层中的第L层的帧数目记为FL,将第L层上未编码的帧数目记为F′L,其中,L为1,..,M。
应理解,通过步骤一,可以获得M层中每一层上的第一帧的实际码率。
例如,通过如下公式,计算第L层的第一帧的实际码率RL,0:
其中,BitsL,0表示第L层上的第一帧的实际编码比特,W与H分别表示图像帧的宽和高。
将第L层的第一帧的实际码率RL,0作为第L层当前的预设码率PL。
步骤二,根据第L层的预设码率PL,与M层上未编码的帧的预设码率之和的比值,获取第L层当前的权重WL。
在本例中,以M层上未编码的帧的预设码率为该帧所在层的预设码率为例。
例如,根据如下公式计算第L层当前的权重WL:
其中,F′i表示第i层上未编码的帧数目,Pi表示第i层当前的预设码率。
步骤三,根据第L层当前的权重WL与码率预算,获取第L层当前的目标码率TL。
例如,根据如下公式计算第L层当前的目标码率TL:
TL=WL×BR
其中,BR表示当前的码率预算。
例如,根据如下公式计算当前的码率预算BR:
BR=Tbpp×Fs
其中,Tbpp表示以比特每像素(bit/pixel)为单位的总目标码率,Tbpp与以比特每秒(bit/pixel)为单位的总目标码率(如前文描述的TBR)的转换关系参见前文描述。
应理解,通过上述步骤一至步骤三,基于第L层上的第一帧的实际码率获得第L层的初始目标码率。
下文结合步骤四至步骤六,描述更新第L层的目标码率的方案。
步骤四,根据第L层上的第t帧的实际码率RL,t,获得第L层当前的预设码率P′L,其中,第t帧表示第L层上的非第一帧。例如,第t帧为第L层上的第二帧。
通过对第L层上的第t帧进行编码,获得第L层上的第t帧的实际码率RL,t。
例如,通过如下公式,获得第L层的第t帧的实际码率RL,t:
其中,BitsL,t表示第L层上的第t帧的实际编码比特,W与H分别表示图像帧的宽和高。
基于第L层的第t帧的实际码率RL,t与第L层的上一个预设码率PL,获取第L层当前的预设码率P′L。
例如,通过如下公式,获得第L层当前的预设码率P′L:
应理解,第L层的上一个预设码率PL为基于第L层上的第(t-1)帧的实际码率获得的第L层的预设码率。
可选地,还可以通过对PL与RL,t求加权平均,获得第L层当前的预设码率P′L。
步骤五,根据第L层当前的预设码率P′L获取第L层当前的权重W′L。
例如,根据如下公式计算第L层当前的权重W′L:
其中,F′i表示第i层上未编码的帧数目,Pi表示第i层当前的预设码率。
步骤六,根据第L层当前的权重W′L与当前的码率预算,获取第L层当前的目标码率T′L。
例如,根据如下公式计算第L层当前的目标码率T′L:
T′L=W′L×BR′
其中,BR’表示当前的码率预算。
例如,根据如下公式计算当前的码率预算BR’:
BR′=BR-BR已消耗
其中,BR表示总目标码率对应的码率预算,BR=Tbpp×Fs。BR已消耗表示在编码过程中已消耗的码率。
例如,通过如下公式,获取BR已消耗:
其中,Fi表示第i层的帧数目,F′i表示第i层上未编码的帧数目,Ti表示第i层最新的目标码率,CBFi表示第i层的缓冲区的充盈程度。每一层的缓冲区的充盈程度的初始值设置为0。
应理解,通过上述步骤四至步骤六,实现了第L层的目标码率的更新。
还应理解,由于信源内容的不确定性,在编码过程中,同一层上的帧的实际码率处于动态变化中,因此,第L层的第一帧的实际码率不应该一直作为第L层的预设码率。在本申请中,第L层的预设码率随着第L层上的当前帧的实际码率而动态变化,从而使得所确定的第L层的权重较为合理,进而使得所确定的第L层的目标码率也较为合理。
还应理解,在编码过程中,通常每一帧输出的码率与目标码率之间总存在一定的误差eLt,如下面公式所示。
因此,第L层的缓冲区充盈程度CBFL也会随着编码进行更新,如下面公式所示。
CBFL=CBFL+eL,t
在恒定目标码率控制时,控制目标是第L层的CBFL在整个编码过程中趋于0,因此,PID控制器的控制变量为第L层的CBFL。那么,PID控制器输出的数值PIDL是下一时刻的控制量(即),从而可以得到下一时刻的目标码率如下面公式所示。
它与前序编码的同层图像实际比特率RL,t之间的误差可以作为码率分配的调节增量ΔR。如下面公式所示。
前文结合图1描述了,通过码率控制获得量化参数,通过量化过程,根据量化参数获得量化系数。
下面示例性地给出通过码率控制获得量化参数的方法。
比特率和量化参数之间存在多种刻画模型,比如二次模型、指数模型等,本技术方案采用了R-Q的指数函数关系模型,如下面公式所示,
R=α·e-β·Q
其中R表示比特率,Q表示量化参数(QP)值,α和β为模型参数。
对R-Q模型进行一阶微分,得到如下面公式所示的结果。
不失一般性,在较小的QP值变化范围内,用ΔR≈dR,ΔQ≈dQ,比特率R值由当前层的上一个已编码图像帧的实际码率表示。
根据公式(14)和(16),可得QP的偏移值如下面公式所示。
在不同编码结构下,β取值通常不同,例如,在AI、LD和RA下,β取值分别为0.12、0.15和0.18。
最终,下一个编码时刻t+1图像的QP值由如下公式获得。
Qt+1=Qt+ΔQ
需要说明的是,上文描述的通过码率控制获取量化参数(QP)的方法仅为示例,本申请对此不作限定。
在本申请中,是根据编码器特性和每一层的序列特性来确定每一层的权重,进而确定每一层的目标码率,因此,本申请提供的码率控制的方法可以支持AI、LD、RA三种典型编码结构,还可以适用于基于混合编码框架的编码器,相对于现有技术,通用性较高。
例如,本申请提供的码率控制的方法可以适用于高性能视频编码标准(highefficiency video coding,HEVC)的参考软件平台HM、AVS3的参考软件平台HPM以及各种开源编码器平台x264、x265等。
本申请提供的码率控制的方法,在基本没有增加编解码复杂度的情况下,在AI、LD和RA三种编码结构下的码率控制误差分别可以达到0.01%、0.1%和1%的数量级。
需要说明的是,通过更改编码控制周期(即上文实施例中的FS),本申请提供的技术方案可以实现不同级别的平均码率控制(average bitrate,ABR)。
例如,将编码控制周期(FS)的取值设置为1,本申请提供的技术方案可以实现帧(Frame)级的平均码率控制(average bitrate,ABR),这种情况下,ABR也称为恒定码率控制(Constant Bit Rate,CBR)。
再例如,将编码控制周期(FS)的取值设置为图像组(GOP)中包含的帧数,本申请提供的技术方案可以实现图像组(group of pictures,GOP)级的ABR。图像组(GOP)中包含的帧数也可称为GOP size。
再例如,将编码控制周期(FS)的取值设置为I帧周期(Intra Period),本申请提供的技术方案可以实现I-帧周期(Intra period)级的ABR。
再例如,将编码控制周期(FS)的取值设置为总编码帧数,本申请提供的技术方案可以实现序列(Sequence)级的ABR。
基于上述描述可知,本申请在码率控制的过程中,综合考虑了编码器的特性与层的特性,因此,相对于现有技术,具有较好的编码器通用性,此外,由于考虑了不同层的特性,可以为不同的层分配较为合理的目标码率。
上文描述了本申请提供的方法实施例,下文将描述本申请提供的装置实施例。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的内容可以参见上文方法实施例,为了简洁,这里不再赘述。
图5为本发明实施例提供的编码装置500的示意性框图,该编码装置500包括如下单元。
获取单元510,用于获取当前编码层上的当前帧的实际码率。
确定单元520用于:根据当前帧的实际码率,确定当前编码层当前的权重;基于剩余码率与当前编码层当前的权重,获取当前编码层当前的目标码率。
可选地,在一些实施例中,确定单元520用于:基于当前帧的实际码率确定当前编码层当前的预设码率;基于当前编码层当前的预设码率,以及编码层上未编码的帧的预设码率,获得当前编码层当前的权重。
可选地,在一些实施例中,确定单元520用于,基于当前帧的实际码率,以及编码层上未编码的帧的预设码率,获得当前编码层当前的权重。
可选地,在本实施例中,当前帧不是当前编码层的第一帧;其中,确定单元520用于,基于当前帧的实际码率与当前编码层上一个的预设码率,获取当前编码层当前的预设码率。
例如,确定单元520用于,通过对当前帧的实际码率与当前编码层上一个的预设码率进行求平均处理,获取当前编码层当前的预设码率。
可选地,在本实施例中,当前帧是当前编码层的第一帧;其中,确定单元520用于,将当前帧的实际码率作为当前编码层当前的预设码率。
可选地,在一些实施例中,编码层上未编码的帧的预设码率为该未编码的帧所在的层当前的预设码率。
可选地,在一些实施例中,码率的单位为比特每像素。
可选地,在一些实施例中,码率的单位为比特每秒。
可选地,在一些实施例中,剩余码率至少根据编码控制周期、总目标码率、以及编码层上已编码的帧的码率中的一个或多个确定。
可选地,在一些实施例中,当前帧不是当前编码层的第一帧,获取单元510用于,通过利用当前编码层的上一个目标码率,对当前编码层上的当前帧进行编码,获得当前帧的实际码率。
可选地,在一些实施例中,该装置500还可以包括:编码单元530,用于利用当前编码层当前的目标码率,对当前编码层上的下一帧进行编码。
如图6所示,本发明实施例还提供一种编码装置600,该编码装置600包括:处理器610与存储器620,该存储器620用于存储指令,该处理器610用于执行该存储器620存储的指令,并且对该存储器620中存储的指令的执行使得,该处理器610用于执行上文方法实施例的方法。
可选地,该编码装置600还可以包括收发器630,用于从外部接收信号。
本发明实施例还提供一种芯片,该芯片包括处理模块与通信接口,该处理模块用于控制该通信接口与外部进行通信,该处理模块用于执行上文方法实施例的方法。
本发明实施例还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得,该计算机执行上文方法实施例的方法。
本发明实施例还提供一种包含指令的计算机程序产品,其特征在于,该指令被计算机执行时使得计算机执行上文方法实施例的方法。
还应理解,本文中涉及的第一、第二等数字编号仅为描述方便进行的区分,并不用来限制本发明实施例的范围。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种码率控制的方法,其特征在于,包括:
获取当前编码层上的当前帧的实际码率;
基于所述当前帧的实际码率,确定所述当前编码层当前的预设码率;
基于所述当前编码层当前的预设码率,以及编码层上未编码的帧的预设码率,获得所述当前编码层当前的权重;
基于剩余码率与所述当前编码层当前的权重,确定所述当前编码层当前的目标码率。
2.根据权利要求1所述的方法,其特征在于,所述当前帧不是所述当前编码层的第一帧;
其中,所述基于所述当前帧的实际码率,确定所述当前编码层当前的预设码率,包括:
基于所述当前帧的实际码率与所述当前编码层的上一个预设码率,获取所述当前编码层当前的预设码率。
3.根据权利要求2所述的方法,其特征在于,所述基于所述当前帧的实际码率与所述当前编码层的上一个预设码率,获取所述当前编码层当前的预设码率,包括:
通过对所述当前帧的实际码率与所述当前编码层的上一个预设码率进行求平均处理,获取所述当前编码层当前的预设码率。
4.根据权利要求1所述的方法,其特征在于,所述当前帧是所述当前编码层的第一帧;
其中,所述基于所述当前帧的实际码率,确定所述当前编码层当前的预设码率,包括:
将所述当前帧的实际码率作为所述当前编码层当前的预设码率。
5.根据权利要求1至4中任一项所述的控制方法,其特征在于,所述编码层上未编码的帧的预设码率为所述未编码的帧所在的层当前的预设码率。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述剩余码率至少根据编码控制周期、总目标码率、以及编码层上已编码的帧的码率中的一个或者多个确定。
7.根据权利要求2或3所述的方法,其特征在于,所述获取当前编码层的当前帧的实际码率,包括:
通过利用所述当前编码层的上一个目标码率对所述当前帧进行编码,获得所述当前帧的实际码率。
8.一种码率控制的装置,其特征在于,包括:
获取单元,用于获取当前编码层上的当前帧的实际码率;
确定单元,用于根据基于所述当前帧的实际码率,确定所述当前编码层当前的预设码率;
所述确定单元,还用于基于所述当前编码层当前的预设码率,以及编码层上未编码的帧的预设码率,获得所述当前编码层当前的权重;
所述确定单元,还用于基于剩余码率与所述当前编码层当前的权重,确定所述当前编码层当前的目标码率。
9.根据权利要求8所述的装置,其特征在于,所述当前帧不是所述当前编码层的第一帧;
其中,所述确定单元用于,基于所述当前帧的实际码率与所述当前编码层的上一个预设码率,获取所述当前编码层当前的预设码率。
10.根据权利要求9所述的装置,其特征在于,所述确定单元用于,通过对所述当前帧的实际码率与所述当前编码层的上一个预设码率进行求平均处理,获取所述当前编码层当前的预设码率。
11.根据权利要求8所述的装置,其特征在于,所述当前帧是所述当前编码层的第一帧;
其中,所述确定单元用于,将所述当前帧的实际码率作为所述当前编码层当前的预设码率。
12.根据权利要求8至11中任一项所述的控制装置,其特征在于,所述编码层上未编码的帧的预设码率为所述未编码的帧所在的层当前的预设码率。
13.根据权利要求8至12中任一项所述的装置,其特征在于,所述剩余码率至少根据编码控制周期、总目标码率、以及编码层上已编码的帧的码率中的一个或者多个确定。
14.根据权利要求9或10所述的装置,其特征在于,所述获取单元用于,通过利用所述当前编码层的上一个目标码率对所述当前帧进行编码,获得所述当前帧的实际码率。
15.一种编码装置,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,用于执行所述存储器存储的计算机指令,并且对所述存储器中存储的计算机指令的执行使得,如权利要求1至7中任一项所述的方法被执行。
16.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机执行时使得,如权利要求1至7中任一项所述的方法被执行。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911063042.9A CN112752103B (zh) | 2019-10-31 | 2019-10-31 | 码率控制的方法与装置 |
PCT/CN2020/124895 WO2021083286A1 (zh) | 2019-10-31 | 2020-10-29 | 码率控制的方法与装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911063042.9A CN112752103B (zh) | 2019-10-31 | 2019-10-31 | 码率控制的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112752103A CN112752103A (zh) | 2021-05-04 |
CN112752103B true CN112752103B (zh) | 2023-01-31 |
Family
ID=75644998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911063042.9A Active CN112752103B (zh) | 2019-10-31 | 2019-10-31 | 码率控制的方法与装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112752103B (zh) |
WO (1) | WO2021083286A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040076034A (ko) * | 2003-02-24 | 2004-08-31 | 삼성전자주식회사 | 동 영상의 가변 비트율 부호화 방법 및 장치 |
CN101917614A (zh) * | 2010-06-03 | 2010-12-15 | 北京邮电大学 | 一种基于h.264分层b帧编码结构的码率控制方法 |
CN102420987A (zh) * | 2011-12-01 | 2012-04-18 | 上海大学 | 基于分层b帧结构的码率控制的自适应比特分配方法 |
CN104994387A (zh) * | 2015-06-25 | 2015-10-21 | 宁波大学 | 一种融合图像特征的码率控制方法 |
CN105681793A (zh) * | 2016-01-06 | 2016-06-15 | 四川大学 | 基于视频内容复杂度自适应的极低延迟高性能视频编码帧内码率控制方法 |
CN106231300A (zh) * | 2016-07-22 | 2016-12-14 | 上海交通大学 | 一种基于编码单元层次的hevc复杂度控制方法 |
CN109862359A (zh) * | 2018-12-29 | 2019-06-07 | 北京数码视讯软件技术发展有限公司 | 基于分层b帧的码率控制方法、装置和电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192075B1 (en) * | 1997-08-21 | 2001-02-20 | Stream Machine Company | Single-pass variable bit-rate control for digital video coding |
US20150215621A1 (en) * | 2014-01-30 | 2015-07-30 | Qualcomm Incorporated | Rate control using complexity in video coding |
CN108200431B (zh) * | 2017-12-08 | 2021-11-16 | 重庆邮电大学 | 一种视频编码码率控制帧层比特分配方法 |
CN110139101B (zh) * | 2019-06-20 | 2022-03-25 | 电子科技大学 | 一种基于λ域码率控制的帧级比特分配方法 |
-
2019
- 2019-10-31 CN CN201911063042.9A patent/CN112752103B/zh active Active
-
2020
- 2020-10-29 WO PCT/CN2020/124895 patent/WO2021083286A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040076034A (ko) * | 2003-02-24 | 2004-08-31 | 삼성전자주식회사 | 동 영상의 가변 비트율 부호화 방법 및 장치 |
CN101917614A (zh) * | 2010-06-03 | 2010-12-15 | 北京邮电大学 | 一种基于h.264分层b帧编码结构的码率控制方法 |
CN102420987A (zh) * | 2011-12-01 | 2012-04-18 | 上海大学 | 基于分层b帧结构的码率控制的自适应比特分配方法 |
CN104994387A (zh) * | 2015-06-25 | 2015-10-21 | 宁波大学 | 一种融合图像特征的码率控制方法 |
CN105681793A (zh) * | 2016-01-06 | 2016-06-15 | 四川大学 | 基于视频内容复杂度自适应的极低延迟高性能视频编码帧内码率控制方法 |
CN106231300A (zh) * | 2016-07-22 | 2016-12-14 | 上海交通大学 | 一种基于编码单元层次的hevc复杂度控制方法 |
CN109862359A (zh) * | 2018-12-29 | 2019-06-07 | 北京数码视讯软件技术发展有限公司 | 基于分层b帧的码率控制方法、装置和电子设备 |
Non-Patent Citations (2)
Title |
---|
Enhanced hierarchical mask creation for image coding using saliency maps;Radoslav Vargic;《2017 4th International Conference on Control, Decision and Information Technologies (CoDIT)》;20171109;全文 * |
面向分层B帧编码的帧级别码率控制算法;常侃;《北京工业大学学报》;20120331;全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021083286A1 (zh) | 2021-05-06 |
CN112752103A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100505699B1 (ko) | 실시간 가변 비트율 제어로 화질을 개선시키는 비디오인코더의 인코딩율 제어기, 이를 구비한 비디오 데이터전송 시스템 및 그 방법 | |
KR101418950B1 (ko) | 비디오 코딩 표준에 대한 개선된 비디오율 제어 | |
KR100484148B1 (ko) | 개선된 비트율 제어 방법과 그 장치 | |
US5986712A (en) | Hybrid global/local bit rate control | |
US6229849B1 (en) | Coding device and method | |
US8050322B2 (en) | Bitrate control method and apparatus for intra-only video sequence coding | |
JP5770476B2 (ja) | ビデオ符号化に於いてレート制御を正確にする方法及び装置 | |
EP0935396A2 (en) | Video coding method and apparatus | |
ITTO20090486A1 (it) | Controllore dinamico della velocita' di trasmissione indipendente dal gruppo di immagini | |
JPH05336511A (ja) | 動画像符号化装置 | |
CN108200431B (zh) | 一种视频编码码率控制帧层比特分配方法 | |
CN103718555A (zh) | 低时延速率控制系统和方法 | |
JP2020518174A (ja) | ビデオフレーム符号化方法、端末、および記憶媒体 | |
JPWO2009157577A1 (ja) | 画像処理装置及び画像処理方法 | |
CN103533365A (zh) | 比特率控制方法与比特率控制系统 | |
JP2000197049A (ja) | 動画像可変ビットレート符号化装置および方法 | |
KR20120096863A (ko) | 고효율 비디오 부호화의 계층적 부호화 구조를 위한 비트율 제어 기법 | |
CN110800297B (zh) | 视频编码方法及装置、计算机可读存储介质 | |
CN112752103B (zh) | 码率控制的方法与装置 | |
JP2008263443A (ja) | 情報処理装置および方法、並びにプログラム | |
JP2007116655A (ja) | 動画像符号化装置 | |
CN114513664B (zh) | 视频帧编码方法、装置、智能终端及计算机可读存储介质 | |
KR100677128B1 (ko) | 동영상 부호화기의 비트율 제어장치 및 방법 | |
JPH11234671A (ja) | 信号処理装置 | |
JP2008078978A (ja) | 動画像符号化装置 |
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 |