视频编码frame层码流大小的控制方法、系统及介质与流程

文档序号:26716990发布日期:2021-09-22 20:05阅读:115来源:国知局
视频编码frame层码流大小的控制方法、系统及介质与流程

1.本发明涉及视频编码技术领域,特别涉及一种视频编码frame层码流大小的控制方法、系统及介质。


背景技术:

2.在视频编码过程中,码率控制起着至关重要的作用,尤其是在实时视频编码及网络传输场景中,由于网络带宽的限制,会对编码帧码流大小有一定要求。这种场景一般只i帧和p帧两种类型,此时i、p帧的码流分配比例及控制精准度会对网络传输的流畅度及视频的编码质量产生举足轻重的影响。
3.在实时视频编码及网络传输场景中,例如网络通话、视频会议及实时监控场景,编码后的数据被逐帧传送给接收端。由于受网络带宽的影响,会对编码后帧级码流大小的最大值有一定的要求,同时考虑到编码质量,也会要求帧级码流大小不能低于一个最小值。这就要求编码后的帧大小在一定的范围内波动,甚至在某些场景下需要在多个范围内波动。例如在无人机拍摄场景下,随着无人机远离接收终端,数据传输能力下降,此时需要降低帧级码流大小,反之可适当增加,这就要求编码器能根据场景的需求做出适当的调整,在保证编码质量的前提下使数据流畅的传输到接受终端。
4.针对此场景,行业内大部分的做法是根据网络环境的优劣或是数据传输能力的强弱来调节码率,寄希望于通过码率控制算法来调节帧级码流大小。这种方案在大部分场景下是可行的,但在码率调节的起始阶段或是视频采集噪点较多的场景下,编码后的帧大小控制不稳定,有时会有激增的情况,在网络带宽受限时这些帧数据大多会发生丢包,这样会对接收端用户带来较差的视觉体验。


技术实现要素:

5.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种视频编码frame层码流大小的控制方法,能够实时监测每一帧编码后的码流大小,当其过大或者过小时,通过此次编码参数预测出一组更加精确的编码参数进行二次编码,编出一个合理大小的视频帧,这样可以兼顾网络带宽和编码质量,进而提高整体用户体验。
6.本发明还提出一种视频编码frame层码流大小的控制系统。
7.本发明还提出一种实施上述方法的计算机可读存储介质。
8.根据本发明的第一方面实施例的视频编码frame层码流大小的控制方法,包括:量化参数预测和编码步骤,根据前一个i帧的目标比特数、前一个i帧码流大小以及前一个i帧的量化参数预测当前i帧目标比特数所对应的量化参数,并根据所述量化参数对当前i帧进行编码;量化参数调整和重编码步骤,若当前i帧或p帧编码后比特数不在预设范围内,则根据编码出的比特数对量化参数进行调整,并根据调整后的量化参数对当前i帧或p帧进行重编码。
9.根据本发明的一些实施例,所述量化参数预测和编码步骤还包括:确定当前i帧是
否为第一帧,若是则使用默认初始量化参数进行编码。
10.根据本发明的一些实施例,所述量化参数预测步骤包括:计算当前i帧的量化参数,公式如下:nqp
cur
=nqp
last
+(nitargetbits/nframebits
last

1.0)*10;其中,nqp
cur
表示当前i帧的量化参数,nqp
last
表示上一帧最后一次编码的量化参数,nitargetbits表示i帧目标比特数,nframebits
last
表示前一个i帧码流大小;更新所述当前i帧的量化参数为qpmin、qpmax以及nqp
cur
的中间值;其中,qpmin、qpmax表示限制量化参数的范围。
11.根据本发明的一些实施例,所述量化参数调整步骤包括:确定当前i帧码流大小是否在预设范围内,若否,更新当前i帧的量化参数,包括以下步骤:若nframebits
cur
>nimaxbits,则nqp
dif
=(nframebits
cur
/nimaxbits

1.0)*10;若nframebits
cur
<niminbits,则nqp
dif
=(nframebits
cur
/niminbits

1.0)*10;其中,nqp
dif
表示中间参数,nframebits
cur
表示当前i帧码流大小,nimaxbits表示i帧最大比特数,nimintbits表示i帧最小比特数;将所述当前i帧的量化参数与所述中间参数相加,得到第一量化参数;取qpmin、qpmax以及所述第一量化参数的中间值,作为调整后的量化参数;其中,qpmin、qpmax表示限制量化参数的范围。
12.根据本发明的一些实施例,所述i帧量化参数调整步骤还包括:确定第一次重编后的当前i帧码流大小是否在预设范围内,若不是,进行第二次重编,包括以下步骤:计算量化参数调整参数:nbitsperqp=(nframebits
cur

nframebits
last
)/(nqp
cur

nqp
last
);其中nbitsperqp表示调整参数,nframebits
cur
表示第一次重编后当前i帧码流大小,nframebits
last
表示当前i帧第一次编码时的码流大小,nqp
cur
表示第一次重编后当前i帧的量化参数,nqp
last
表示当前i帧第一次编码时的量化参数;若nframebits
cur
>nimaxbits则nqp
dif
=((nframebits
cur

nimaxbits)/nbitsperqp)+1;若nframebits
cur
<niminbits则nqp
dif
=((nframebits
cur

niminbits)/nbitsperqp)

1;其中,nimaxbits表示i帧最大比特数,nimintbits表示i帧最小比特数,nqp
dif
表示中间参数;将所述第一次重编后当前i帧的量化参数与所述中间参数相加,得到第二量化参数;取qpmin、qpmax以及所述第二量化参数的中间值,作为第二次调整后的量化参数;其中,qpmin、qpmax表示限制量化参数的范围。
13.根据本发明的一些实施例,所述量化参数调整步骤还包括:确定第一次编码后的当前p帧码流大小是否在预设范围内,若不是,更新当前p帧的量化参数,包括以下步骤:若ncurbits
cur
>npmaxbits则nqp
dif
=(ncurbits
cur
/npmaxbits

1.0)*10;若ncurbits
cur
<npminbits则nqp
dif
=(ncurbits
cur
/npminbits

1.0)*10;其中,nqp
dif
表示中间参数,ncurbits
cur
表示当前p帧码流大小,npmaxbits表示i帧最大比特数,npminbits表示i帧最小比特数;将所述当前p帧的量化参数与所述中间参数相加,得到更新后的量化参数。
14.根据本发明的一些实施例,所述方法还包括:设置当前i帧重编码最多次数为2,p帧重编码最多次数为1;记录当前i帧或p帧重编码次数;若当前i帧码流大小不在预设范围内,则判断当前i帧重编码次数是否等于2,若是,结束当前i帧的帧编码流程;若当前p帧码流大小不在预设范围内,则判断当前p帧重编码次数是否等于1,若是,结束当前i帧的帧编码流程。
15.根据本发明的一些实施例,所述方法还包括:p帧第一次编码时,基于码率控制算法对所述p帧进行编码,所述码率控制算法根据网络环境的优劣或是数据传输能力的强弱来调节码率。
16.根据本发明的第二方面实施例的视频编码frame层码流大小的控制系统,包括:量化参数预测和编码模块,用于根据前一个i帧的目标比特数、前一个i帧码流大小以及前一个i帧的量化参数预测当前i帧目标比特数所对应的量化参数,并根据所述量化参数对当前i帧进行编码;量化参数调整和重编码模块,用于在当前i帧或p帧编码后比特数不在预设范围内时,根据编码出的比特数对量化参数进行调整,并根据调整后的量化参数对当前i帧或p帧进行重编码。
17.根据本发明的第三方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明的第一方面实施例中任一项的方法。
18.本发明实施例至少具有如下有益效果:
19.(1)在网络带宽发生变化时不仅会调节码率,而且还会监测每一个i、p帧的size,当其size不能适应于当前带宽时,根据当前帧此次的编码参数预测出合理的编码参数进行二次编码,使得编码size能适应于当前带宽,从而给终端接收用户带来良好的视觉体验;
20.(2)以前一个i帧为参考,在编码之前就对量化参数进行了预测计算,操作简便且有一定的前瞻性;
21.(3)实时监测每一帧编码后的码流大小,当其过大或者过小时,通过此次编码参数预测出一组更加精确的编码参数进行二次编码,编出一个合理大小的视频帧,这样可以兼顾网络带宽和编码质量,进而提高整体用户体验;
22.(4)有效控制frame层码流,在同等码率下可提高整体编码质量,尤其在高清低码率场景下效果明显。此外,该设计也可有效缓解在线视频编码因网络带宽受限而传输丢包的问题;
23.(5)在场景频繁切换时对编码size的大小起到一定的稳定作用;
24.(6)如果硬件编码性能足够强,允许重编进行多次的话,可对每帧编码的目的比特数进行精确控制。在网络带宽复杂且较为恶劣的场景下,可根据带宽情况实时调节每帧编码的目标比特数,这样可大大减缓因网络带宽受限而产生的丢包现象,如此,对无人机远程监控、无人船海洋监测等条件恶劣的场景将会有极大的积极作用。
25.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
26.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
27.图1为本发明实施例的方法的流程示意图。
28.图2为本发明另一实施例的方法的流程示意图。
29.图3为本发明实施例的系统的模块示意框图。
具体实施方式
30.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
31.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
32.参照图1,本发明实施例的方法主要包括以下步骤:
33.量化参数预测和编码步骤,根据前一个i帧的目标比特数、前一个i帧码流大小以及前一个i帧的量化参数预测当前i帧目标比特数所对应的量化参数,并根据得到的量化参数对当前i帧进行编码;
34.量化参数调整和重编码步骤,若当前i帧或p帧编码后比特数不在预设范围内,则根据编码出的比特数对量化参数进行调整,并根据调整后的量化参数对当前i帧或p帧进行重编码。
35.参照图2,在一些实施例中,本发明实施例的方法流程如下:
36.(1)在编码器初始化时,除了配置码率等参数之外,还会传给编码器以下几个参数:
37.nitargetbits:i帧目标bit数;
38.nimaxbits:i帧最大bit数;
39.nimintbits:i帧最小bit数;
40.nptargetbits:p帧目标bit数;
41.npmaxbits:p帧最大bit数;
42.npmintbits:p帧最小bit数;
43.(2)准备编码当前帧,若为i帧进入流程(3),p帧则进入流程(4);
44.(3)i帧编码流程如下:
45.①
判断当前i帧是否是编码的第一帧,如为第一帧则使用默认初始量化参数进行编码,否则可根据前一i帧的量化参数及编码后的码流大小对此帧的量化参数进行预测,过程如下:
46.nqp
cur
=nqp
last
+((float)nitargetbits/nframebits
last

1.0)*10;
47.nqp
cur
=clip3(qpmin,qpmax,nqp
cur
);
48.其中,nqp
cur
为此次编码的量化参数,nqp
last
为上一帧最后一次编码的量化参数,qpmin,qpmax为限制量化参数的范围,clip3为取中间值函数;
49.得到量化参数之后对此i帧进行编码;
50.②
编码完成后判断当前i帧的码流大小nframebits
cur
是否在[nimintbits,nimaxbits]范围内,如在此范内则结束本帧编码,否则更新量化参数并进行第一次重编,参数更新如下:
[0051]
if(nframebits
cur
>nimaxbits)
[0052]
nqp
dif
=((float)nframebits
cur
/nimaxbits

1.0)*10;
[0053]
else if(nframebits
cur
<niminbits)
[0054]
nqp
dif
=((float)nframebits
cur
/niminbits

1.0)*10;
[0055]
nqp
last
=nqp
cur

[0056]
nqp
cur
=nqp
cur
+nqp
dif

[0057]
nqp
cur
=clip3(qpmin,qpmax,nqp
cur
);
[0058]
nframebits
last
=nframebits
cur

[0059]
使用更新后的量化参数nqp
cur
进行第一次重编;
[0060]

第一次重编后判断当前i帧的码流大小nframebits
cur
是否在[nimintbits,nimaxbits]范围内,如在此范内则结束本帧编码,否则更新量化参数并进行第二次重编,参数更新如下:
[0061]
nbitsperqp=(nframebits
cur

nframebits
last
)/(nqp
cur

nqp
last
);
[0062]
if(nframebits
cur
>nimaxbits)
[0063]
nqp
dif
=((nframebits
cur

nimaxbits)/nbitsperqp)+1;
[0064]
else if(nframebits
cur
<niminbits)
[0065]
nqp
dif
=((nframebits
cur

niminbits)/nbitsperqp)

1;
[0066]
nqp
cur
=nqp
cur
+nqp
dif

[0067]
nqp
cur
=clip3(qpmin,qpmax,nqp
cur
);
[0068]
更新完上述参数后,进行重编码,重编之后即结束当前帧编码;
[0069]
(4)p帧编码流程如下:
[0070]

当前p帧第一次编码时可根据码率控制算法计算出量化参数,使用此值进行编码,编码完成后判断当前p帧码流大小ncurbits
cur
是否在[npmintbits,npmaxbits]范围内,如在此范围内则结束本帧编码,否则更新量化参数并进行重编,参数更新如下:
[0071]
if(ncurbits
cur
>npmaxbits)
[0072]
nqp
dif
=((float)ncurbits
cur
/npmaxbits

1.0)*10;
[0073]
else if(ncurbits
cur
<npminbits)
[0074]
nqp
dif
=((float)ncurbits
cur
/npminbits

1.0)*10;
[0075]
nqp
new
=nqp
cur
+nqp
dif

[0076]

更新完上述参数后,进行重编码;
[0077]

编码完成后则结束当前帧编码。
[0078]
参照图3,本发明实施例的系统包括:量化参数预测和编码模块,用于根据前一个i帧的目标比特数、前一个i帧码流大小以及前一个i帧的量化参数预测当前i帧目标比特数所对应的量化参数,并根据得到的量化参数对当前i帧进行编码;量化参数调整和重编码模块,用于在当前i帧或p帧编码后比特数不在预设范围内时,根据编码出的比特数对量化参数进行调整,并根据调整后的量化参数对当前i帧或p帧进行重编码。
[0079]
尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
[0080]
上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。
另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
[0081]
因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
[0082]
本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
[0083]
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1