
1.本技术涉及视频编码技术领域,特别是涉及一种码率控制方法、电子设备及计算机可读存储介质。
背景技术:2.视频编解码的标准有h.264/avc、h.265/hevc、h.266/vvc、vp8、vp9、av1、avs等,其主要目的是将采集到的视频信号压缩成不同标准格式的数据,便于传输或存储。为了将视频编码技术应用于实际场景,码率控制技术在视频编码器中起着至关重要的作用,因为它可以在有限的通信带宽或存储空间的情况下调整编码器输出的目标码率,从而避免编码的视频帧出现过大或过小的情况。
3.码率控制技术依次对视频信号进行图片组级、帧级和宏块级的分配,得到图片组级、帧级和宏块级的目标比特。但是,目前的码率控制方法中,宏块级的目标比特方式与用户的需求相适应的程度不高。
技术实现要素:4.本技术提供一种码率控制方法、电子设备及计算机可读存储介质,能够解决目前的宏块级的目标比特方式与用户的需求相适应的程度不高的问题。
5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种码率控制方法。该方法包括:获取待编码帧的目标比特,待编码帧包括多个宏块;确定待编码帧所属待编码视频序列的目标码率等级;基于目标码率等级,确定多个宏块的第一权重;依据第一权重将待编码帧的目标比特分配至多个宏块;基于为多个宏块分配的目标比特计算多个宏块的量化参数。
6.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种电子设备,该电子设备包括处理器、与处理器连接的存储器,其中,存储器存储有程序指令;处理器用于执行存储器存储的程序指令以实现上述方法。
7.为解决上述技术问题,本技术采用的又一个技术方案是:提供一种计算机可读存储介质,存储有程序指令,该程序指令被执行时能够实现上述方法。
8.通过上述方式,本技术基于目标码率等级确定待编码帧中多个宏块的第一权重,依据第一权重将待编码帧的目标比特分配至多个宏块。因此将待编码帧的目标比特分配至多个宏块的方式不是固定的,而是可以根据目标码率等级灵活变化的。由于目标码率等级变相反映用户的需求,因此基于目标码率等级的宏块的目标比特分配方式与用户的需求相适应。从而,本技术提供的码率控制方法,增加了宏块的目标比特分配方式的灵活性,提高了宏块的目标比特分配方式与用户需求相适应的程度。
附图说明
9.图1是本技术码率控制方法一实施例的流程示意图;
10.图2是本技术码率控制方法另一实施例的流程示意图;
11.图3是本技术码率控制方法又一实施例的流程示意图;
12.图4是图3中s31的具体流程示意图;
13.图5是本技术码率控制方法又一实施例的流程示意图;
14.图6是本技术码率控制方法一具体实例的流程示意图;
15.图7是本技术码率控制方法又一实施例的流程示意图;
16.图8是图7中s51的具体流程示意图;
17.图9是本技术码率控制方法又一实施例的流程示意图;
18.图10是本技术码率控制方法又一实施例的流程示意图;
19.图11是本技术电子设备一实施例的结构示意图;
20.图12是本技术计算机可读存储介质一实施例的结构示意图。
具体实施方式
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.本技术中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
23.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。
24.在介绍本技术提供的方法之前,先对码率控制技术的原理说明:
25.码率控制技术一般会从三个层面对码率进行控制,分别为:图片组(group of picture,gop)级、帧级、宏块级。即,将待编码视频序列划分为连续的多个gop,每个gop中包含多个视频帧,每个视频帧包含多个宏块。相应地,对待编码视频序列的码率控制过程为,基于给定的目标码率,为gop分配目标比特,再将gop的目标比特分配至gop中的每个视频帧,得到每个视频帧的目标比特;再将视频帧的目标比特分配至视频帧中的每个宏块,得到每个宏块的目标比特。后续编码过程中,基于宏块的目标比特的量化参数(quantization parameter,qp)对待编码视频序列进行编码。
26.如下对后面实施例涉及的宏块、待编码帧的时域复杂度、空域复杂度进行说明:
27.空域复杂度表征纹理复杂度,时域复杂度表征运动复杂度。
28.其中,空域复杂度的计算过程如下:
29.首先计算待编码帧中当前宏块的平均像素值:
30.31.其中,表示平均像素值,当前宏块大小为m
×
n,m表示宏块高度,n表示宏块高度,p
i,j
表示第i行第j列的像素值。
32.再计算当前宏块中所有像素点的值与平均像素值的差值,并将当前宏块中所有像素点的差值累加再求平均,得到当前宏块的空域复杂度:
[0033][0034]
其中,blks表示当前宏块的空域复杂度。
[0035]
最后将所有宏块的空域复杂度累加得到待编码帧的空域复杂度:
[0036][0037]
其中,n表示待编码帧中宏块的数量,textures表示待编码帧的空域复杂度,blksk表示第k个宏块的空域复杂度。
[0038]
时域复杂度的计算过程如下:
[0039]
先根据当前宏块与参考帧中同位块的像素差值,计算当前宏块的时域复杂度,参考帧表示对待编码帧进行编码时所参考的视频帧:
[0040][0041]
其中,表示同位块中的第i行第j列的像素值,表示当前宏块中第i行第j列的像素值,blkt表示当前宏块的时域复杂度。
[0042]
再计算所有宏块的时域复杂度之和的均值,得到待编码帧的时域复杂度:
[0043][0044]
其中,texturet表示待编码帧的时域复杂度,blktk表示第k个宏块的时域复杂度。
[0045]
如下介绍本技术提供的码率控制方法:
[0046]
图1是本技术码率控制方法一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施例可以包括:
[0047]
s11:获取待编码帧的目标比特。
[0048]
待编码帧包括多个宏块。
[0049]
在一些实施例中,可以根据待编码帧的特性为待编码帧分配目标比特。待编码帧的目标比特计算公式如下:
[0050][0051]
其中,表示待编码帧所属gop中已编码帧消耗的比特,ω
piccurr
为待编码帧的权重,ω
piccurr
是根据不同编码配置时gop的结构和每个像素占用的比特(bit per pixel,bpp)事先设定的固定值,∑w
pic
为所有待编码帧的权重之和。
[0052]
在一些实施例中,可以根据待编码帧的时空域复杂度为待编码帧分配目标比特。
[0053]
可以将待编码帧以固定尺寸m
×
n的像素块作为划分单元进行划分,得到待编码帧的多个宏块。m表示宏块宽度,n表示宏块高度。固定尺寸可以为16
×
16、32
×
32、64
×
64等
等。
[0054]
s12:确定待编码帧所属待编码视频序列的目标码率等级。
[0055]
目标码率也可以称为比特率,表示每秒传输的比特(bit)数。待编码视频序列的目标码率是由用户根据需求设定的。
[0056]
在一些实施例中,可以设定码率阈值,基于码率阈值划分多个码率范围,每个码率范围对应一等级。例如,设定第一码率阈值和第二码率阈值,第一码率阈值小于第二码率阈值,从而得到三个码率范围,分别是(码率下限值,第一码流阈值],(第一码流阈值,第二码流阈值]和(第二码流阈值,码流上限值]。(码率下限值,第一码流阈值]对应低等级,(第一码流阈值,第二码流阈值]对应中等级,(第二码流阈值,码流上限值]对应高等级。目标码率等级为目标码率所属的码流范围对应的等级。
[0057]
在一些实施例中,可以获取待编码视频序列中每个像素占用的比特(bit per pixel,bpp);根据像素占用的比特的等级确定目标码率等级。
[0058]
其中,bpp的计算公式如下:
[0059][0060]
其中,r
tar
表示目标码率,f表示帧率,帧率表示每秒传输的视频帧数量,w表示待编码视频序列中每个待编码帧的宽度,h表示待编码视频序列中每个待编码帧的高度。
[0061]
可以设置bpp阈值,基于bpp阈值划分得到多个bpp范围,每个bpp范围对应一等级。例如,设置第一bpp阈值和第二bpp阈值,第一bpp阈值小于第二bpp阈值,从而得到三个bpp范围,分别是(bpp下限值,第一bpp阈值]、(第一bpp阈值,第二bpp阈值]和(第二bpp阈值,bpp上限值]。(bpp下限值,第一bpp阈值]对应低等级,(第一bpp阈值,第二bpp阈值]对应中等级,(第二bpp阈值,bpp上限值]对应高等级。bpp的等级为bpp所属的bpp范围对应的等级。
[0062]
s13:基于目标码率等级,确定多个宏块的第一权重。
[0063]
考虑到不同的目标码率等级下,人眼主观关注的细节不同。例如,在高等级下,人眼比较关注人脸、车牌等纹理复杂的区域;在低等级下,人眼比较关注地板、墙壁等纹理简单的区域。因此,本步骤中,可以在不同的目标码率等级下,用不同的方式确定多个宏块的第一权重,以实现在不同的目标码率等级下对宏块采用不同的目标比特分配方式。本技术后文将人眼关注度高的区域视为重要程度高的区域。
[0064]
确定多个宏块的第一权重的方式包括但不限于以下三种:
[0065]
第一种是设置多个宏块的第一权重均相同,即宏块的第一权重等于1除以宏块的数量。
[0066]
第二种是基于宏块在参考帧中的同位块的比特,确定宏块的第一权重,同位块的比特与第一权重正相关。在此方式下,宏块的同位块的比特越多,代表宏块的重要程度越高,宏块的第一权重越大,后续能够为宏块分配更多的目标比特。
[0067]
第三种是基于宏块的空域复杂度确定宏块的第一权重,空域复杂度与第一权重正相关。在此方式下,宏块的空域复杂度越高,宏块的重要程度越高,宏块的第一权重越大,后续能够为宏块分配更多的目标比特。
[0068]
如下列举基于目标码率等级确定多个宏块的第一权重的一些实施例:
[0069]
在一些实施例中,目标码率等级为较低等级,采用第二种方式确定第一权重;目标
码率等级为较高等级,采用第三种方式确定第一权重。
[0070]
在一些实施例中,目标码率等级为较低等级,采用第一种方式确定第一权重;目标码率等级为较高等级,采用第二种或者第三种方式确定第二权重。
[0071]
如下以一个例子的形式,对码率分为高、中、低三个等级的情况下,当前宏块的第一权重确定方式进行说明。其中高、中、低三个等级的划分请参考s12的相关介绍。
[0072]
例子1:若目标码率等级为高等级,则基于当前宏块的空域复杂度确定当前宏块的第一权重,空域复杂度与第一权重正相关。
[0073]
若目标码率等级为中等级,则基于当前宏块在参考帧中的同位宏块的比特,确定当前宏块的第一权重,同位宏块的比特与第一权重正相关。当前宏块的第一权重可以通过下式计算:
[0074][0075]
其中,ω
mb
表示当前宏块的第一权重,qscale
frame
表示待编码帧的量化参数(qp),与待编码帧的目标比特负相关,α
mb
和β
mb
表示可调参数,α
mb
和β
mb
是基于同位宏块的比特确定的。若待编码帧为关键帧,α
mb
和β
mb
的值是初始值。
[0076]
若目标码率等级为低等级,则当前宏块的第一权重等于1除以宏块的数量。当前宏块的第一权重可以通过下式计算:
[0077][0078]
其中,n表示宏块的数量。
[0079]
上述例子1中,考虑到在目标码率等级为较高等级(高等级、中等级)下,人眼对人脸、车牌等纹理复杂(空域复杂度高、同位块的比特多)的区域关注度高,重要程度高。因此,在目标码率允许的情况下,也即是在目标码率等级为较高等级的情况下,为重要程度高的区域宏块设置更大的第一权重,从而提高后续对重要程度较高的宏块的编码质量,进而提高人眼的主观感受。
[0080]
s14:依据第一权重将待编码帧的目标比特分配至多个宏块。
[0081]
将宏块的第一权重与待编码帧的目标比特相乘,得到为宏块分配的目标比特。
[0082]
在上述例子1的基础上,继续对本步骤进行说明:
[0083]
若目标码率等级为高等级,则将目标比特分配至当前宏块的计算公式可以如下:
[0084][0085]
其中,表示为当前宏块分配的目标比特,表示待编码帧的目标比特,表示当前宏块的第一权重,g
mb
表示当前宏块的空域复杂度,∑g表示所有宏块的空域复杂度之和。
[0086]
若目标码率等级为中等级,则将目标比特分配至当前宏块的计算公式可以如下:
[0087][0088]
其中,ω
mb
表示当前宏块的第一权重,∑ω表示所有宏块的第一权重之和。
[0089]
若目标码率等级为低等级,则将目标比特平均分配至各个宏块,即将目标比特分配至当前宏块的计算公式可以如下:
[0090][0091]
s15:基于为多个宏块分配的目标比特计算多个宏块的量化参数。
[0092]
宏块的量化参数qp与宏块的比特负相关。
[0093]
通过本实施例的实施,本技术基于目标码率等级确定待编码帧中多个宏块的第一权重,依据第一权重将待编码帧的目标比特分配至多个宏块。因此将待编码帧的目标比特分配至多个宏块的方式不是固定的,而是可以根据目标码率等级灵活变化的。由于目标码率等级变相反映用户的需求(如人眼关注的区域),因此基于目标码率等级的宏块的目标比特分配方式与用户的需求相适应。从而,本技术提供的码率控制方法,增加了宏块的目标比特分配方式的灵活性,提高了宏块的目标比特分配方式与用户需求相适应的程度。并且,本技术提供的码率控制方法具有普适性,使用条件简单、成本低、独立性高,能整合进不同视频编码标准中去使用,同时也能融合进不同硬件芯片之中。
[0094]
进一步地,在目标码率等级为低等级,当前宏块的第一权重等于1除以宏块的数量、为每个宏块分配相同比特的情况下,可能会出现为人眼关注度高的区域分配的比特过多、量化参数过小,人眼关注度低的区域分配的比特过少、量化参数过大的情况。为了提高低等级下人眼的主观感受,可以在s15之后,基于宏块的时域复杂度和空域复杂度对宏块的量化参数进行调整。具体可以如下:
[0095]
图2是本技术码率控制方法另一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。如图2所示,本实施例可以包括:
[0096]
s21:判断当前宏块的时域复杂度和空域复杂度是否均大于或均小于对应的复杂度阈值。
[0097]
时域复杂度对应的复杂度阈值可以是基于待编码帧中所有宏块的时域复杂度计算得到的,例如为所有宏块的时域复杂度的均值。空域复杂度对应的复杂度阈值可以是基于待编码帧中所有宏块的空域复杂度计算得到的,例如为所有宏块的空域复杂度的均值。
[0098]
若是,则执行s22;否则执行s23。
[0099]
s22:增大当前宏块的量化参数。
[0100]
s23:减小当前宏块的量化参数。
[0101]
可以理解的是,空域复杂度大于对应的复杂度阈值的区域,纹理简单,时域复杂度大于对应的复杂度阈值的区域,运动简单。
[0102]
针对时域复杂度和空域复杂度均大于对应的复杂度阈值的区域(如光滑地板的区域),纹理简单、运动简单,人眼的关注度低,因此增大qp。针对时域复杂度和空域复杂度均小于对应的复杂度阈值的区域(如吹动的树叶区域),纹理复杂、运动复杂,人眼的关注度低,因此增大qp。
[0103]
针对空域复杂度大于对应的复杂度阈值、时域复杂度不大于对应的复杂度阈值的区域(如运动速度小的人脸区域),纹理复杂、运动简单,人眼的关注度高,因此减小qp。针对空域复杂度不大于对应的复杂度阈值、时域复杂度大于对应的复杂度阈值的区域(如转动场景的天空、墙壁、马路,纹理简单的运动物体),纹理简单、运动复杂,人眼的关注度高,因此减小qp。
[0104]
进一步地,在s11中根据待编码帧的时空域复杂度为待编码帧分配目标比特的情
况下,可以对s11进一步扩展,具体如下:
[0105]
图3是本技术码率控制方法又一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。如图3所示,本实施例可以包括:
[0106]
s31:计算待编码帧的时空域复杂度。
[0107]
可以计算待编码帧的空域复杂度和时域复杂度;依据第三权重对待编码帧的空域复杂度和时域复杂度加权,得到时空域复杂度。例如,空域复杂度的第三权重为k1,时域复杂度的第三权重为k2,时空域复杂度texturest=k1
·
textures+k2
·
texturet。
[0108]
其中,待编码帧的空域复杂度和时域复杂度可以相同,也可以不同。在不同情况下,可以基于待编码帧的类型,确定空域复杂度和时域复杂度的第三权重。可以理解的是,待编码帧的类型,决定待编码帧的空域信息(对应空域复杂度)和时域信息(对应时域复杂度)相对于待编码帧的重要程度,因此基于编码值的类型确定第三权重,也即是基于空域复杂度和时域复杂度对应的重要程度确定第三权重。在此情况下,结合参阅图4,s31可以包括以下子步骤:
[0109]
s311:计算待编码帧的空域复杂度和时域复杂度。
[0110]
s312:基于待编码帧的类型,确定待编码帧的空域复杂度和时域复杂度的第三权重。
[0111]
待编码帧的类型包括关键帧(i帧)和非关键帧(b帧、p帧)。
[0112]
若待编码帧为关键帧,则确定空域复杂度的第三权重大于时域复杂度的第三权重,且时域复杂度的第三权重为0。关键帧的编码方式为帧内编码,只有空域信息才会对其产生影响,因此时域信息不会对其产生影响,因此设置时域复杂度的第三权重为0。例如,待编码帧为i帧,设置k1=100、k2=0。
[0113]
若待编码帧为非关键帧且待编码帧的参考帧为关键帧,则时域复杂度的第三权重大于空域复杂度的第三权重。例如,待编码帧为p帧,且参考帧为i帧,设置k1=1.1、k2=0,或者设置k1=1.5、k2=1。
[0114]
若待编码帧为非关键帧且待编码帧的参考帧为非关键帧,则时域复杂度的第三权重等于空域复杂度的第三权重。例如,待编码帧为p帧,且参考帧为p帧,设置k1=1,k2=1。
[0115]
s313:依据第三权重对待编码帧的空域复杂度和时域复杂度加权,得到时空域复杂度。
[0116]
s32:基于待编码帧的时空域复杂度,确定待编码帧的第二权重。
[0117]
待编码帧的第二权重与时空域复杂度正相关。
[0118]
待编码帧的第二权重通过下式计算得到:
[0119][0120]
其中,ω
pic
表示待编码帧的第二权重,texturest
pic
表示待编码帧的时空域复杂度,∑texturest表示待编码帧所属gop中所有待编码帧的时空域复杂度之和。
[0121]
s33:依据第二权重将待编码帧所属图像组的剩余比特分配至待编码帧,得到待编码帧的目标比特。
[0122]
待编码帧的目标比特可以通过下式计算得到:
[0123]
[0124]
其中,表示待编码帧的目标比特,表示待编码帧所属gop的目标比特,表示待编码帧所属gop中已编码帧消耗的比特。
[0125]
图5是本技术码率控制方法又一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图5所示的流程顺序为限。本实施例是对上述实施例的进一步扩展。如图5所示,在s11之后、s14之前,本实施例可以包括:
[0126]
s41:判断待编码帧到下一个关键帧之间的帧数是否小于帧数阈值。
[0127]
可以理解的是,gop的第一个视频帧为关键帧。处于当前gop中帧数最大的预设数量个非关键帧,也是距离下一gop的第一个关键帧最近的预设数量个非关键帧(后文称为靠近关键帧的非关键帧),由于距离当前gop中的关键帧远,相应对其分配的目标比特少、编码质量低。为了保证靠近关键帧的非关键帧的编码质量,使得非关键帧和关键帧之间的过度更加平滑,可以在获取其目标比特之后,对其目标比特进行调整。
[0128]
帧数阈值即为该预设数量,从而限定本实施例的调整对象为靠近关键帧的非关键帧。下一个关键帧即为下一gop中的第一个关键帧。
[0129]
若小于,则执行s42~s45;否则执行s46。
[0130]
s42:获取帧数与帧数阈值之间的比值。
[0131]
比值大于0且小于1。
[0132]
s43:计算比值与待编码帧的平均比特的第一乘积。
[0133]
待编码帧的平均比特为待编码视频序列中平均每个视频帧可以的比特。待编码帧的平均比特计算公式如下:
[0134][0135]
其中,r
picavg
表示待编码帧的平均比特,r
tar
表示待编码视频序列的目标码率,f表示待编码视频序列的帧率。
[0136]
s44:计算待编码帧所属图像组的剩余比特与第一乘积之和。
[0137]
s45:计算和与第二权重的第二乘积,并利用第二乘积更新待编码帧的目标比特。
[0138]
s46:不调整待编码帧的目标比特。
[0139]
其中,s41~s46的实现依据如下计算公式:
[0140][0141]
其中,sw表示帧数阈值,d表示帧数,表示比值,表示第一乘积,表示图像组gop的剩余比特,表示第二乘积。
[0142]
如下结合图6,以一个例子的形式,对本技术提供的码率控制方法进行详细说明:
[0143]
例子2:1)计算待编码帧的空域复杂度。
[0144]
2)计算待编码帧的时域复杂度。
[0145]
2)基于待编码帧的空域复杂度和时域复杂度计算待编码帧的时空域复杂度。
[0146]
3)基于待编码帧的时空域复杂度,将待编码帧所属图像组的目标比特分配至待编码帧,得到待编码帧的目标比特。
[0147]
4)判断待编码帧距离下一个关键帧的帧数小于帧数阈值sw,若小于则进入5);否则进入6)。
[0148]
5)对待编码帧的目标比特进行更新(再次计算待编码帧的目标比特)。
[0149]
6)确定待编码帧所属待编码帧视频序列的目标码率等级,并基于目标码率等级将待编码帧的目标比特分配至宏块,得到宏块的目标比特。
[0150]
7)根据宏块的目标比特求取宏块的量化参数qp。
[0151]
8)判断目标码率等级是否为低等级,若是则进入9);否则结束对待编码帧的处理。
[0152]
9)调整宏块的qp。执行完成之后结束对待编码帧的处理。
[0153]
图7是本技术码率控制方法又一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图7所示的流程顺序为限。如图7所示,本实施例可以包括:
[0154]
s51:计算待编码帧的时空域复杂度。
[0155]
可以计算待编码帧的空域复杂度和时域复杂度;依据第三权重对待编码帧的空域复杂度和时域复杂度加权,得到时空域复杂度。待编码帧的空域复杂度和时域复杂度可以相同,也可以不同。
[0156]
在不同情况下,可以基于待编码帧的类型,确定空域复杂度和时域复杂度的第三权重。在此情况下,结合参阅图8,s51可以包括以下子步骤:
[0157]
s511:计算待编码帧的空域复杂度和时域复杂度。
[0158]
s512:基于待编码帧的类型,确定待编码帧的空域复杂度和时域复杂度的第三权重。
[0159]
待编码帧的类型包括关键帧(i帧)和非关键帧(b帧、p帧)。
[0160]
若待编码帧为关键帧,则确定空域复杂度的第三权重大于时域复杂度的第三权重,且时域复杂度的第三权重为0。
[0161]
若待编码帧为非关键帧且待编码帧的参考帧为关键帧,则时域复杂度的第三权重大于空域复杂度的第三权重。
[0162]
若待编码帧为非关键帧且待编码帧的参考帧为非关键帧,则时域复杂度的第三权重等于空域复杂度的第三权重。
[0163]
s513:依据第三权重对待编码帧的空域复杂度和时域复杂度加权,得到时空域复杂度。
[0164]
s52:基于待编码帧的时空域复杂度,确定待编码帧的第二权重。
[0165]
待编码帧的第二权重与时空域复杂度正相关。
[0166]
s53:依据第二权重将待编码帧所属图像组的剩余比特分配至待编码帧,得到待编码帧的目标比特。
[0167]
本实施例的详细描述请参考前面的实施例,在此不赘述。
[0168]
通过本实施例的实施,本技术在为待编码帧分配目标比特时,考虑了待编码帧的时空域复杂度,因此既考虑了时域信息又考虑了空域信息,能够更加准确地进行帧级比特分配。
[0169]
进一步地,为了保证考虑关键帧的非关键帧质量,使得关键帧和非关键帧的过度更加平滑,可以在s53之后,对待编码帧的目标比特进行调整,具体可以如下:
[0170]
图9是本技术码率控制方法又一实施例的流程示意图。需注意的是,若有实质上相
同的结果,本实施例并不以图9所示的流程顺序为限。本实施例是s53之后可以包括的步骤,如图9所示,本实施例可以包括:
[0171]
s61:判断待编码帧到下一个关键帧之间的帧数是否小于帧数阈值。
[0172]
若小于,则执行s62~s65;否则执行s66。
[0173]
s62:获取帧数与帧数阈值之间的比值。
[0174]
s63:计算比值与待编码帧的平均比特的第一乘积。
[0175]
s64:计算待编码帧所属图像组的剩余比特与第一乘积之和。
[0176]
s65:计算和与第二权重的第二乘积,并利用第二乘积更新待编码帧的目标比特。
[0177]
s66:不调整待编码帧的目标比特。
[0178]
本实施例的详细描述请参考前面的实施例,在此不赘述。
[0179]
进一步地,待编码帧包括多个宏块,在s53得到待编码帧的目标比特之后,还可以将待编码帧的目标比特分配至多个宏块。其中,可以基于宏块的属性(如时域复杂度、空域复杂度、同位块的比特等),确定宏块的比特分配方式。还可以基于待编码帧所属待编码视频序列的目标码率等级,确定宏块的比特分配方式。在基于目标码率等级分配的情况下,对上述实施例进一步扩展如下:
[0180]
图10是本技术码率控制方法又一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图10所示的流程顺序为限。本实施例是s53之后可以包括的步骤,如图10所示,本实施例可以包括:
[0181]
s71:确定待编码帧所属待编码视频序列的目标码率等级。
[0182]
s72:基于所述目标码率等级,确定多个宏块的第一权重。
[0183]
s73:依据第一权重将待编码帧的目标比特分配至多个宏块。
[0184]
s74:基于为多个宏块分配的目标比特计算多个宏块的量化参数。
[0185]
本实施例的详细描述请参考前面的实施例,在此不赘述。
[0186]
图11是本技术电子设备一实施例的结构示意图。如图11所示,该电子设备包括处理器21、与处理器21耦接的存储器22。
[0187]
其中,存储器22存储有用于实现上述任一实施例的方法的程序指令;处理器21用于执行存储器22存储的程序指令以实现上述方法实施例的步骤。其中,处理器21还可以称为cpu(central processing unit,中央处理单元)。处理器21可能是一种集成电路芯片,具有信号的处理能力。处理器21还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0188]
图12是本技术计算机可读存储介质一实施例的结构示意图。如图12所示,本技术实施例的计算机可读存储介质30存储有程序指令31,该程序指令31被执行时实现本技术上述实施例提供的方法。其中,该程序指令31可以形成程序文件以软件产品的形式存储在上述计算机可读存储介质30中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式方法的全部或部分步骤。而前述的计算机可读存储介质30包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0189]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0190]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。