CN101795415A - 一种视频编码中的码率控制方法及其装置 - Google Patents
一种视频编码中的码率控制方法及其装置 Download PDFInfo
- Publication number
- CN101795415A CN101795415A CN 201010152237 CN201010152237A CN101795415A CN 101795415 A CN101795415 A CN 101795415A CN 201010152237 CN201010152237 CN 201010152237 CN 201010152237 A CN201010152237 A CN 201010152237A CN 101795415 A CN101795415 A CN 101795415A
- Authority
- CN
- China
- Prior art keywords
- value
- bit rate
- present frame
- frame
- initial
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种视频编码中的码率控制方法及其装置,应用于以行宏块作为最小运算单元的码率控制过程。本发明方法包括:针对当前行宏块,包括以下步骤:获取当前帧的初始码率控制参数;根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。采用本发明,可实现在控准码率的前提之下尽可能地提升编码图像质量。
Description
技术领域
本发明涉及通信领域的视频编码技术,特别是涉及一种视频编码中的码率控制方法及其装置。
背景技术
在目前的视频编码压缩技术中,采集的原始视频数据经过编码压缩后,编码出来的码流虽然得到了较高的压缩比,但是其码率是变化的。而在视频通信领域,通信信道带宽都是恒定、有限的,码率不断变化的码流不适合在恒定信道中传输。所以,在视频编码中引入了码率控制,如图1所示,目的是将编码器产生的码流码率控制在一定波动范围之内。
码率控制的基本原理是通过不停地调整编码量化参数(QuantizationParameter,QP)来控制码流缓冲区中比特的占有度,使其在一定程度上尽量保持稳定,不出现上溢和下溢的情况,从而保持码率的稳定。但是另一方面,编码量化参数QP的变化直接影响图像质量。QP反映了空间细节压缩情况,如果QP小,则大部分细节得以保留,此时图像质量好而码率高;如果QP大,则一些细节就会被丢失,此时码率小但是图像失真加强,图像质量下降。所以,如何在控准码率的前提之下尽可能地提升编码图像质量,是码率控制方法的一个重要问题。
在一种传统的码率控制方案中,先根据已编码帧信息预测待编码帧的复杂度,并预算该帧的编码比特数,再根据反馈的虚拟缓冲区填充度确定参考量化步长,最后计算宏块的空间活动性和宏块实际量化参数QP。该方法可如图2所示,利用预分配的目标编码比特数、预测的图像复杂度和反馈的虚拟缓冲区占有度等信息来调整QP值。
在另一种传统的码率控制方案中,在正式编码之前先进行预编码,得到码率分配、图像复杂度、QP分布等信息,在正式编码时综合这些信息再次进行码率控制。该方法可如图3所示,利用两次编码来达到更精准的码率控制效果。
发明人实现本发明的过程中,发现现有技术至少存在以下缺陷:
图2所示的码率控制方案,一方面,在某些特殊场景时目标比特率分配步骤会存在较大偏差;另一方面,由于预算得到的编码比特数较固定,因此不能随实际编码场景的不同而变化,容易导致码率控制不准和编码比特数分配不均;再一方面,容易导致量化不均匀,图像质量差异大;
图3所示的码率控制方案,由于采用了两次编码,因此增加了码率控制的运算复杂度,不适合于实时系统中的应用。
发明内容
本发明提供了一种视频编码中的码率控制方法及其装置,用以实现在控准码率的前提之下提升编码图像质量。
本发明提供的视频编码中的码率控制方法,应用于以行宏块作为最小运算单元的码率控制过程,该方法针对当前行宏块,包括以下步骤:
获取当前帧的初始码率控制参数;
根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。
获取当前帧的初始码率控制参数之后,还包括:根据编码场景调整获取到的初始码率控制参数;确定当前行的QP值,具体为:根据调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。
其中,根据编码场景调整获取到的初始码率控制参数,包括:根据编码场景调整当前帧的目标码率,或调整当前帧的初始QP值和目标码率。
其中,根据编码场景调整当前帧的目标码率,包括:
当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;
或者,当前帧的为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加。
上述方法中,根据编码场景调整当前帧的初始QP值和目标码率,包括:
当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围时,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;
或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
根据本发明的方法,确定当前行的QP值,包括:
根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息,确定当前行的目标码率;根据编码场景调整当前行的目标码率;根据调整后的当前行的目标码率确定当前行的QP值。
其中,根据编码场景调整当前行的目标码率,包括:
将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。
根据本发明的上述方法,根据当前帧的初始QP值和目标码率,以及所述反馈信息,确定当前行的QP值之后,还包括:
通过调整当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;
或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。
其中,若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
根据本发明的上述方法,所述编码结果反馈信息,包括:行编码码率。
本发明提供的视频编码中的码率控制装置,应用于以行宏块作为最小运算单元的码率控制过程,该装置包括:
获取模块,用于获取当前帧的初始码率控制参数;
确定模块,与所述获取模块连接,用于根据所述获取模块获取到的当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈模块,与所述确定模块连接,用于将根据所述确定模块确定出的当前行的QP值对当前行进行宏块编码后得到的编码结果信息反馈给所述确定模块。
上述装置,还包括:
第一场景自适应单元,分别与所述获取模块和所述确定模块连接,用于根据编码场景调整所述获取模块获取到的初始码率控制参数;
所述确定模块具体用于,根据所述第一场景自适应单元调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。
上述装置中,所述第一场景自适应单元具体用于,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
上述装置中,所述确定模块包括:
行目标码率确定单元,用于根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及当前帧的场景,确定当前行的目标码率;
第二场景自适应单元,与所述行目标码率确定单元连接,用于根据编码场景调整当前行的目标码率;
行QP值确定单元,与所述第二场景自适应单元连接,用于根据所述第二场景自适应单元调整后的当前行的目标码率确定当前行的QP值。
其中,所述第二场景自适应单元具体用于,将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。
上述装置中,所述确定模块还包括:
QP自适应单元,与所述行QP值确定单元连接,用于通过调整所述QP值确定单元确定出的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。
其中,所述QP自适应单元具体用于,若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
本发明的有益技术效果包括:
通过以一行宏块作为码率控制最小计算单元的方式,降低计算复杂度;进一步的,在码率控制过程中引入了自适应场景控制,以使码率控制能更好地适应各种不同的场景,在控准码率使其不超标的前提下,尽量使更多的码流分配到图像较复杂的行和帧,提高编码的图像质量。
附图说明
图1为现有技术中码率控制和视频编码原理示意图;
图2为现有技术中的一种码率控制过程的示意图;
图3为现有技术中的另一种码率控制过程的示意图;
图4为本发明实施例提供的码率控制过程示意图;
图5为本发明实施例的总体实现流程示意图;
图6为本发明实施例提供的当前行宏块QP值的限制控制示意图;
图7为本发明实施例提供的码率控制装置的结构示意图。
具体实施方式
为了克服现有技术由于运算复杂度高而不能应用于实时系统,或者对场景适应性差,编码出的图像质量变化差异较大等缺陷,本发明提出了一种基于行级的自适应码率控制方法,该方法码率控制的最小运算单元是一行宏块,从而降低了码率控制的运算复杂度,同时通过QP自适应限值控制,提高了量化参数QP的均匀度,进而降低图像质量的变化差异。本发明的码率控制方法还能自适应不同的场景,如根据场景的不同,自适应地调整码率控制的各参数,以达到在稳定码率的同时,提高图像质量的效果。
本发明为解决现有技术存在的技术问题所采用的技术方案可包括:
在编码开始时,根据帧率、码率、GOP(Group of Picture,即I帧间隔)等一系列编码信息,通过经验公式得到原始QP值、帧编码比特数等;
在编码过程中,根据反馈得到的已编码码率、当前QP值、帧平均QP值等信息,根据不同的场景,实时地调整帧编码比特数、行编码比特数、行级QP等,以此来达到控制码率,同时适应不同场景编码,提高编码图像质量的效果。
下面结合附图和实施例对本发明作进一步说明。
参见图4,为本发明实施例提供的码率控制过程示意图。
如图所示,在一帧图像编码开始时,也即该帧图像码率控制开始时(S401),码率控制装置会根据前一帧图像宏块编码结果的反馈信息,如已编码的码率(码流长度)、场景自适应条件、平均QP、GOP等信息(S408的输出),结合场景自适应控制(S402),计算得到当前帧的起始QP值和当前帧的目标码率(S402的输出),之后进入行级码率控制循环;在行级码率控制开始时(S403),码率控制装置根据该帧目标码率和从行级码率控制结束时反馈回的已编码行的码率等信息(S407的输出),再结合场景自适应控制(S404)和QP自适应限值控制(S405),计算得到当前行的QP值和行目标码率(S405的输出);然后,根据计算得到的当前行的QP值和行目标码率等对当前行宏块进行编码(S406),得到编码码流(S406的输出),行级码率控制结束(S407),反馈当前行宏块编码的码率、场景自适应条件等(S407的输出),作为对下一行宏块的行级码率进行控制的参数。当一帧编码结束时(S408),反馈当前帧宏块编码的码率、场景自适应条件等(S408的输出),作为对下一帧编码过程进行码率控制的参数。
这里,在码率控制过程中引入了场景自适应控制,用于根据具体编码场景实时地调整目标码率等参数,达到使码流更多地分配到场景复杂处,以提高编码图像质量的效果。另外,通过以一行宏块为最小运算单元的码率控制,结合QP自适应限值控制的方法,可在减小QP在空间和时间上波动性的同时,控准码率。
参见图5,为本发明实施例的总体实现流程示意图。如图所示,当开始对当前视频帧进行编码时,该流程主要包括以下步骤:
步骤S500、编码开始,即码率控制开始。
步骤S501、执行码率控制初始化,得到一起始QP值。码率控制初始化的操作可包括:对编码器设置的码率控制参数进行初始化操作,得到起始QP值。
该步骤中,起始QP值可以是预设值,为操作简便,预设的起始QP值可以是根据以往进行帧编码所得到的平均QP值。本领域技术人员应该理解,起始QP值可以通过上述方式或者其他一些常规方式得到,比如:在初始化过程中,可根据期望的目标码率、期望的GOP等参数得到起始QP值,也可以是对一般的图像场景进行实测得到的结果。起始QP值的确定主要与三个因素有关:一是设置的码率(BITRATE),二是待编码图像的宽WIDTH,三是待编码图像的高HEIGHT。最后得到的起始QP值与上述三个因素的关系是:BITRATE越大,(WIDTH*HEIGHT)越小,则QP值越小,反之BITRATE越小,(WIDTH*HEIGHT)越大,则QP值越大。比如,以编码H.2644CIF分辨率(WIDTH为704,HEIGHT为576)码率BITRATE为4M的码流来说,其QP值取30;当编码4CIF分辨率码率BITRATE为2M的码流时,QP值取32;当编码CIF分辨率(WIDTH为352,HEIGHT为288)码率BITRATE为2M的码流时,QP取26。
步骤S502、接收前一帧编码结束时反馈回来的编码结果信息,开始对当前帧进行码率控制。
步骤S503、计算当前帧的初始QP值(记为QP0)和目标码率,并可进一步通过场景自适应控制过程,对计算得到的当前帧的QP0和当前帧的目标码率进行调整。
该步骤可内嵌一个场景自适应控制过程,用于对较复杂场景或编码码率起伏较大的场景进行控制。该控制过程可以包括:
如果当前帧为I帧编码,且检测出编码场景较复杂(即当前帧的编码复杂程度较高),对码率控制压力较大,可能会有码率控制超标的危险,则会自动调整I帧目标码率的计算,使用较小的目标码率,以达到压制码流超标的效果,如减小帧目标码率。当然,如果检测出当前编码场景较简单,也可增加帧目标码率;如果检测出当前编码场景复杂度适中,也可不对帧目标码率进行调整。其中,编码复杂程度的高低可由相应的阈值进行界定,例如,将上一个已编码帧的码率与它的目标码率相比较(如可采用相减得到差值的方式进行比较,或采用相除得到比值的方式进行比较),如果码率变化超过设定范围的上限值,则表示编码复杂程度较高,可增加当前帧的目标码率;如果码率变化低于设定范围的下限值,则可减少当前帧的目标码率;如果码率变化在该设定阈值范围内,则可保持当前帧的目标码率不变。
如果当前帧为非I帧编码,且检测到上一个已编码帧的码率与它的目标码率相比,编码码流长度起伏较大,或者当前帧的QP0与前一帧的QP0相比波动较大,则有可能会影响码率控制的效果,图像质量也会由于码流大小的不合理分配而打折扣,此时可启动重新计算(或调整)QP0、重新分配(或调整)当前帧的目标码率的操作,以此来达到抑制过大的码流波动、更合理地分配各帧目标码流大小,提高编码图像质量的目的。其中,码流长度(或码率)起伏的大小程度和QP波动的大小程度可以由相应的阈值进行界定,例如,将上一个已编码帧的码率与它的目标码率相比较,如果码率变化超过设定范围,或者初始QP值的变化超过设定范围,则需要重新计算当前帧的初始QP值和目标码率。
上述计算(包括重新计算)当前帧的初始QP值(即QP0)的过程中,计算QP0值的公式可以是:QP0=QPbase*(1+QPadj);其中QPbase可以是上一帧的平均QP值,QPadj为QP调整因子。当前帧目标码率的调整方法可以是:当上一帧的实际码率大于该上一帧的目标帧码率超过一定范围的上限值(即码率变化超过设定范围的上限值)时,则减小当前帧的目标帧码率;相反(即码率变化超过设定范围的下限值),则增加当前帧的目标帧码率。
其中,QPadj可由上一帧的实际码率和该上一帧的目标帧码率决定,即在对当前帧进行码率控制开始之前,根据上一帧的实际码率和目标码率来确定出对当前帧进行码率控制所需的QPadj。如果实际码率大于目标帧码率,则QPadj为一个正值,相反,则QPadj为一个负值。
重新计算QP0可以通过重新确定QPadj来实现,当检测到上述QP0波动较大的情况时,可重新确定一个新的QPadj值,使根据该QPadj计算得到的QP0值处于允许的波动范围之内,从而重新计算出QP0。还可以通过以下方式重新计算QP0:如果当前帧的QP0与前一帧的QP0相比波动超过设定范围的下限值,则可以根据该下限值确定当前帧的QP0(如增加当前帧的QP0,使其与前一帧的QP0相比波动达到该下限值);如果当前帧的QP0与前一帧的QP0相比波动超过设定范围的上限值,则可以根据该上限值确定当前帧的QP0(如减小当前帧的QP0,使其与前一帧的QP0相比波动达到该上限值)。
步骤S504、开始对一行宏块进行码率控制。
该步骤除了接收并保存当前帧的QP0(如果通过场景自适应控制过程进行了调整,则是调整后的QP0)和当前帧的目标码率(如果通过场景自适应控制过程进行了调整,则是调整后的目标码率),还接收和处理相邻行(包括空间上的相邻或时间上的相邻,如前一行)宏块码率控制结束后(步骤S508)所反馈的统计信息。
步骤S505、根据当前帧的QP0和目标码率、已编码行编码结束后反馈的统计信息,如码率、平均QP、GOP等信息,计算得到当前行的行级码率控制的最终QP值。
该步骤可内嵌一个场景自适应控制过程,以便对那些同一画面中复杂和简单画面分布较集中的场景进行控制,比如画面的上半部分是天空,而画面的下半部分是车水马龙的场景。当此处检测到编码较简单的场景时,可自动调整行目标码率,以便待编码的各行宏块的行目标码率得到重新分配,以达到更合理地分配码流、优化码率控制的效果,提高图像质量。同理,当检测到编码较复杂的场景时,可重新分配行目标码率,以达到压制码率控制超标,均匀图像质量的效果;当检测到的编码复杂程度适中时,可不对行目标码率进行调整。其中,场景编码的复杂程度可由相应的阈值进行界定,例如,将上一个已编码行的码率与它的目标行码率相比,如果前者大于后者超过一定的阈值(即前者与后者相比得到的变化超过设定范围的上限值),则将减小当前帧中待编码行(尚未编码)的行目标码率;如果前者小于后者低于一定的阈值(即前者与后者相比得到的变化低于设定范围的下限值),则将增加当前帧中待编码行(尚未编码)的行目标码率。
如果对当前行的目标码率进行了调整,则可根据调整后的目标码率计算当前行的QP值。其中,当前行的目标码率可根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息计算得到。
步骤S506、对当前行的QP进行自适应限值控制。该步骤可选。
该步骤的QP自适应限值控制,主要的功能是完成空间或/和时间上的QP变化限值,减小QP值的波动性和图像质量的差异性。这里所谓空间上的限值即把当前行QP值与当前帧中的相邻行的QP值差值限制在一定范围之内,所谓时间上的限值即把当前行QP值与相邻帧对应行的QP值差值限制在一定范围之内。此处的限值控制可以是不固定的(即限值范围可根据具体情况而调整),因为在某些情况下如果按固定的方式对QP进行限值,就会发生QP增加不及时,码率超标的情况,此处的QP自适应控制就是一个可以检测并自动调整QP限值的过程,当可能发生码率超标时(例如可将上一个已编码行的码率与它的目标行码率相比,如果码率变化超过一定的阈值),会增大QP的波动范围。
如图6所示,假设当前行宏块为第k+1帧第n+1行,当前行宏块的QP值为QP(k+1,n+1)′,当前帧相邻行QP值为QP(k+1,n),相邻帧对应行QP值为QP(k,n+1),X为空间上的QP自适应限值控制因子,T为时间上的QP自适应限值控制因子,CLIP为限值函数,则当前行的QP值限值过程为:
QP(k+1,n+1)=CLIP(QP(k+1,n+1)′,QP(k+1,n),X,QP(k,n+1),T)
步骤S507、根据确定出的当前行的QP和当前行的码率,对当前行宏块进行编码,该过程会产生码流。
步骤S508、结束对当前行宏块码率控制。
该步骤主要统计该行码率和步骤S505中场景自适应控制条件检测所需的信息等,并将统计的信息反馈回步骤S504,然后进行新的一行宏块的编码和码率控制计算。如果当前行宏块为该帧最后一行编码,则结束该帧编码。
步骤S509、结束对一帧码率控制。
该步骤进行当前帧码率、平均QP等信息的统计,并反馈到步骤S502。
上述流程中,如果当前帧为第一帧,则在步骤502中,在对当前帧进行码率控制时,其控制依据不包括前一帧编码结束时反馈回来的编码结果信息。如果当前行为第一帧的首行,则步骤505中进行码率控制的依据不包括前一行宏块码率控制结束后所反馈的统计信息。
基于相同的技术构思,本发明实施例还提供了一种视频编码中的码率控制装置,该装置可应用于以行宏块作为最小运算单元的码率控制过程。
如图7所示,该装置可包括:获取模块10、确定模块20、反馈模块30,其中:
获取模块10,用于获取当前帧的初始码率控制参数,如,初始QP值和目标码率;
确定模块20,与获取模块10连接,用于根据获取模块10获取到的当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈模块30,与确定模块20连接,用于将根据确定模块20确定出的当前行的QP值对当前行进行宏块编码后得到的编码结果信息反馈给确定模块20。
上述装置还可包括:第一场景自适应单元11,分别与获取模块10和确定模块20连接,用于根据编码场景调整所述获取模块获取到的初始码率控制参数。相应的,确定模块20具体用于:根据第一场景自适应单元11调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。
其中,第一场景自适应单元11可具体用于:若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
上述装置中的确定模块20可包括:
行目标码率确定单元201,用于根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及当前帧的场景,确定当前行的目标码率;
第二场景自适应单元202,与行目标码率确定单元201连接,用于根据编码场景调整当前行的目标码率;
行QP值确定单元203,与第二场景自适应单元202连接,用于根据第二场景自适应单元202调整后的当前行的目标码率确定当前行的QP值。
其中,第二场景自适应单元202可具体用于:将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。
上述装置中的确定模块20还可进一步包括QP自适应单元204,与行QP值确定单元203连接,用于通过调整QP值确定单元203确定出的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。
其中,QP自适应单元203可具体用于:若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
综上所述,本发明的上述实施例,通过以一行宏块作为码率控制最小计算单元的方式,降低计算复杂度;进一步的,在码率控制过程中引入了自适应场景控制和自适应QP限值控制,以使码率控制能更好地适应各种不同的场景,在控准码率使其不超标的前提下,尽量使更多的码流分配到图像较复杂的行和帧,提高编码的图像质量。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (17)
1.一种视频编码中的码率控制方法,应用于以行宏块作为最小运算单元的码率控制过程,其特征在于,针对当前行宏块,包括以下步骤:
获取当前帧的初始码率控制参数;
根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。
2.如权利要求1所述的方法,其特征在于,获取当前帧的初始码率控制参数之后,还包括:根据编码场景调整获取到的初始码率控制参数;
确定当前行的QP值,具体为:根据调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。
3.如权利要求2所述的方法,其特征在于,根据编码场景调整获取到的初始码率控制参数,包括:根据编码场景调整当前帧的目标码率,或调整当前帧的初始QP值和目标码率。
4.如权利要求3所述的方法,其特征在于,根据编码场景调整当前帧的目标码率,包括:
当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;
或者,当前帧的为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加。
5.如权利要求3所述的方法,其特征在于,根据编码场景调整当前帧的初始QP值和目标码率,包括:
当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围时,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;
或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
6.如权利要求1所述的方法,其特征在于,确定当前行的QP值,包括:
根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息,确定当前行的目标码率;
根据编码场景调整当前行的目标码率;
根据调整后的当前行的目标码率确定当前行的QP值。
7.如权利要求6所述的方法,其特征在于,根据编码场景调整当前行的目标码率,包括:
将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。
8.如权利要求1所述的方法,其特征在于,根据当前帧的初始QP值和目标码率,以及所述反馈信息,确定当前行的QP值之后,还包括:
通过调整当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;
或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。
9.如权利要求8所述的方法,其特征在于,若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
10.如权利要求1至9任一项所述的方法,其特征在于,所述编码结果反馈信息,包括:行编码码率。
11.一种视频编码中的码率控制装置,应用于以行宏块作为最小运算单元的码率控制过程,其特征在于,包括:
获取模块,用于获取当前帧的初始码率控制参数;
确定模块,与所述获取模块连接,用于根据所述获取模块获取到的当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈模块,与所述确定模块连接,用于将根据所述确定模块确定出的当前行的QP值对当前行进行宏块编码后得到的编码结果信息反馈给所述确定模块。
12.如权利要求11所述的装置,其特征在于,还包括:
第一场景自适应单元,分别与所述获取模块和所述确定模块连接,用于根据编码场景调整所述获取模块获取到的初始码率控制参数;
所述确定模块具体用于,根据所述第一场景自适应单元调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。
13.如权利要求12所述的装置,其特征在于,所述第一场景自适应单元具体用于,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
14.如权利要求10或11所述的装置,其特征在于,所述确定模块包括:
行目标码率确定单元,用于根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及当前帧的场景,确定当前行的目标码率;
第二场景自适应单元,与所述行目标码率确定单元连接,用于根据编码场景调整当前行的目标码率;
行QP值确定单元,与所述第二场景自适应单元连接,用于根据所述第二场景自适应单元调整后的当前行的目标码率确定当前行的QP值。
15.如权利要求14述的装置,其特征在于,所述第二场景自适应单元具体用于,将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。
16.如权利要求14所述的装置,其特征在于,所述确定模块还包括:
QP自适应单元,与所述行QP值确定单元连接,用于通过调整所述QP值确定单元确定出的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。
17.如权利要求16所述的装置,其特征在于,所述QP自适应单元具体用于,若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010152237 CN101795415B (zh) | 2010-04-22 | 2010-04-22 | 一种视频编码中的码率控制方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010152237 CN101795415B (zh) | 2010-04-22 | 2010-04-22 | 一种视频编码中的码率控制方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101795415A true CN101795415A (zh) | 2010-08-04 |
CN101795415B CN101795415B (zh) | 2012-02-08 |
Family
ID=42587800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010152237 Active CN101795415B (zh) | 2010-04-22 | 2010-04-22 | 一种视频编码中的码率控制方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101795415B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103458237A (zh) * | 2012-05-29 | 2013-12-18 | 北京数码视讯科技股份有限公司 | 视频编码方式的确定方法和装置以及视频编码方法和装置 |
CN103475934A (zh) * | 2013-09-13 | 2013-12-25 | 北京世纪鼎点软件有限公司 | 一种面向网络直播的视频编码流控方法 |
CN105472389A (zh) * | 2015-12-01 | 2016-04-06 | 上海交通大学 | 一种用于超高清视频处理系统的片外缓存压缩方法 |
CN105763877A (zh) * | 2016-02-22 | 2016-07-13 | 青岛海信电器股份有限公司 | 一种视频帧像素块的压缩方法和装置 |
CN107027030A (zh) * | 2017-03-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种码率分配方法及其设备 |
CN110324615A (zh) * | 2018-03-30 | 2019-10-11 | 华为技术有限公司 | 一种码率分配方法及装置 |
CN110519571A (zh) * | 2019-09-19 | 2019-11-29 | 天津英田视讯科技有限公司 | 一种基于场景复杂度动态调整编码器参数的方法 |
CN110545418A (zh) * | 2019-08-27 | 2019-12-06 | 杭州当虹科技股份有限公司 | 一种基于场景的自适应视频编码方法 |
CN110830801A (zh) * | 2018-08-13 | 2020-02-21 | 华为技术有限公司 | 视频编码速率控制方法以及相关装置 |
CN110943997A (zh) * | 2019-12-03 | 2020-03-31 | 北京奇艺世纪科技有限公司 | 视频推送方法、装置、电子设备及计算机可读存储介质 |
CN111050175A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 视频编码的方法和装置 |
CN111566584A (zh) * | 2019-06-28 | 2020-08-21 | 深圳市大疆创新科技有限公司 | 一种图像处理的方法、装置和无人机 |
CN113206846A (zh) * | 2021-04-29 | 2021-08-03 | 杭州当虹科技股份有限公司 | 动态调整发送码率方法及装置 |
CN114071142A (zh) * | 2021-10-20 | 2022-02-18 | 镕铭微电子(济南)有限公司 | 一种基于硬件编码器的码率控制方法及设备 |
WO2022111258A1 (zh) * | 2020-11-27 | 2022-06-02 | 百果园技术(新加坡)有限公司 | 视频编码的方法、装置、设备和存储介质 |
CN115484470A (zh) * | 2021-06-15 | 2022-12-16 | 武汉斗鱼鱼乐网络科技有限公司 | 用于提高直播画面质量的方法、装置、介质及计算机设备 |
CN118413674A (zh) * | 2024-06-27 | 2024-07-30 | 杭州海康威视数字技术股份有限公司 | 自适应编码方法、装置、设备及计算机程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1988659A (zh) * | 2006-12-30 | 2007-06-27 | 清华大学 | 一种视频编码码率控制方法 |
CN101102494A (zh) * | 2007-07-23 | 2008-01-09 | 武汉大学 | 一种视频转码中宏块级码率控制方法 |
CN101159871A (zh) * | 2007-11-12 | 2008-04-09 | 中兴通讯股份有限公司 | 宏块组级视频码率控制方法 |
CN101494776A (zh) * | 2009-02-13 | 2009-07-29 | 北京邮电大学 | 一种h.264码率控制方法 |
-
2010
- 2010-04-22 CN CN 201010152237 patent/CN101795415B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1988659A (zh) * | 2006-12-30 | 2007-06-27 | 清华大学 | 一种视频编码码率控制方法 |
CN101102494A (zh) * | 2007-07-23 | 2008-01-09 | 武汉大学 | 一种视频转码中宏块级码率控制方法 |
CN101159871A (zh) * | 2007-11-12 | 2008-04-09 | 中兴通讯股份有限公司 | 宏块组级视频码率控制方法 |
CN101494776A (zh) * | 2009-02-13 | 2009-07-29 | 北京邮电大学 | 一种h.264码率控制方法 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103458237A (zh) * | 2012-05-29 | 2013-12-18 | 北京数码视讯科技股份有限公司 | 视频编码方式的确定方法和装置以及视频编码方法和装置 |
CN103458237B (zh) * | 2012-05-29 | 2016-09-21 | 北京数码视讯科技股份有限公司 | 视频编码方式的确定方法和装置以及视频编码方法和装置 |
CN103475934A (zh) * | 2013-09-13 | 2013-12-25 | 北京世纪鼎点软件有限公司 | 一种面向网络直播的视频编码流控方法 |
CN105472389A (zh) * | 2015-12-01 | 2016-04-06 | 上海交通大学 | 一种用于超高清视频处理系统的片外缓存压缩方法 |
CN105472389B (zh) * | 2015-12-01 | 2018-11-16 | 上海交通大学 | 一种用于超高清视频处理系统的片外缓存压缩方法 |
CN105763877A (zh) * | 2016-02-22 | 2016-07-13 | 青岛海信电器股份有限公司 | 一种视频帧像素块的压缩方法和装置 |
CN105763877B (zh) * | 2016-02-22 | 2019-01-01 | 青岛海信电器股份有限公司 | 一种视频帧像素块的压缩方法和装置 |
US10834405B2 (en) | 2017-03-07 | 2020-11-10 | Tencent Technology (Shenzhen) Company Limited | Bit rate allocation method and device, and storage medium |
CN107027030A (zh) * | 2017-03-07 | 2017-08-08 | 腾讯科技(深圳)有限公司 | 一种码率分配方法及其设备 |
CN110324615A (zh) * | 2018-03-30 | 2019-10-11 | 华为技术有限公司 | 一种码率分配方法及装置 |
CN110830801A (zh) * | 2018-08-13 | 2020-02-21 | 华为技术有限公司 | 视频编码速率控制方法以及相关装置 |
CN110830801B (zh) * | 2018-08-13 | 2021-10-01 | 华为技术有限公司 | 视频编码速率控制方法以及相关装置 |
CN111050175A (zh) * | 2018-10-15 | 2020-04-21 | 华为技术有限公司 | 视频编码的方法和装置 |
CN111566584A (zh) * | 2019-06-28 | 2020-08-21 | 深圳市大疆创新科技有限公司 | 一种图像处理的方法、装置和无人机 |
CN110545418A (zh) * | 2019-08-27 | 2019-12-06 | 杭州当虹科技股份有限公司 | 一种基于场景的自适应视频编码方法 |
CN110519571A (zh) * | 2019-09-19 | 2019-11-29 | 天津英田视讯科技有限公司 | 一种基于场景复杂度动态调整编码器参数的方法 |
CN110943997A (zh) * | 2019-12-03 | 2020-03-31 | 北京奇艺世纪科技有限公司 | 视频推送方法、装置、电子设备及计算机可读存储介质 |
CN110943997B (zh) * | 2019-12-03 | 2022-05-31 | 北京奇艺世纪科技有限公司 | 视频推送方法、装置、电子设备及计算机可读存储介质 |
WO2022111258A1 (zh) * | 2020-11-27 | 2022-06-02 | 百果园技术(新加坡)有限公司 | 视频编码的方法、装置、设备和存储介质 |
CN113206846A (zh) * | 2021-04-29 | 2021-08-03 | 杭州当虹科技股份有限公司 | 动态调整发送码率方法及装置 |
CN113206846B (zh) * | 2021-04-29 | 2022-12-02 | 杭州当虹科技股份有限公司 | 动态调整发送码率方法及装置 |
CN115484470A (zh) * | 2021-06-15 | 2022-12-16 | 武汉斗鱼鱼乐网络科技有限公司 | 用于提高直播画面质量的方法、装置、介质及计算机设备 |
CN114071142A (zh) * | 2021-10-20 | 2022-02-18 | 镕铭微电子(济南)有限公司 | 一种基于硬件编码器的码率控制方法及设备 |
CN114071142B (zh) * | 2021-10-20 | 2024-06-11 | 镕铭微电子(济南)有限公司 | 一种基于硬件编码器的码率控制方法及设备 |
CN118413674A (zh) * | 2024-06-27 | 2024-07-30 | 杭州海康威视数字技术股份有限公司 | 自适应编码方法、装置、设备及计算机程序产品 |
CN118413674B (zh) * | 2024-06-27 | 2024-08-23 | 杭州海康威视数字技术股份有限公司 | 自适应编码方法、装置、设备及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN101795415B (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101795415B (zh) | 一种视频编码中的码率控制方法及其装置 | |
CN1910934B (zh) | 自适应速率控制编码器 | |
US8824546B2 (en) | Buffer based rate control in video coding | |
CN108235016B (zh) | 一种码率控制方法及装置 | |
KR100484148B1 (ko) | 개선된 비트율 제어 방법과 그 장치 | |
US8223836B2 (en) | Constant-quality rate control system and algorithm for regions of interest | |
JP5365518B2 (ja) | 画像処理装置及び方法 | |
CN101395923B (zh) | 用于在图像信号编码中为图像中的像素块组确定比特分配的方法及设备 | |
CN106231320B (zh) | 一种支持多机并行编码的联合码率控制方法及系统 | |
CN108200431B (zh) | 一种视频编码码率控制帧层比特分配方法 | |
WO2009121234A1 (zh) | 一种视频压缩码率控制方法 | |
CN102868883B (zh) | 一种视频编码的码率控制方法 | |
CN105681793A (zh) | 基于视频内容复杂度自适应的极低延迟高性能视频编码帧内码率控制方法 | |
CN103533365A (zh) | 比特率控制方法与比特率控制系统 | |
JP6690254B2 (ja) | 画像符号化装置、方法及びプログラム | |
CN112188208A (zh) | 一种宏块级码率控制方法及相关装置 | |
KR20120096863A (ko) | 고효율 비디오 부호화의 계층적 부호화 구조를 위한 비트율 제어 기법 | |
CN100448295C (zh) | 一种低复杂度的积分码率控制方法 | |
CN117956160A (zh) | 码率控制方法、码率控制装置以及计算机存储介质 | |
CN117956159A (zh) | 视频码率控制方法、视频码率控制装置及计算机存储介质 | |
CN102724507B (zh) | 一种gpu加速编码器码率控制方法 | |
CN103051897A (zh) | 一种h264视频编码码率控制方法 | |
JP2004328150A (ja) | 動画像符号化装置及び方法 | |
CN100563336C (zh) | 一种基于手机电视的恒定码率控制方法 | |
CN102271247B (zh) | 一种编码码率调整方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |