CN111479113B - 码率控制方法和装置、存储介质和电子设备 - Google Patents

码率控制方法和装置、存储介质和电子设备 Download PDF

Info

Publication number
CN111479113B
CN111479113B CN202010297264.3A CN202010297264A CN111479113B CN 111479113 B CN111479113 B CN 111479113B CN 202010297264 A CN202010297264 A CN 202010297264A CN 111479113 B CN111479113 B CN 111479113B
Authority
CN
China
Prior art keywords
roi
frame
nonroi
bit
real
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
Application number
CN202010297264.3A
Other languages
English (en)
Other versions
CN111479113A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010297264.3A priority Critical patent/CN111479113B/zh
Publication of CN111479113A publication Critical patent/CN111479113A/zh
Application granted granted Critical
Publication of CN111479113B publication Critical patent/CN111479113B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种码率控制方法和装置、存储介质和电子设备。该方法包括:在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,QPi_init_roi和Biti_estimate_roi是根据对第i‑1帧图像进行编码所得到的第i‑1帧平均量化参数QPi‑1_real和第i‑1帧实际帧大小Biti‑1_real确定得到的;使用QPi_init_roi和Biti_estimate_roi对第i帧图像进行编码,获取对第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi;根据QPi_real_roi确定第i帧更新量化参数QPi_nonroi,根据Biti_real_roi确定第i帧更新帧大小Biti_nonroi,QPi_nonroi大于QPi_real_roi,Biti_nonroi小于Biti_real_roi;使用QPi_nonroi和Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi

Description

码率控制方法和装置、存储介质和电子设备
技术领域
本发明涉及计算机领域,具体而言,涉及一种码率控制方法和装置、存储介质和电子设备。
背景技术
用户在观看一帧画面时,往往只对画面中的部分区域感兴趣,我们称这个区域为ROI。对于视频软件、视频网站来说,为了给用户更好的观影体验,希望能将码率分配到ROI中,而非ROI获得码率保持不变,即ROI画质增强,非ROI画质与原先保持一致。
相关技术中,一种常见的ROI码率控制方法为:在ROI检测后,根据检测信息生成一张QP-OFFSET表,之后将该表传入编码器。编码器在编码具体CTU时,根据QP-OFFSET表中对应位置的数值,对当前CTU的QP进行调整,以达到调整码率分配的目的。但是,通过这种方式会引发画面劣化问题,以及码率浪费的问题。
因此,相关技术中,在进行码率控制时,存在码率浪费的问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种码率控制方法和装置、存储介质和电子设备,以至少解决在进行码率控制时,存在码率浪费的技术问题。
根据本发明实施例的一个方面,提供了一种码率控制方法,包括:在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi;根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi;使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
根据本发明实施例的另一方面,还提供了一种码率控制装置,包括:第一获取单元,用于在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;第一处理单元,用于使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi;第一确定单元,用于根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi;第二确定单元,用于使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述码率控制方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述码率控制方法。
在本发明实施例中,对第i-1帧图像进行编码得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real,在待传输的第i帧图像为ROI帧图像的情况下,根据QPi-1_real和Biti-1_real来确定ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,然后使用QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi,并根据QPi_real_roi确定第i帧更新量化参数QPi_nonroi,以及根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi,最后,使用上述QPi_nonroi和上述Biti_nonroi对非ROI帧码控模型中的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi。通过上述方式,可以通过上一帧(第i-1帧)的历史参数QPi-1_real和Biti-1_real来确定当前帧(第i帧)的QPi_init_roi和预估帧大小Biti_estimate-roi,并通过来QPi-1_rea_roil更新当前帧的量化参数QPi_nonroi,以及通过Biti-1_real_roi更新当前帧的Biti_nonroi,以及使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,使得在每一帧编码结束后,ROI帧码控模型和非ROI帧码控模型互相更新模型参数,保证了两个模型都拥有足够的历史数据,进而保证后续帧预测的准确性,提高了码率控制的准确性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种码率控制方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的码率控制方法的流程示意图(一);
图3是根据本发明实施例的一种可选的码率控制方法的流程示意图(二);
图4是根据本发明实施例的一种可选的非ROI码控模型和ROI码控模型的示意图;
图5是根据本发明实施例的一种可选的码率控制方法的流程示意图(三);
图6是根据本发明实施例的一种可选的码率控制方法的流程示意图(四);
图7是根据本发明实施例的一种可选的码率控制装置的结构示意图;
图8是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中涉及到的技术术语包括:
1、人眼感兴趣区域(Region of Interest,简称ROI)。
2、Bitrate:码率,同时也指带宽。
3、码控:码率控制,用于对编码序列进行码率分配。
4、视频质量评测标准(Video Multi-Method Assessment Fusion,简称VMAF),为Netflix提供的视频质量评测工具,相比图像质量评估算法(structural similarityindex,简称SSIM)与峰值信噪比(Peak Signalto Noise Ratio,简称PSNR),VMAF的评测结果与人眼主观观看更一致。
5、编码树单元(Coding Tree Units,简称CTU),为高效视频编码(HighEfficiency Video Coding,简称HEVC)/H.265标准的基本编码模块。
6、编码单元(Coding Units,简称CU),为H.265的编码单位。
7、比特数Bits:用以衡量编码一帧的大小。
8、量化参数QP,直接影响编码后一帧的Bits。
9、平均码率控制方法(Average Bitrate Ratecontrol,简称ABR)。
根据本发明实施例的一个方面,提供了一种码率控制方法。可选地,上述码率控制方法可以但不限于应用于如图1所示的应用环境中。如图1所示,终端设备102在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的,并通过网络将QPi_init_roi和Biti_estimate_roi发送给服务器104。服务器104接收到QPi_init_roi和Biti_estimate_roi后,使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi;根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi;使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi;服务器104将更新后的第一目标参数通过网络传输给终端设备102。以上仅为一种示例,本申请实施例在此不作限定。
可选地,上述方法可以应用于视频播放软件、视屏播放网站等场景中,本实施例在此不作任何限定。
可选地,在本实施例中,上述终端设备可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。目标客户端可以是视频客户端、即时通信客户端、浏览器客户端、教育客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述只是一种示例,本实施例对此不做任何限定。
可选地,在本实施例中,作为一种可选的实施方式,该方法可以由服务器执行,也可以由终端设备执行,或者由服务器和终端设备共同执行,本实施例中,以由服务器(例如,上述服务器104)执行为例进行说明。如图2所示,上述码率控制方法的流程可以包括步骤:
步骤S202,在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的。
可选地,对第i-1帧图像进行编码可以得到第i-1帧的平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real,在第i帧图像(当前帧图像)为ROI帧图像的情况下,根据QPi-1_real和Biti-1_real可以得到ROI帧码控模型输出的第i帧的初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi
需要说明的是,获取通过以下公式确定的上述Biti_estimate_roi
Biti_estimate_roi=(coeff[i]*SATD[i]+offset[i])/(qscaleroi_init[i]*count[i])
count[i]=count[i-1]*0.5+1
coeff[i]=coeff[i-1]*0.5+(Biti-1_roi*qscaleroi_real[i-1]–offset[i-1]/count[i-1])/SATD[i-1]
offset[i]=offset[i-1]*0.5+(Biti-1_roi*qscaleroi_real[i-1])*(1–offset[i-1]/count[i-1])
QPi_init_roi=12+6*log2(qscaleroi_init[i]/0.85)
QPi-1_roi=12+6*log2(qscaleroi_real[i-1]/0.85)
QPi-1_roi=qScale2QP(qp2QScale(QPi-1_real_nonroi)/(1+ratio))
Biti-1_roi=Biti-1_real_roi*(1+ratio)
其中,上述(1+ratio)为预设期望比率,上述qScale2QP和qp2QScale为互逆运算;
其中,上述SATD[i-1]为预先获取的编码参数。
步骤S204,使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
可选地,可以使用QPi_init_roi和Biti_estimate_roi对第i帧图像(当前帧图像)进行编码,并获取对第i帧图像进行编码得到的第i帧的平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
步骤S206,根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi
可选地,根据QPi_real_roi确定第i帧的非ROI码控模型的更新量化参数QPi_nonroi,并根据Biti_real_roi确定第i帧的非ROI码控模型的更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi
步骤S208,使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
可选地,可以使用QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,该第一目标参数可以用于在第i+1帧图像(下一帧图像)为非ROI帧图像的情况下,来确定第i+1帧的初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
通过本实施例,对第i-1帧图像进行编码得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real,在待传输的第i帧图像为ROI帧图像的情况下,根据QPi-1_real和Biti-1_real来确定ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,然后使用QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi,并根据QPi_real_roi确定第i帧更新量化参数QPi_nonroi,以及根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi,最后,使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi。通过上述方式,可以通过上一帧(第i-1帧)的历史参数QPi-1_real和Biti-1_real来确定当前帧(第i帧)的QPi_init_roi和预估帧大小Biti_estimate-roi,并通过来QPi-1_rea_roil更新当前帧的量化参数QPi_nonroi,以及通过Biti-1_real_roi更新当前帧的Biti_nonroi,以及使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,使得在每一帧编码结束后,ROI帧码控模型和非ROI帧码控模型互相更新模型参数,保证了两个模型都拥有足够的历史数据,进而保证后续帧预测的准确性,提高了码率控制的准确性。
可选地,在本实施例中,上述根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,包括:根据上述QPi_real_roi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_nonroi,其中,上述QPi_nonroi与上述(1+ratio)呈正相关。
可选地,在第i帧图像为ROI帧图像的情况下,可以通过QPi_real_roi和预设期望比率(1+ratio)来确定上述第i帧更新量化参数QPi_nonroi,其中,上述QPi_nonroi与上述(1+ratio)呈正相关,ratio可以设置为0.15、0.2、0.3等等,本实施在此不作任何限定。
通过本实施例,可以通过QPi_real_roi和预设期望比率(1+ratio)对非ROI模型模型中的QPi_nonroi进行更新,使得非ROI码控模型的参数更加精确,提高了非ROI码控模型的精确度。
可选地,在本实施例中,上述根据上述QPi_real_roi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_nonroi,包括:通过以下公式确定上述QPi_nonroi:QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio))其中,上述qScale2QP和qp2QScale为互逆运算。
可选地,可以按照以下公式计算QPi_nonroi
如QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio)),其中,上述qScale2QP和qp2QScale为互逆运算。
可理解,上述仅为一种示例,本实施例对此不作具体限定。
可选地,在本实施例中,上述根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,包括:根据上述Biti_real_roi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_nonroi,其中,上述Biti_nonroi与上述(1+ratio)呈负相关。
可选地,在第i帧图像为ROI帧图像的情况下,可以通过上述Biti_real_roi和预设期望比率(1+ratio)来确定上述第i帧更新帧大小Biti_nonroi,其中,上述Biti_nonroi与上述(1+ratio)呈负相关。
可选地,在本实施例中,上述根据上述Biti_real_roi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_nonroi,包括:通过以下公式确定上述Biti_nonroi:Biti_nonroi=Biti_real_roi/(1+ratio)。
可选地,可以按照以下公式计算Biti_nonroi
如Biti_nonroi=Biti_real_roi/(1+ratio)。
可选地,在本实施例中,上述使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,包括:获取与上述QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i];获取与上述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i];通过以下公式确定上述第一目标参数:cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i]其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
可选地,可以通过以下方式来确定非ROI码控模型中第i+1帧的第一目标参数:首先,获取与QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i],然后获取与上述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i],最后,可以按照以下公式对对上述第一目标参数:
cplxr_sumnonroi[i+1]=
cplxr_sumnonroi[i]+Biti_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i]
其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
可选地,在本实施例中,上述获取与上述QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i],包括:获取通过如下公式确定的qscalenonroi_real[i]:QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85);上述获取与上述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i],包括:获取通过如下公式确定的qscalenonroi_init[i]:
QPi_init_roi=12+6*log2(qscalenonroi_init[i]/0.85)。
可选地,可以通过公式QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85)来确定第一中间变量qscalenonroi_real[i]。
以及通过公式QPi_init_roi=12+6*log2(qscalenonroi_init[i]/0.85)来确定第二中间变量qscalenonroi_init[i]i
可选地,在本实施例中,在获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi之后,上述方法还包括:使用上述QPi_real_roi和上述Biti_real_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,其中,上述第二目标参数用于在第i+1帧图像为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
可选地,可以使用上述QPi_real_roi和上述Biti_real_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,其中,上述第二目标参数用于在第i+1帧图像(下一帧图像)为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
通过上述方式,可以通过当前帧图像的QPi_real_roi和上述Biti_real_roi确定第i+1帧(下一帧图像,如ROI帧图像)的初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi,通过以上一帧的历史参数确定当前帧的参数,以及通过当前帧的参数确定下一帧的参数的方式,使得码率控制有更多的历史参数可以参考,提高了码率控制的精度。
可选地,在本实施例中,上述方法还包括:上述使用上述QPi_real_roi和上述Biti_real_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,包括:获取与上述QPi_real_roi对应的第i帧的第三中间变量qscaleroi_real[i];获取与上述QPi_init_roi对应的第i帧的第四中间变量qscaleroi_init[i];通过以下公式确定上述第二目标参数:cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_real_roi*qscaleroi_real[i]/qscaleroi_init[i],其中,cplxr_sumroi[i+1]为上述第二目标参数。
可选地,可以按照以下方式确定上述ROI帧码控模型中第i+1帧的第二目标参数,首先,获取与上述QPi_real_roi对应的第i帧的第三中间变量qscaleroi_real[i];获取与上述QPi_init_roi对应的第i帧的第四中间变量qscaleroi_init[i];通过以下公式确定上述第二目标参数:cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_real_roi*qscaleroi_real[i]/qscaleroi_init[i],其中,cplxr_sumroi[i+1]为上述第二目标参数。
可选地,在本实施例中,上述获取与上述QPi_real_roi对应的第i帧的第三中间变量qscaleroi_real[i],包括:获取通过如下公式确定的qscaleroi_real[i]:QPi_real_roi=12+6*log2(qscaleroi_real[i]/0.85);上述获取与上述QPi_init_roi对应的第i帧的第四中间变量qscaleroi_init[i],包括:获取通过如下公式确定的qscaleroi_init[i]:QPi_init_roi=12+6*log2(qscaleroi_init[i]/0.85)。
可选地,可以按照以下公式确定第i帧的第三中间变量qscaleroi_real[i]:
如QPi_real_roi=12+6*log2(qscaleroi_real[i]/0.85)。
可选地,可以按照以下公式确定第i帧的第四中间变量qscaleroi_init[i]:
qscaleroi_init[i]:QPi_init_roi=12+6*log2(qscaleroi_init[i]/0.85)。
可选地,在本实施例中,在上述使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数之后,上述方法还包括:在待传输的第i+1帧图像为非ROI帧图像的情况下,获取上述非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi,其中,上述QPi+1_init_nonroi和Biti+1_estimate_nonroi是根据上述第一目标参数确定得到的;使用上述QPi+1_init_nonroi和Biti+1_estimate_nonroi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_nonroi和第i+1帧实际帧大小Biti+1_real_nonroi;根据上述QPi+1_real_nonroi确定第i+1帧更新量化参数QPi+1_roi,并根据上述Biti+1_real_nonroi确定第i+1帧更新帧大小Biti+1_roi,其中,上述QPi+1_roi小于上述QPi+1_real_nonroi,上述Biti+1_roi大于上述Biti+1_real_nonroi;使用上述QPi+1_roi和上述Biti+1_roi确定上述ROI帧码控模型中第i+2帧的第二目标参数,其中,上述第二目标参数用于在第i+2帧图像为ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_roi和第i+2帧预估帧大小Biti+2_estimate_roi
可选地,在第i帧图像(当前帧图像)为ROI帧图像,且使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数之后,如果待传输的第i+1帧图像(下一帧图像)为非ROI帧图像的情况下,可以根据第一目标参数来确定非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
然后,使用QPi+1_init_nonroi和Biti+1_estimate_nonroi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_nonroi和第i+1帧实际帧大小Biti+1_real_nonroi
然后,根据上述QPi+1_real_nonroi来确定第i+1帧更新量化参数QPi+1_roi,并根据上述Biti+1_real_nonroi来确定第i+1帧更新帧大小Biti+1_roi,其中,上述QPi+1_roi小于上述QPi+1_real_nonroi,上述Biti+1_roi大于上述Biti+1_real_nonroi
最后,可以使用上述QPi+1_roi和上述Biti+1_roi确定上述ROI帧码控模型中第i+2帧的第二目标参数,其中,上述第二目标参数用于在第i+2帧图像为ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_roi和第i+2帧预估帧大小Biti+2_estimate_roi
通过本实施例,可以通过第i+1帧的QPi+1_roi和上述Biti+1_roi来确定ROI帧码控模型中的第二目标参数,使得第二目标参数可以确定第i+2帧图像(如ROI帧图像)的初始量化参数QPi+2_init_roi和第i+2帧预估帧大小Biti+2_estimate_roi,通过这种方式可以使得码控模型更加精确,提高了码率控制的精确度。
可选地,在本实施例中,上述获取上述非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi,包括:获取通过以下公式确定的上述QPi+1_init_nonroi:QPi+1_init_nonroi=qscale_raw/rateFactor其中,上述qscale_raw是根据上述第i+1帧图像的复杂度预先估计出的参数;rateFactor=wanted_bits[i+1]/cplxr_sumnonroi[i+1],cplxr_sumnonroi[i+1]为上述第一目标参数;wanted_bits[i+1]=Bitrate/fps*frame_num[i+1]其中,Bitrate为预设的码率,fps为帧率,frame_num[i+1]为当前已经编码的帧数。
可选地,通过以下公式确定第一目标参数cplxr_sumnonroi[i+1]:
如rateFactor=wanted_bits[i+1]/cplxr_sumnonroi[i+1]。
wanted_bits[i+1]=Bitrate/fps*frame_num[i+1]
其中,Bitrate为预设的码率,fps为帧率,frame_num[i+1]为当前已经编码的帧数。
然后,可以按照以下公式来确定QPi+1_init_nonroi
如QPi+1_init_nonroi=qscale_raw/rateFactor。
可选地,在本实施例中,上述获取上述非ROI帧码控模型输出的第i+1帧预估帧大小Biti+1_estimate_nonroi,包括:获取通过以下公式确定的上述Biti+1_estimate_nonroi:Biti+1_estimate_nonroi=(coeff[i+1]*SATD[i+1]+offset[i+1])/(qscalenonroi_init[i+1]*count[i+1]),其中,coeff[i+1]和offset[i+1]为上述第一目标参数;count[i+1]=count[i]*0.5+1,coeff[i+1]=coeff[i]*0.5+(Biti_nonroi*qscalenonroi_real[i]–offset[i]/count[i])/SATD[i],offset[i+1]=offset[i]*0.5+(Biti_nonroi*qscalenonroi_real[i])*(1–offset[i]/count[i]),QPi+1_init_nonroi=12+6*log2(qscalenonroi_init[i+1]/0.85),QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85)QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio)),Biti_nonroi=Biti_real_roi/(1+ratio);其中,上述(1+ratio)为预设期望比率,上述qScale2QP和qp2QScale为互逆运算;其中,上述SATD[i]为预先获取的编码参数。
可选地,在本实施例中,上述使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,包括:依次对上述第i帧图像中的每个宏块执行以下操作,其中,上述第i帧图像被划分为多个宏块,在执行以下操作时每个宏块被视为当前宏块:在上述当前宏块为ROI宏块的情况下,使用上述QPi_init_roi、Biti_estimate_roi和ROI块码控模型对上述当前宏块进行编码,得到编码后的第一编码参数;使用上述第一编码参数对非ROI块码控模型进行更新;使用上述第一编码参数对上述ROI块码控模型进行更新;在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_roi、Biti_estimate_roi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第二编码参数;使用上述第二编码参数对上述非ROI块码控模型进行更新;使用上述第二编码参数对上述ROI块码控模型进行更新。
可选地,对于行级码控来说,可以将第i帧图像分为多个宏块,然后依次对上述第i帧图像中的每个宏块执行以下操作,其中,在执行以下操作时每个宏块被视为当前宏块:
在上述当前宏块为ROI宏块的情况下,可以使用上述QPi_init_roi、Biti_estimate_roi和ROI块码控模型对上述当前宏块进行编码,从而得到编码后的第一编码参数,然后使用上述第一编码参数对非ROI块码控模型;使用上述第一编码参数对上述ROI块码控模型。
在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_roi、Biti_estimate_roi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第二编码参数;使用上述第二编码参数对上述非ROI块码控模型;使用上述第二编码参数对上述ROI块码控模型。
需要说明的是,当前宏块(或CTU)在拿到最新编码宏块(或CTU)的QP值(如QPi_init_roi、Biti_estimate_roi)后,其中,最早的宏块或CTU使用初始QP,然后根据拿到的最新编码宏块的QP值(如QPi_init_roi)估计当前帧编码后的大小(如Biti_estimate_roi),如果当前帧编码后的大小(如Biti_estimate_roi)超过了预估的bits(目标码率),则将该最新编码宏块的QP值(如QPi_init_roi)往上调0.5,直到预估的bits和目标码率接近,如果当前帧编码后的大小(如Biti_estimate_roi)小于目标码率,则将该最新编码宏块的QP值(如QPi_init_roi)往下调0.5,直到预估的bits和目标码率接近。
可选地,在本实施例中,上述方法还包括:在待传输的第i帧图像为非ROI帧图像的情况下,获取上述非ROI帧码控模型输出的第i帧初始量化参数QPi_init_nonroi和第i帧预估帧大小Biti_estimate_nonroi,其中,上述QPi_init_nonroi和Biti_estimate_nonroi是根据对第i-1帧图像进行编码所得到的上述第i-1帧平均量化参数QPi-1_real和上述第i-1帧实际帧大小Biti-1_real确定得到的;使用上述QPi_init_nonroi和Biti_estimate_nonroi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_nonroi和第i帧实际帧大小Biti_real_nonroi;根据上述QPi_real_nonroi确定第i帧更新量化参数QPi_roi,并根据上述Biti_real_nonroi确定第i帧更新帧大小Biti_roi,其中,上述QPi_roi小于上述QPi_real_nonroi,上述Biti_roi大于上述Biti_real_nonroi;使用上述QPi_roi和上述Biti_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,其中,上述第二目标参数用于在第i+1帧图像为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
可选地,对第i-1帧图像进行编码可以得到第i-1帧的平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real,在第i帧图像(当前帧图像)为非ROI帧图像的情况下,根据QPi-1_real和Biti-1_real可以得到非ROI帧码控模型输出的第i帧的初始量化参数QPi_init_nonroi和第i帧预估帧大小Biti_estimate_nonroi
可以使用QPi_init_nonroi和Biti_estimate_nonroi对第i帧图像(当前帧图像)进行编码,并获取对第i帧图像进行编码得到的第i帧的平均量化参数QPi_real_nonroi和第i帧实际帧大小Biti_real_nonroi
根据QPi_real_nonroi确定第i帧更新量化参数QPi_roi,并根据Biti_real_nonroi确定第i帧更新帧大小Biti_roi,其中,上述QPi_roi小于上述QPi_real_nonroi,上述Biti_roi大于上述Biti_real_nonroi
可以使用QPi_roi和上述Biti_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,该第二目标参数可以用于在第i+1帧图像(下一帧图像)为ROI帧图像的情况下,来确定第i+1帧的初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
可选地,在本实施例中,上述根据上述QPi_real_nonroi确定第i帧更新量化参数QPi_roi,包括:根据上述QPi_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_roi,其中,上述QPi_roi与上述(1+ratio)呈负相关。
可选地,在第i帧图像为非ROI帧图像的情况下,可以通过QPi_real_nonroi和预设期望比率(1+ratio)来确定上述第i帧更新量化参数QPi_roi,其中,上述QPi_roi与上述(1+ratio)呈负相关,ratio可以设置为0.15、0.2、0.3等等,本实施在此不作任何限定。
通过本实施例,可以通过QPi_real_nonroi和预设期望比率(1+ratio)对ROI模型模型中的QPi_roi,使得ROI码控模型的参数更加精确,提高了ROI码控模型的精确度。
可选地,在本实施例中,上述根据上述QPi_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_roi,包括:通过以下公式确定上述QPi_roi:QPi_roi=qScale2QP(qp2QScale(QPi_real_nonroi)/(1+ratio))其中,上述qScale2QP和qp2QScale为互逆运算。
可选地,可以按照以下公式计算QPi_roi
如QPi_roi=qScale2QP(qp2QScale(QPi_real_nonroi)*(1+ratio)),其中,上述qScale2QP和qp2QScale为互逆运算。
可理解,上述仅为一种示例,本实施例对此不作具体限定。
可选地,在本实施例中,上述根据上述Biti_real_nonroi确定第i帧更新帧大小Biti_roi,包括:根据上述Biti_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_roi,其中,上述Biti_roi与上述(1+ratio)呈正相关。
可选地,在第i帧图像为非ROI帧图像的情况下,可以通过上述Biti_real_nonroi和预设期望比率(1+ratio)来确定上述第i帧更新帧大小Biti_roi,其中,上述Biti_roi与上述(1+ratio)呈正相关。
可选地,在本实施例中,上述根据上述Biti_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_roi,包括:通过以下公式确定上述Biti_roi:Biti_roi=Biti_real_nonroi*(1+ratio)。
可选地,可以按照以下公式计算Biti_roi
如Biti_roi=Biti_real_nonroi*(1+ratio)。
可选地,在本实施例中,上述使用上述QPi_roi和上述Biti_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,包括:获取与上述QPi_roi对应的第i帧的第五中间变量qscaleroi_real[i];获取与上述QPi_init_nonroi对应的第i帧的第六中间变量qscaleroi_init[i];通过以下公式确定上述第二目标参数:cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_roi*qscaleroi_real[i]/qscaleroi_init[i],其中,cplxr_sumroi[i+1]为上述第二目标参数。
可选地,可以通过以下方式来确定ROI码控模型中第i+1帧的第二目标参数:首先,获取与QPi_roi对应的第i帧的第五中间变量qscaleroi_real[i],然后获取与上述QPi_init_nonroi对应的第i帧的第六中间变量qscaleroi_init[i],最后,可以按照以下公式确定上述第二目标参数:
cplxr_sumroi[i+1]=
cplxr_sumroi[i]+Biti_roi*qscaleroi_real[i]/qscaleroi_init[i]
其中,cplxr_sumroi[i+1]为上述第二目标参数。
可选地,在本实施例中,上述获取与上述QPi_roi对应的第i帧的第五中间变量qscaleroi_real[i],包括:获取通过如下公式确定的qscaleroi_real[i]:QPi_roi=12+6*log2(qscaleroi_real[i]/0.85);上述获取与上述QPi_init_nonroi对应的第i帧的第六中间变量qscaleroi_init[i],包括:获取通过如下公式确定的qscaleroi_init[i]:QPi_init_nonroi=12+6*log2(qscaleroi_init[i]/0.85)。
可选地,可以通过公式QPi_roi=12+6*log2(qscaleroi_real[i]/0.85)来确定第五中间变量qscaleroi_real[i]。
以及通过公式QPi_init_nonroi=12+6*log2(qscaleroi_init[i]/0.85)来确定第六中间变量qscaleroi_init[i]i
可选地,在本实施例中,在获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_nonroi和第i帧实际帧大小Biti_real_nonroi之后,上述方法还包括:使用上述QPi_real_nonroi和上述Biti_real_nonroi确定上述非ROI帧码控模型中第i+1帧的上述第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
可选地,可以使用上述QPi_real_nonroi和上述Biti_real_nonroi确定上述非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像(下一帧图像)为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
通过上述方式,可以通过当前帧图像的QPi_real_nonroi和上述Biti_real_nonroi确定第i+1帧(下一帧图像,如非ROI帧图像)的初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi,通过以上一帧的历史参数确定当前帧的参数,以及通过当前帧的参数确定下一帧的参数的方式,使得码率控制有更多的历史参数可以参考,提高了码率控制的精度。
可选地,在本实施例中,上述使用上述QPi_real_nonroi和上述Biti_real_nonroi确定上述非ROI帧码控模型中第i+1帧的第一目标参数,包括:获取与上述QPi_real_nonroi对应的第i帧的第七中间变量qscalenonroi_real[i];获取与上述QPi_init_nonroi对应的第i帧的第八中间变量qscalenonroi_init[i];通过以下公式确定上述第一目标参数:cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_real_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i]其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
可以按照以下方式确定上述非ROI帧码控模型中第i+1帧的第一目标参数,首先,获取与上述QPi_real_nonroi对应的第i帧的第七中间变量qscalenonroi_real[i];获取与上述QPi_init_nonroi对应的第i帧的第八中间变量qscalenonroi_init[i];通过以下公式确定上述第一目标参数:cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_real_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i],其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
可选地,在本实施例中,上述获取与上述QPi_real_nonroi对应的第i帧的第七中间变量qscalenonroi_real[i],包括:获取通过如下公式确定的qscalenonroi_real[i]:QPi_real_nonroi=12+6*log2(qscalenonroi_real[i]/0.85);上述获取与上述QPi_init_nonroi对应的第i帧的第八中间变量qscalenonroi_init[i],包括:获取通过如下公式确定的qscalenonroi_init[i]:QPi_init_nonroi=12+6*log2(qscalenonroi_init[i]/0.85)。
可选地,可以按照以下公式确定第i帧的第七中间变量qscalenonroi_real[i]:
如QPi_real_nonroi=12+6*log2(qscalenonroi_real[i]/0.85)。
可选地,可以按照以下公式确定第i帧的第八中间变量qscalenonroi_init[i]
QPi_init_nonroi=12+6*log2(qscalenonroi_init[i]/0.85)。
可选地,在本实施例中,在上述使用上述QPi_roi和上述Biti_roi确定ROI帧码控模型中第i+1帧的第二目标参数之后,上述方法还包括:在待传输的第i+1帧图像为ROI帧图像的情况下,获取上述ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi,其中,上述QPi+1_init_roi和Biti+1_estimate_roi是根据上述第二目标参数确定得到的;使用上述QPi+1_init_roi和Biti+1_estimate_roi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_roi和第i+1帧实际帧大小Biti+1_real_roi;根据上述QPi+1_real_roi确定第i+1帧更新量化参数QPi+1_nonroi,并根据上述Biti+1_real_roi确定第i+1帧更新帧大小Biti+1_nonroi,其中,上述QPi+1_nonroi大于上述QPi+1_real_roi,上述Biti+1_nonroi小于上述Biti+1_real_roi;使用上述QPi+1_nonroi和上述Biti+1_nonroi确定上述非ROI帧码控模型中第i+2帧的上述第一目标参数,其中,上述第一目标参数用于在第i+2帧图像为非ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_nonroi和第i+2帧预估帧大小Biti+2_estimate_nonroi
可选地,在第i帧图像(当前帧图像)为非ROI帧图像,且使用上述QPi_roi和上述Biti_roi确定ROI帧码控模型中第i+1帧的第二目标参数之后,如果待传输的第i+1帧图像(下一帧图像)为ROI帧图像的情况下,可以根据第二目标参数来确定ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
然后,使用QPi+1_init_roi和Biti+1_estimate_roi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_roi和第i+1帧实际帧大小Biti+1_real_roi
然后,根据上述QPi+1_real_roi来确定第i+1帧更新量化参数QPi+1_nonroi,并根据上述Biti+1_real_roi确定第i+1帧更新帧大小Biti+1_nonroi,其中,上述QPi+1_nonroi大于上述QPi+1_real_roi,上述Biti+1_nonroi小于上述Biti+1_real_roi
最后,可以使用上述QPi+1_nonroi和上述Biti+1_nonroi确定上述非ROI帧码控模型中第i+2帧的上述第一目标参数,其中,上述第一目标参数用于在第i+2帧图像为非ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_nonroi和第i+2帧预估帧大小Biti+2_estimate_nonroi
通过本实施例,可以通过第i+1帧的QPi+1_nonroi和上述Biti+1_nonroi来确定非ROI帧码控模型中的第一目标参数,使得第一目标参数可以确定第i+2帧图像(如ROI帧图像)的初始量化参数QPi+2_init_nonroi和第i+2帧预估帧大小Biti+2_estimate_nonroi,通过这种方式可以使得码控模型更加精确,提高了码率控制的精确度。
可选地,在本实施例中,上述获取上述ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_roi,包括:获取通过以下公式确定的上述QPi+1_init_roi:QPi+1_init_roi=qscale_raw/rateFactor,其中,上述qscale_raw是根据上述第i+1帧图像的复杂度预先估计出的参数;rateFactor=wanted_bits[i+1]/cplxr_sumroi[i+1],cplxr_sumroi[i+1]为上述第二目标参数;wanted_bits[i+1]=Bitrate/fps*frame_num[i+1],其中,Bitrate为预设的码率,上述fps为帧率,frame_num[i+1]为当前已经编码的帧数。
可选地,可选地,通过以下公式确定第二目标参数cplxr_sumroi[i+1]:
如rateFactor=wanted_bits[i+1]/cplxr_sumroi[i+1]。
wanted_bits[i+1]=Bitrate/fps*frame_num[i+1]
其中,Bitrate为预设的码率,fps为帧率,frame_num[i+1]为当前已经编码的帧数。
然后,可以按照以下公式来确定QPi+1_init_nonroi
如QPi+1_init_roi=qscale_raw/rateFactor。
可选地,在本实施例中,上述获取上述ROI帧码控模型输出的第i+1帧预估帧大小Biti+1_estimate_roi,包括:
获取通过以下公式确定的上述Biti+1_estimate_roi
Biti+1_estimate_roi=(coeff[i+1]*SATD[i+1]+offset[i+1])/(qscaleroi_init[i+1]*count[i+1]),其中,coeff[i+1]和offset[i+1]为上述第二目标参数,
count[i+1]=count[i]*0.5+1
coeff[i+1]=coeff[i]*0.5+(Biti_roi*qscaleroi_real[i]–offset[i]/count[i])/SATD[i]
offset[i+1]=offset[i]*0.5+(Biti_roi*qscaleroi_real[i])*(1–offset[i]/count[i])
QPi+1_init_roi=12+6*log2(qscaleroi_init[i+1]/0.85)
QPi_roi=12+6*log2(qscaleroi_real[i]/0.85)
QPi_roi=qScale2QP(qp2QScale(QPi_real_nonroi)/(1+ratio))
Biti_roi=Biti_real_nonroi*(1+ratio),其中,上述(1+ratio)为预设期望比率,上述qScale2QP和qp2QScale为互逆运算;其中,上述SATD[i]为预先获取的编码参数。
可选地,在本实施例中,上述使用上述QPi_init_nonroi和Biti_estimate_nonroi对上述第i帧图像进行编码,包括:依次对上述第i帧图像中的每个宏块执行以下操作,其中,上述第i帧图像被划分为多个宏块,在执行以下操作时每个宏块被视为当前宏块:在上述当前宏块为ROI宏块的情况下,使用上述QPi_init_nonroi、Biti_estimate_nonroi和ROI块码控模型对上述当前宏块进行编码,得到编码后的第三编码参数;使用上述第三编码参数对非ROI块码控模型进行更新;使用上述第三编码参数对上述ROI块码控模型进行更新;在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_nonroi、Biti_estimate_nonroi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第四编码参数;使用上述第四编码参数对上述非ROI块码控模型进行更新;使用上述第四编码参数对上述ROI块码控模型进行更新。
可选地,对于行级码控来说,可以将第i帧图像分为多个宏块,然后依次对上述第i帧图像中的每个宏块执行以下操作,其中,在执行以下操作时每个宏块被视为当前宏块:
在上述当前宏块为ROI宏块的情况下,可以使用QPi_init_nonroi、Biti_estimate_nonroi和ROI块码控模型对上述当前宏块进行编码,从而得到编码后的第三编码参数,然后使用上述第三编码参数对非ROI块码控模型进行更新;使用上述第三编码参数对上述ROI块码控模型进行更新;
在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_nonroi、Biti_estimate_nonroi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第四编码参数;使用上述第四编码参数对上述非ROI块码控模型进行更新;使用上述第四编码参数对上述ROI块码控模型进行更新。
需要说明的是,当前宏块(或CTU)在拿到最新编码宏块(或CTU)的QP值(如QPi_init_nonroi、Biti_estimate_nonroi)后,其中,最早的宏块或CTU使用初始QP,然后根据拿到的最新编码宏块的QP值(如QPi_init_nonroi)估计当前帧编码后的大小(如Biti_estimate_nonroi),如果当前帧编码后的大小(如Biti_estimate_nonroi)超过了预估的bits(目标码率),则将该最新编码宏块的QP值(如QPi_init_nonroi)往上调0.5,直到预估的bits和目标码率接近,如果当前帧编码后的大小(如Biti_estimate_roi)小于目标码率,则将该最新编码宏块的QP值(如QPi_init_nonroi)往下调0.5,直到预估的bits和目标码率接近。
下面结合可选示例对码率控制方法的流程进行说明。该方法具体如下上述:
需要说明的是,ABR码控简单来说就是先通过帧级码控,利用历史数据估计当前帧的帧级初始QP以及预估的帧大小Bitsestimate,之后通过行级码控,在帧级初始QP的基础上进行微调,并且尽量确保一帧编码完毕后实际消耗的Bitsreal不会超过Bitsestimate。一帧编码结束后,统计一帧所有CTU的平均QP和实际消耗的Bitsreal,利用这些统计数据对码控模型进行参数更新。可理解,影响一帧Bitsreal的有帧级初始QP和Bitsestimate,这两个值又受已完成编码的帧的平均QP和Bitsreal影响。因此一帧编码结束后,码控模型参数的更新对于码率控制的准确性十分重要。
如图3所示,以下详细描述码控模型的参数更新的过程:
需要说明的是,I帧是关键帧,属于帧内压缩,P是向前搜索的意思,B是双向搜索。他们都是基于I帧来压缩数据。
I帧表示关键帧,可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(包含完整画面)。
P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)。
B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别。
步骤S301,对当前一帧进行编码,并判断当前一帧的帧类型。在当前一帧为P帧时,跳转至步骤S302,在当前一帧为I帧时,跳转至步骤S308,在当前一帧为B帧时,跳转至步骤S309。
步骤S302,确定该P帧的复杂度。
步骤S303,确定P帧的初始QP。
步骤S304,进行Overflow调整。
步骤S305,对相邻帧的QP值进行限制。
步骤S306,视频缓冲检验器(Video Buffering Verifier,简称VBV)调整QP。
步骤S307,输出真实的帧级QP。
步骤S308,确定I帧的初始QP,然后跳转至步骤S306。
步骤S309,确定I帧的初始QP,并进行CBR判定,在判断为是的情况下,进行Overflow调整,在判断为否的情况下,跳转至步骤S310。
步骤S310,对该一帧进行行级码控。
步骤S311,进行码控模型的参数更新。
需要说明的是,从帧的角度去看,每一帧被分为ROI帧(检测到ROI的帧)和非ROI帧(没有检测到ROI的帧);从CTU的角度去看,每一个CTU被分为ROI-CTU和非ROI-CTU。可以将新增的码率尽量分配到ROI的CTU上,而非ROI-CTU则与关闭ROI(不开启ROI功能)时,保持一致。
为了实现上述目标,可以进一步细分成两个子目标:
1.将新增码率约束到ROI帧上—帧级码控。
2.将新增码率约束到ROI-CTU上—行级码控。
可选地,在帧级和行级都维护了两个码控模型——ROI码控、非ROI码控。如图4所示,为ROI码控、非ROI码控的示意图。两个码控模型的内部流程是一致的,只是参数配置不同。非ROI码控的结果要与关闭ROI时码控结果接近;ROI码控的结果要能给ROI帧和ROI-CTU分配更多的码率。
可选地,根据之前ABR的描述,历史数据对于码控模型预估的准确性十分重要。为了保证两个码控模型都有足够的历史数据进行估计,每一帧或CTU在进行码控时,都会调用两个码控模型,如果当前帧为ROI帧或CTU,则使用ROI码控预估的结果,并且在编码结束后,除了更新ROI码控模型,还需要通过映射关系估算出在非ROI码控模型下,当前帧或CTU的平均QP和Bitsreal,更新非ROI码控模型;反之,则使用非ROI码控预估的结果,并且在编码结束后,通过映射关系,更新ROI码控模型。
可选地,如图5所示,为帧级码控流程的示意图,帧级码控的具体步骤如下:
步骤S501,对当前帧进行编码。
步骤S502,判断当前帧是否为ROI帧。若是,则执行步骤步骤S503,若否,则执行步骤S506。
步骤S503,在当前帧为ROI帧的情况下,进行ROI帧的帧级码控,并跳转至步骤S504。
步骤S504,对ROI码控模型的参数进行更新,跳转至步骤S505。
步骤S505,通过当前ROI帧的参数确定非ROI码控模型的参数,跳转至步骤S509。
步骤S506,在当前帧为非ROI帧的情况下,进行非ROI帧的帧级码控,并跳转至步骤S507。
步骤S507,对非ROI码控模型的参数进行更新,跳转至步骤S508。
步骤S508,通过当前非ROI帧的参数确定ROI码控模型的参数,跳转至步骤S509。
步骤S509,对下一帧进行编码。
可选地,可以通过两个码控模型之间互相更新来实现码控模型参数的更新。在X265的码控中,引入了一个中间变量QScale,码率控制主要围绕着QScale的估计和更新展开。QScale与QP为如下对应关系:
QP=12+6*log2(QScale/0.85)
初始QP有一个对应的QScaleinit,而编码后的平均QP有一个对应的QScalereal
需要说明的是,对QScaleinit可以按照以下步骤进行计算:
步骤1,根据当前帧的复杂度估计出初始qscale_raw。
步骤2,根据Bitrate计算出wanted_bits。
wanted_bits=Bitrate/fps*frame_num
其中,fps为帧率,frame_num为当前已经编码的帧数。
步骤3,通过历史qScale与Bits的关系,以及wanted_bits计算出rateFactor。
rateFactor=wanted_bits/cplxr_sum
其中,cplxr_sum历史qScale与Bits的关系,关系如下:
cplxr_sum[i]=cplxr_sum[i–1]+bits[i-1]*qscale_real[i–1]/qscale_adjust[i–1]
其中,cplxr_sum[i–1]为上一帧的历史qScale与Bits的关系,bits[i-1]为上一帧的实际编码bits,qscale_real[i–1]为上一帧的编码后的平均QP对应的qscale,qscale_adjust为经过帧级码控演算后初始QP所对应的qscale。
步骤4,使用rateFactor对qscale_raw进行调整:
qscale_adjust=qscale_raw/rateFactor,其中,qscale_adjust即为上述QScale_init。
码控模型首先估计出QScaleinit,之后通过上述关系获取初始QP。同时利用历史累计的QScalereal与历史累计的Bitsreal的关系,通过QScaleinit估计出Bitsestimate。虽然实际计算过程比较复杂,但是一般可以认为QScale与Bits存在倒数关系,如果希望Bits增加20%,则可以通过将QScale减小20%。
需要说明的是,Bits_estimate可以按照以下方式进行计算:
Bits_estimate[i]=(coeff*SATD[i]+offset)/(qscale_adjust[i]*count)
其中,count[i]=count[i–1]*0.5+1
coeff[i]=coeff[i–1]*0.5+(bits[i–1]*qscale_real[i–1]–offset[i–1]/count[i-1])/SATD[i–1]
offset[i]=offset[i–1]*0.5+(bits[i–1]*qscale_real[i–1])*(1–offset[i–1]/count[i-1])
其中,count[0]=0,coeff[0]=0.75,offset[0]=0。
可理解,以上仅为一种示例,本实施在此不作任何限定。
鉴于以上关系,我们可以通过线性修改QScale来实现两个模型之间的映射。
可选地,在本实施例中,可以选择ROI帧要比关闭ROI时多分配到(1+ratio)的Bits。
如果当前帧为ROI帧,编码后得到平均QProi以及Bitsreal_roi,要估计在非ROI码控模型下编码后的平均QPnonroi以及Bitsreal_nonroi,用以更新非ROI码控模型,则可以根据以下公式进行换算:
Figure GDA0002909506640000291
其中,qScale2QP和qp2QScale为互逆运算,为QScale和QP关系的函数实现。
可选地,如果当前帧为非ROI帧,则可使用以下公式进行换算:
Figure GDA0002909506640000292
可选地,如图6所示,为行级码控流程的示意图,以下描述行级码控的过程:
步骤S601,对当前帧的当前宏块进行编码。
步骤S602,判断当前宏块是否为ROI宏块。若是,则执行步骤步骤S603,若否,则执行步骤S606。
步骤S603,在当前宏块为ROI宏块的情况下,进行ROI宏块的行级码控,并跳转至步骤S604。
步骤S604,对ROI码控模型的参数进行更新,跳转至步骤S605。
步骤S605,通过当前ROI宏块的参数确定非ROI码控模型的参数,跳转至步骤S609。
步骤S606,在当前宏块为非ROI宏块的情况下,进行非ROI宏块的行级码控,并跳转至步骤S607。
步骤S607,对非ROI码控模型的参数进行更新,跳转至步骤S608。
步骤S608,通过当前非ROI宏块的参数确定ROI码控模型的参数,跳转至步骤S609。
步骤S609,判断所有的宏块是否编码完成,若完成,则按照ROI块比例更新帧级码控。
在一种可选的实施例中,行级码控的修改与帧级码控类似,只是在全部CTU编码完成后,新增了一个按照ROI块比例更新帧级码控的过程。
为了将新增码率约束到ROI帧中,帧级码控把ROI帧全部CTU当作ROI-CTU来进行码率控制。而在ROI帧中,包含了ROI-CTU和非ROI-CTU,ROI-CTU只占了其中一部分。编码后,所有CTU的平均QP和累加的Bitsreal包含了ROI-CTU和非ROI-CTU,用这个数据去更新帧级码控,会导致帧级码控模型逐渐失准,为此需要将累加的Bitsreal,经过如下公式换算:
Bitsreal_roi=Bitsreal*(1+ratio)/(1+ratio*roiPercent)
其中,roiPercent为ROI帧中ROI-CTU所占的比例,Bitsreal_roi为真正提供给帧级码控模型的数据。
而对于平均QP,则需记录每个CTU在ROI行级码控下的QP和非ROI行级码控下的QP,并分别计算两个行级码控的平均QP,作为对应帧级码控模型更新时所需的数据。
可选地,为了确保ROI比非ROI分配更多的Bits,在ABR码率控制模型初始化时,需要配置目标码率Bitratetarget
双码率控制模型包含ROI帧级码控和非ROI帧级码控,ROI行级码控和非ROI行级码控。
对于帧级码控来说,ROI帧级码控假设所有视频帧的CTU都为ROI宏块,非ROI帧级码控假设所有视频帧的CTU都为非ROI宏块。因此如果非ROI帧配置的目标码率是Bitratenonroi_targe,现要求给ROI帧比非ROI帧多分配(1+ratio)的码率,则需要给ROI帧级码控配置(1+ratio)*Bitratenonroi_targe的码率。这样就可以确保ROI帧能获得更多的Bits。其中,ROI帧配置的目标码率是Bitrateroi_targe,且Bitrateroi_targe=(1+ratio)*Bitratenonroi_targe
对于行级码控来说,因为ROI行级码控使用的初始QP和预估的Bits为ROI帧级码控演算所得,而非ROI行级码控使用的是非ROI帧级码控演算所得。所以当CTU为ROI-CTU时,自然会比非ROI-CTU分配更多的Bits。
可选地,以下是本申请与QP-OFFSET表、关闭ROI时的客观实验结果对比。
Figure GDA0002909506640000311
表1
由上表可以得出,ROI编码v2.0在码率比ROI编码v1.0低14.4%的条件下,ROI平均PSNR比ROI编码v1.0高1.38db,ROI平均VMAF高了9.16。
通过本实施例,通过上述基于双码控模型的感兴趣区域平均码率控制方式,能够使得视频软件、视频网站等在启用ROI码率控制后,ROI画质变好,非ROI画质不变的需求,降低了码率的浪费,提高了对码率的控制效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的又一方面,还提供了一种码率控制装置,如图7所示,该装置包括:
第一获取单元702,用于在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;
第一处理单元704,用于使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
第一确定单元706,用于根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi
第二确定单元708,用于使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
通过本实施例,对第i-1帧图像进行编码得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real,在待传输的第i帧图像为ROI帧图像的情况下,根据QPi-1_real和Biti-1_real来确定ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,然后使用QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi,并根据QPi_real_roi确定第i帧更新量化参数QPi_nonroi,以及根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi,最后,使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi。通过上述方式,可以通过上一帧(第i-1帧)的历史参数QPi-1_real和Biti-1_real来确定当前帧(第i帧)的QPi_init_roi和预估帧大小Biti_estimate-roi,并通过来QPi-1_rea_roil更新当前帧的量化参数QPi_nonroi,以及通过Biti-1_real_roi更新当前帧的Biti_nonroi,以及使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,使得在每一帧编码结束后,ROI帧码控模型和非ROI帧码控模型互相更新模型参数,保证了两个模型都拥有足够的历史数据,进而保证后续帧预测的准确性,提高了码率控制的准确性。
作为一种可选的技术方案,上述第一确定单元,包括:第一确定模块,用于根据上述QPi_real_roi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_nonroi,其中,上述QPi_nonroi与上述(1+ratio)呈正相关。
作为一种可选的技术方案,上述第一确定模块,还用于通过以下公式确定上述QPi_nonroi:QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio))其中,上述qScale2QP和qp2QScale为互逆运算。
作为一种可选的技术方案,上述第一确定单元,包括:第二确定模块,用于根据上述Biti_real_roi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_nonroi,其中,上述Biti_nonroi与上述(1+ratio)呈负相关。
作为一种可选的技术方案,上述第二确定模块,还用于通过以下公式确定上述Biti_nonroi:Biti_nonroi=Biti_real_roi/(1+ratio)。
作为一种可选的技术方案,上述第二确定单元,包括:第一获取模块,用于获取与上述QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i];第二获取模块,用于获取与上述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i];第三确定模块,用于通过以下公式确定上述第一目标参数:cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i],其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
作为一种可选的技术方案,上述:第一获取模块,还用于获取通过如下公式确定的qscalenonroi_real[i]:QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85);上述第二获取模块,还用于获取通过如下公式确定的qscalenonroi_init[i]:QPi_init_roi=12+6*log2(qscalenonroi_init[i]/0.85)。
作为一种可选的技术方案,上述装置还包括:第三确定单元,用于使用上述QPi_real_roi和上述Biti_real_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,其中,上述第二目标参数用于在第i+1帧图像为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
作为一种可选的技术方案,上述第三确定单元,包括:
第三获取模块,用于获取与上述QPi_real_roi对应的第i帧的第三中间变量qscaleroi_real[i];第四获取模块,用于获取与上述QPi_init_roi对应的第i帧的第四中间变量qscaleroi_init[i];第四确定模块,用于通过以下公式确定上述第二目标参数:cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_real_roi*qscaleroi_real[i]/qscaleroi_init[i],其中,cplxr_sumroi[i+1]为上述第二目标参数。
作为一种可选的技术方案,上述第三获取模块,还用于获取通过如下公式确定的qscaleroi_real[i]:QPi_real_roi=12+6*log2(qscaleroi_real[i]/0.85);上述第四获取模块,还用于获取通过如下公式确定的qscaleroi_init[i]:QPi_init_roi=12+6*log2(qscaleroi_init[i]/0.85)。
作为一种可选的技术方案,上述装置还包括:
第二获取单元,用于在待传输的第i+1帧图像为非ROI帧图像的情况下,获取上述非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi,其中,上述QPi+1_init_nonroi和Biti+1_estimate_nonroi是根据上述第一目标参数确定得到的;第二处理单元,用于使用上述QPi+1_init_nonroi和Biti+1_estimate_nonroi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_nonroi和第i+1帧实际帧大小Biti+1_real_nonroi;第四确定单元,用于根据上述QPi+1_real_nonroi确定第i+1帧更新量化参数QPi+1_roi,并根据上述Biti+1_real_nonroi确定第i+1帧更新帧大小Biti+1_roi,其中,上述QPi+1_roi小于上述QPi+1_real_nonroi,上述Biti+1_roi大于上述Biti+1_real_nonroi;第五确定单元,用于使用上述QPi+1_roi和上述Biti+1_roi确定上述ROI帧码控模型中第i+2帧的第二目标参数,其中,上述第二目标参数用于在第i+2帧图像为ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_roi和第i+2帧预估帧大小Biti+2_estimate_roi
作为一种可选的技术方案,上述第二获取单元,包括:第五获取模块,用于获取通过以下公式确定的上述QPi+1_init_nonroi:QPi+1_init_nonroi=qscale_raw/rateFactor,其中,上述qscale_raw是根据上述第i+1帧图像的复杂度预先估计出的参数;rateFactor=wanted_bits[i+1]/cplxr_sumnonroi[i+1],cplxr_sumnonroi[i+1]为上述第一目标参数;wanted_bits[i+1]=Bitrate/fps*frame_num[i+1],其中,Bitrate为预设的码率,fps为帧率,frame_num[i+1]为当前已经编码的帧数。
作为一种可选的技术方案,上述第二获取单元,包括:第六获取模块,用于获取通过以下公式确定的上述Biti+1_estimate_nonroi:Biti+1_estimate_nonroi=(coeff[i+1]*SATD[i+1]+offset[i+1])/(qscalenonroi_init[i+1]*count[i+1]),其中,coeff[i+1]和offset[i+1]为上述第一目标参数,
count[i+1]=count[i]*0.5+1
coeff[i+1]=coeff[i]*0.5+(Biti_nonroi*qscalenonroi_real[i]–offset[i]/count[i])/SATD[i]
offset[i+1]=offset[i]*0.5+(Biti_nonroi*qscalenonroi_real[i])*(1–offset[i]/count[i])
QPi+1_init_nonroi=12+6*log2(qscalenonroi_init[i+1]/0.85)
QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85)
QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio))
Biti_nonroi=Biti_real_roi/(1+ratio)
其中,上述(1+ratio)为预设期望比率,上述qScale2QP和qp2QScale为互逆运算;
其中,上述SATD[i]为预先获取的编码参数。
作为一种可选的技术方案,上述第一处理单元,还用于依次对上述第i帧图像中的每个宏块执行以下操作,其中,上述第i帧图像被划分为多个宏块,在执行以下操作时每个宏块被视为当前宏块:在上述当前宏块为ROI宏块的情况下,使用上述QPi_init_roi、Biti_estimate_roi和ROI块码控模型对上述当前宏块进行编码,得到编码后的第一编码参数;使用上述第一编码参数对非ROI块码控模型进行更新;使用上述第一编码参数对上述ROI块码控模型进行更新;在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_roi、Biti_estimate_roi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第二编码参数;使用上述第二编码参数对上述非ROI块码控模型进行更新;使用上述第二编码参数对上述ROI块码控模型进行更新。
作为一种可选的技术方案,上述装置还包括:第三获取单元,用于在待传输的第i帧图像为非ROI帧图像的情况下,获取上述非ROI帧码控模型输出的第i帧初始量化参数QPi_init_nonroi和第i帧预估帧大小Biti_estimate_nonroi,其中,上述QPi_init_nonroi和Biti_estimate_nonroi是根据对第i-1帧图像进行编码所得到的上述第i-1帧平均量化参数QPi-1_real和上述第i-1帧实际帧大小Biti-1_real确定得到的;第三处理单元,用于使用上述QPi_init_nonroi和Biti_estimate_nonroi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_nonroi和第i帧实际帧大小Biti_real_nonroi;第六确定单元,用于根据上述QPi_real_nonroi确定第i帧更新量化参数QPi_roi,并根据上述Biti_real_nonroi确定第i帧更新帧大小Biti_roi,其中,上述QPi_roi小于上述QPi_real_nonroi,上述Biti_roi大于上述Biti_real_nonroi;第七确定单元,用于使用上述QPi_roi和上述Biti_roi确定上述ROI帧码控模型中第i+1帧的第二目标参数,其中,上述第二目标参数用于在第i+1帧图像为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
作为一种可选的技术方案,上述第六确定单元,包括:第五确定模块,用于根据上述QPi_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新量化参数QPi_roi,其中,上述QPi_roi与上述(1+ratio)呈负相关。
作为一种可选的技术方案,上述第五确定模块,还用于通过以下公式确定上述QPi_roi:QPi_roi=qScale2QP(qp2QScale(QPi_real_nonroi)/(1+ratio)),其中,上述qScale2QP和qp2QScale为互逆运算。
作为一种可选的技术方案,上述第六确定单元,包括:第六确定模块,用于根据上述Biti_real_nonroi和预设期望比率(1+ratio)确定上述第i帧更新帧大小Biti_roi,其中,上述Biti_roi与上述(1+ratio)呈正相关。
作为一种可选的技术方案,上述第六确定模块,还用于通过以下公式确定上述Biti_roi:Biti_roi=Biti_real_nonroi*(1+ratio)。
作为一种可选的技术方案,上述第七确定单元,包括:第七获取模块,用于获取与上述QPi_roi对应的第i帧的第五中间变量qscaleroi_real[i];第八获取模块,用于获取与上述QPi_init_nonroi对应的第i帧的第六中间变量qscaleroi_init[i];第七确定模块,用于通过以下公式确定上述第二目标参数:cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_roi*qscaleroi_real[i]/qscaleroi_init[i],其中,cplxr_sumroi[i+1]为上述第二目标参数。
作为一种可选的技术方案,上述:第七获取模块,还用于获取通过如下公式确定的qscaleroi_real[i]:QPi_roi=12+6*log2(qscaleroi_real[i]/0.85);上述第八获取模块,还用于获取通过如下公式确定的qscaleroi_init[i]:QPi_init_nonroi=12+6*log2(qscaleroi_init[i]/0.85)。
作为一种可选的技术方案,上述装置还包括:第八确定单元,用于使用上述QPi_real_nonroi和上述Biti_real_nonroi确定上述非ROI帧码控模型中第i+1帧的上述第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
作为一种可选的技术方案,上述第八确定单元,包括:
第九获取模块,用于获取与上述QPi_real_nonroi对应的第i帧的第七中间变量qscalenonroi_real[i];第十获取模块,用于获取与上述QPi_init_nonroi对应的第i帧的第八中间变量qscalenonroi_init[i];第八确定模块,用于通过以下公式确定上述第一目标参数:cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_real_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i],其中,cplxr_sumnonroi[i+1]为上述第一目标参数。
作为一种可选的技术方案,上述第九获取模块,还用于获取通过如下公式确定的qscalenonroi_real[i]:QPi_real_nonroi=12+6*log2(qscalenonroi_real[i]/0.85);上述第十获取模块,还用于获取通过如下公式确定的qscalenonroi_init[i]:QPi_init_nonroi=12+6*log2(qscalenonroi_init[i]/0.85)。
作为一种可选的技术方案,上述装置还包括:第四获取单元,用于在待传输的第i+1帧图像为ROI帧图像的情况下,获取上述ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi,其中,上述QPi+1_init_roi和Biti+1_estimate_roi是根据上述第二目标参数确定得到的;第四处理单元,用于使用上述QPi+1_init_roi和Biti+1_estimate_roi对上述第i+1帧图像进行编码,并获取对上述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_roi和第i+1帧实际帧大小Biti+1_real_roi;第九确定单元,用于根据上述QPi+1_real_roi确定第i+1帧更新量化参数QPi+1_nonroi,并根据上述Biti+1_real_roi确定第i+1帧更新帧大小Biti+1_nonroi,其中,上述QPi+1_nonroi大于上述QPi+1_real_roi,上述Biti+1_nonroi小于上述Biti+1_real_roi;第十确定单元,用于使用上述QPi+1_nonroi和上述Biti+1_nonroi对上述非ROI帧码控模型中的上述第一目标参数,其中,上述第一目标参数用于在第i+2帧图像为非ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_nonroi和第i+2帧预估帧大小Biti+2_estimate_nonroi
作为一种可选的技术方案,上述第四获取单元,包括:第十一获取模块,用于获取通过以下公式确定的上述QPi+1_init_roi:QPi+1_init_roi=qscale_raw/rateFactor,其中,上述qscale_raw是根据上述第i+1帧图像的复杂度预先估计出的参数;rateFactor=wanted_bits[i+1]/cplxr_sumroi[i+1],cplxr_sumroi[i+1]为上述第二目标参数;wanted_bits[i+1]=Bitrate/fps*frame_num[i+1],其中,Bitrate为预设的码率,上述fps为帧率,frame_num[i+1]为当前已经编码的帧数。
作为一种可选的技术方案,上述第四获取单元,包括:第十二获取模块,用于获取通过以下公式确定的上述Biti+1_estimate_roi
Biti+1_estimate_roi=(coeff[i+1]*SATD[i+1]+offset[i+1])/(qscaleroi_init[i+1]*count[i+1]),其中,上述第二目标参数包括coeff[i+1]和offset[i+1]
count[i+1]=count[i]*0.5+1
coeff[i+1]=coeff[i]*0.5+(Biti_roi*qscaleroi_real[i]–offset[i]/count[i])/SATD[i]
offset[i+1]=offset[i]*0.5+(Biti_roi*qscaleroi_real[i])*(1–offset[i]/count[i])
QPi+1_init_roi=12+6*log2(qscaleroi_init[i+1]/0.85)
QPi_roi=12+6*log2(qscaleroi_real[i]/0.85)
QPi_roi=qScale2QP(qp2QScale(QPi_real_nonroi)/(1+ratio))
Biti_roi=Biti_real_nonroi*(1+ratio)
其中,上述(1+ratio)为预设期望比率,上述qScale2QP和qp2QScale为互逆运算;其中,上述SATD[i]为预先获取的编码参数。
作为一种可选的技术方案,上述第三处理单元,还用于依次对上述第i帧图像中的每个宏块执行以下操作,其中,上述第i帧图像被划分为多个宏块,在执行以下操作时每个宏块被视为当前宏块:在上述当前宏块为ROI宏块的情况下,使用上述QPi_init_nonroi、Biti_estimate_nonroi和ROI块码控模型对上述当前宏块进行编码,得到编码后的第三编码参数;使用上述第三编码参数对非ROI块码控模型进行更新;使用上述第三编码参数对上述ROI块码控模型进行更新;在上述当前宏块为非ROI宏块的情况下,使用上述QPi_init_nonroi、Biti_estimate_nonroi和上述非ROI块码控模型对上述当前宏块进行编码,得到编码后的第四编码参数;使用上述第四编码参数对上述非ROI块码控模型进行更新;使用上述第四编码参数对上述ROI块码控模型进行更新。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;
S2,使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
S3,根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi
S4,使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取器)、磁盘或光盘等。
根据本发明实施例的又一个方面,还提供了一种用于实施上述码率控制方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图8所示,该电子设备包括存储器802和处理器804,该存储器802中存储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,上述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;
S2,使用上述QPi_init_roi和Biti_estimate_roi对上述第i帧图像进行编码,并获取对上述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
S3,根据上述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据上述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,上述QPi_nonroi大于上述QPi_real_roi,上述Biti_nonroi小于上述Biti_real_roi
S4,使用上述QPi_nonroi和上述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,上述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
可选地,本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图8中所示更多或者更少的组件(如网络接口等),或者具有与图8所示不同的配置。
其中,存储器802可用于存储软件程序以及模块,如本发明实施例中的码率控制方法和装置对应的程序指令/模块,处理器804通过运行存储在存储器802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的码率控制方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述码率控制装置中的第一获取单元702,第一处理单元704、第一确定单元706、第二确定单元708。此外,还可以包括但不限于上述码率控制装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置806包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置806为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:连接总线808,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端设备等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种码率控制方法,其特征在于,包括:
在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,所述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;
使用所述QPi_init_roi和Biti_estimate_roi对所述第i帧图像进行编码,并获取对所述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
根据所述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据所述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,所述QPi_nonroi大于所述QPi_real_roi,所述Biti_nonroi小于所述Biti_real_roi
使用所述QPi_nonroi和所述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,所述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
2.根据权利要求1所述的方法,其特征在于,所述根据所述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,包括:
根据所述QPi_real_roi和预设期望比率(1+ratio)确定所述第i帧更新量化参数QPi_nonroi,其中,所述QPi_nonroi与所述(1+ratio)呈正相关。
3.根据权利要求2所述的方法,其特征在于,所述根据所述QPi_real_roi和预设期望比率(1+ratio)确定所述第i帧更新量化参数QPi_nonroi,包括:
通过以下公式确定所述QPi_nonroi
QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio))
其中,所述qScale2QP和qp2QScale为互逆运算。
4.根据权利要求1所述的方法,其特征在于,所述根据所述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,包括:
根据所述Biti_real_roi和预设期望比率(1+ratio)确定所述第i帧更新帧大小Biti_nonroi,其中,所述Biti_nonroi与所述(1+ratio)呈负相关。
5.根据权利要求4所述的方法,其特征在于,所述根据所述Biti_real_roi和预设期望比率(1+ratio)确定所述第i帧更新帧大小Biti_nonroi,包括:
通过以下公式确定所述Biti_nonroi
Biti_nonroi=Biti_real_roi/(1+ratio)。
6.根据权利要求1所述的方法,其特征在于,所述使用所述QPi_nonroi和所述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,包括:
获取与所述QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i];
获取与所述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i];
通过以下公式确定所述第一目标参数:
cplxr_sumnonroi[i+1]=cplxr_sumnonroi[i]+Biti_nonroi*qscalenonroi_real[i]/qscalenonroi_init[i]
其中,cplxr_sumnonroi[i+1]为所述第一目标参数。
7.根据权利要求6所述的方法,其特征在于,
所述获取与所述QPi_nonroi对应的第i帧的第一中间变量qscalenonroi_real[i],包括:获取通过如下公式确定的qscalenonroi_real[i]:
QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85);
所述获取与所述QPi_init_roi对应的第i帧的第二中间变量qscalenonroi_init[i],包括:获取通过如下公式确定的qscalenonroi_init[i]:
QPi_init_roi=12+6*log2(qscalenonroi_init[i]/0.85)。
8.根据权利要求1所述的方法,其特征在于,在获取对所述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi之后,所述方法还包括:
使用所述QPi_real_roi和所述Biti_real_roi确定所述ROI帧码控模型中第i+1帧的第二目标参数,其中,所述第二目标参数用于在第i+1帧图像为ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_roi和第i+1帧预估帧大小Biti+1_estimate_roi
9.根据权利要求8所述的方法,其特征在于,所述使用所述QPi_real_roi和所述Biti_real_roi确定所述ROI帧码控模型中第i+1帧的第二目标参数,包括:
获取与所述QPi_real_roi对应的第i帧的第三中间变量qscaleroi_real[i];
获取与所述QPi_init_roi对应的第i帧的第四中间变量qscaleroi_init[i];
通过以下公式确定所述第二目标参数:
cplxr_sumroi[i+1]=cplxr_sumroi[i]+Biti_real_roi*qscaleroi_real[i]/qscaleroi_init[i]
其中,cplxr_sumroi[i+1]为所述第二目标参数。
10.根据权利要求1所述的方法,其特征在于,在所述使用所述QPi_nonroi和所述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数之后,所述方法还包括:
在待传输的第i+1帧图像为非ROI帧图像的情况下,获取所述非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi,其中,所述QPi+1_init_nonroi和Biti+1_estimate_nonroi是根据所述第一目标参数确定得到的;
使用所述QPi+1_init_nonroi和Biti+1_estimate_nonroi对所述第i+1帧图像进行编码,并获取对所述第i+1帧图像进行编码所得到的第i+1帧平均量化参数QPi+1_real_nonroi和第i+1帧实际帧大小Biti+1_real_nonroi
根据所述QPi+1_real_nonroi确定第i+1帧更新量化参数QPi+1_roi,并根据所述Biti+1_real_nonroi确定第i+1帧更新帧大小Biti+1_roi,其中,所述QPi+1_roi小于所述QPi+1_real_nonroi,所述Biti+1_roi大于所述Biti+1_real_nonroi
使用所述QPi+1_roi和所述Biti+1_roi确定所述ROI帧码控模型中第i+2帧的第二目标参数,其中,所述第二目标参数用于在第i+2帧图像为ROI帧图像的情况下确定第i+2帧初始量化参数QPi+2_init_roi和第i+2帧预估帧大小Biti+2_estimate_roi
11.根据权利要求10所述的方法,其特征在于,所述获取所述非ROI帧码控模型输出的第i+1帧初始量化参数QPi+1_init_nonroi,包括:
获取通过以下公式确定的所述QPi+1_init_nonroi
QPi+1_init_nonroi=qscale_raw/rateFactor
其中,所述qscale_raw是根据所述第i帧图像的复杂度预先估计出的参数;
rateFactor=wanted_bits[i+1]/cplxr_sumnonroi[i+1],cplxr_sumnonroi[i+1]为所述第一目标参数;
wanted_bits[i+1]=Bitrate/fps*frame_num[i+1]
其中,Bitrate为预设的码率,fps为帧率,frame_num[i+1]为当前已经编码的帧数。
12.根据权利要求10所述的方法,其特征在于,所述获取所述非ROI帧码控模型输出的第i+1帧预估帧大小Biti+1_estimate_nonroi,包括:
获取通过以下公式确定的所述Biti+1_estimate_nonroi
Biti+1_estimate_nonroi=(coeff[i+1]*SATD[i+1]+offset[i+1])/(qscalenonroi_init[i+1]*count[i+1])
其中,coeff[i+1]和offset[i+1]为所述第一目标参数;
count[i+1]=count[i]*0.5+1
coeff[i+1]=coeff[i]*0.5+(Biti_nonroi*qscalenonroi_real[i]–offset[i]/count[i])/SATD[i]
offset[i+1]=offset[i]*0.5+(Biti_nonroi*qscalenonroi_real[i])*(1–offset[i]/count[i])
QPi+1_init_nonroi=12+6*log2(qscalenonroi_init[i+1]/0.85)
QPi_nonroi=12+6*log2(qscalenonroi_real[i]/0.85)
QPi_nonroi=qScale2QP(qp2QScale(QPi_real_roi)*(1+ratio))
Biti_nonroi=Biti_real_roi/(1+ratio)
其中,所述(1+ratio)为预设期望比率,所述qScale2QP和qp2QScale为互逆运算;
其中,所述SATD[x]为预先获取的第x帧的编码参数。
13.一种码率控制装置,其特征在于,包括:
第一获取单元,用于在待传输的第i帧图像为ROI帧图像的情况下,获取ROI帧码控模型输出的第i帧初始量化参数QPi_init_roi和第i帧预估帧大小Biti_estimate_roi,其中,所述QPi_init_roi和Biti_estimate_roi是根据对第i-1帧图像进行编码所得到的第i-1帧平均量化参数QPi-1_real和第i-1帧实际帧大小Biti-1_real确定得到的;
第一处理单元,用于使用所述QPi_init_roi和Biti_estimate_roi对所述第i帧图像进行编码,并获取对所述第i帧图像进行编码所得到的第i帧平均量化参数QPi_real_roi和第i帧实际帧大小Biti_real_roi
第一确定单元,用于根据所述QPi_real_roi确定第i帧更新量化参数QPi_nonroi,并根据所述Biti_real_roi确定第i帧更新帧大小Biti_nonroi,其中,所述QPi_nonroi大于所述QPi_real_roi,所述Biti_nonroi小于所述Biti_real_roi
第二确定单元,用于使用所述QPi_nonroi和所述Biti_nonroi确定非ROI帧码控模型中第i+1帧的第一目标参数,其中,所述第一目标参数用于在第i+1帧图像为非ROI帧图像的情况下确定第i+1帧初始量化参数QPi+1_init_nonroi和第i+1帧预估帧大小Biti+1_estimate_nonroi
14.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至12任一项中所述的方法。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至12任一项中所述的方法。
CN202010297264.3A 2020-04-15 2020-04-15 码率控制方法和装置、存储介质和电子设备 Active CN111479113B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010297264.3A CN111479113B (zh) 2020-04-15 2020-04-15 码率控制方法和装置、存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010297264.3A CN111479113B (zh) 2020-04-15 2020-04-15 码率控制方法和装置、存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN111479113A CN111479113A (zh) 2020-07-31
CN111479113B true CN111479113B (zh) 2021-04-09

Family

ID=71753502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010297264.3A Active CN111479113B (zh) 2020-04-15 2020-04-15 码率控制方法和装置、存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN111479113B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111918066B (zh) * 2020-09-08 2022-03-15 北京字节跳动网络技术有限公司 视频编码方法、装置、设备及存储介质
CN113301342B (zh) * 2021-05-13 2022-07-22 广州方硅信息技术有限公司 视频编码方法、网络直播方法、装置和终端设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1914915A (zh) * 2004-04-23 2007-02-14 住友电气工业株式会社 活动图像数据的编码方法、解码方法及实施这些方法的终端装置、以及双向对话型系统
KR20100002632A (ko) * 2008-06-30 2010-01-07 에스케이 텔레콤주식회사 영상 인코딩/디코딩 방법 및 그 장치 및 영상 서비스시스템
JP2010177828A (ja) * 2009-01-28 2010-08-12 Nippon Telegr & Teleph Corp <Ntt> スケーラブル画像符号化方法、スケーラブル画像符号化装置、スケーラブル画像符号化プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN106331711A (zh) * 2016-08-26 2017-01-11 北京工业大学 一种基于网络特征与视频特征的动态码率控制方法
CN106658027A (zh) * 2016-11-28 2017-05-10 北京理工大学 背景帧的码率控制方法和装置
CN108924555A (zh) * 2018-05-04 2018-11-30 上海交通大学 一种适用于视频切片的码率控制比特分配方法
CN109413427A (zh) * 2017-08-17 2019-03-01 腾讯科技(深圳)有限公司 一种视频帧编码方法及终端
CN109660798A (zh) * 2018-11-12 2019-04-19 建湖云飞数据科技有限公司 一种码率控制方法
CN110324622A (zh) * 2018-03-28 2019-10-11 腾讯科技(深圳)有限公司 一种视频编码码率控制方法、装置、设备及存储介质
CN110636291A (zh) * 2018-06-25 2019-12-31 天开数码媒体有限公司 一种视频编码初始量化参数优化方法
CN110708570A (zh) * 2019-10-21 2020-01-17 腾讯科技(深圳)有限公司 视频的编码码率确定方法、装置、设备及存储介质
CN110800297A (zh) * 2018-07-27 2020-02-14 深圳市大疆创新科技有限公司 视频编码方法及装置、计算机可读存储介质
CN110996099A (zh) * 2019-11-15 2020-04-10 网宿科技股份有限公司 一种视频编码方法、系统及设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010069366A1 (en) * 2008-12-17 2010-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive quantization based on spatial activity histogram
US10469851B2 (en) * 2012-04-16 2019-11-05 New Cinema, LLC Advanced video coding method, system, apparatus, and storage medium
JP6471023B2 (ja) * 2015-03-31 2019-02-13 株式会社メガチップス 画像処理システムおよび画像処理方法
JP6857973B2 (ja) * 2016-06-14 2021-04-14 キヤノン株式会社 画像符号化装置及びその制御方法
US11025913B2 (en) * 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1914915A (zh) * 2004-04-23 2007-02-14 住友电气工业株式会社 活动图像数据的编码方法、解码方法及实施这些方法的终端装置、以及双向对话型系统
KR20100002632A (ko) * 2008-06-30 2010-01-07 에스케이 텔레콤주식회사 영상 인코딩/디코딩 방법 및 그 장치 및 영상 서비스시스템
JP2010177828A (ja) * 2009-01-28 2010-08-12 Nippon Telegr & Teleph Corp <Ntt> スケーラブル画像符号化方法、スケーラブル画像符号化装置、スケーラブル画像符号化プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN106331711A (zh) * 2016-08-26 2017-01-11 北京工业大学 一种基于网络特征与视频特征的动态码率控制方法
CN106658027A (zh) * 2016-11-28 2017-05-10 北京理工大学 背景帧的码率控制方法和装置
CN109413427A (zh) * 2017-08-17 2019-03-01 腾讯科技(深圳)有限公司 一种视频帧编码方法及终端
CN110324622A (zh) * 2018-03-28 2019-10-11 腾讯科技(深圳)有限公司 一种视频编码码率控制方法、装置、设备及存储介质
CN108924555A (zh) * 2018-05-04 2018-11-30 上海交通大学 一种适用于视频切片的码率控制比特分配方法
CN110636291A (zh) * 2018-06-25 2019-12-31 天开数码媒体有限公司 一种视频编码初始量化参数优化方法
CN110800297A (zh) * 2018-07-27 2020-02-14 深圳市大疆创新科技有限公司 视频编码方法及装置、计算机可读存储介质
CN109660798A (zh) * 2018-11-12 2019-04-19 建湖云飞数据科技有限公司 一种码率控制方法
CN110708570A (zh) * 2019-10-21 2020-01-17 腾讯科技(深圳)有限公司 视频的编码码率确定方法、装置、设备及存储介质
CN110996099A (zh) * 2019-11-15 2020-04-10 网宿科技股份有限公司 一种视频编码方法、系统及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Improvements for HEVC rate control;Zizheng Liu et.al;《Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11》;20190102;全文 *
Rate Control for VVC;Yiming Li et.al;《Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11》;20180714;全文 *

Also Published As

Publication number Publication date
CN111479113A (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
JP6862633B2 (ja) レート制御方法及びレート制御装置
JP7012747B2 (ja) ビデオフレーム符号化方法、端末、および記憶媒体
US9215466B2 (en) Joint frame rate and resolution adaptation
CN107846590B (zh) 一种视频编码的方法和视频编码器
JP6851678B2 (ja) イントラフレームビットレートの割り当て方法、コンピュータ機器、及び記憶媒体
CN111479113B (zh) 码率控制方法和装置、存储介质和电子设备
CN108012163B (zh) 视频编码的码率控制方法及装置
EP1209625A2 (en) Picture coding apparatus and method
CN111193927B (zh) 编码数据处理方法、装置、计算机设备和存储介质
CN104270649A (zh) 影像编码装置及影像编码方法
JP2007525063A (ja) スライディング・ウィンドウ・チャネル制限に一致させるようマルチパス・ビデオレートを制御する方法
CN112188208B (zh) 一种宏块级码率控制方法及相关装置
CN114845106A (zh) 视频编码方法、装置和存储介质及电子设备
CN107872669A (zh) 视频码率处理方法和装置
TWI734865B (zh) 用於編碼視訊之方法與編碼系統
CN112788335B (zh) 一种适用于实时视频传输的h.264帧级码率控制方法
CN112351278B (zh) 一种视频的编码方法和装置,视频的解码方法和装置
CN115883848A (zh) 一种编码控制方法、装置、设备、存储介质及产品
CN112351276B (zh) 一种视频的编码方法和装置,视频的解码方法和装置
JP5756154B2 (ja) 映像符号化パラメータ算出装置、映像符号化パラメータ算出方法及びプログラム
CN111193926B (zh) 编码数据处理方法、装置、计算机设备和存储介质
CN114374841B (zh) 视频编码码率控制的优化方法、装置及电子设备
CN114374841A (zh) 视频编码码率控制的优化方法、装置及电子设备
Jiang et al. Scalable hevc intra frame complexity control subject to quality and bitrate constraints
WO2023082520A1 (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40026134

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant