视频编码方法、装置、设备及存储介质与流程

文档序号:28659989发布日期:2022-01-26 19:53阅读:62来源:国知局
视频编码方法、装置、设备及存储介质与流程

1.本技术涉及数字信号处理技术领域,特别涉及一种视频编码方法、装置、设备及存储介质。


背景技术:

2.在视频数据传输前,出于减小传输的数据量、缩短传输时长等目的,编码设备需要对视频图像帧进行编码,压缩视频图像帧的数据量,提高传输速度。
3.相关技术中,在对某个待编码的目标图像帧进行编码前,需要根据其它多个参考图像帧对该目标图像帧的帧类型和编码参数进行预测,通过计算该目标图像帧采用不同编码方式会带来的编码损失,确定该目标图像帧最合适的帧类型和编码参数。编码设备根据确定的帧类型和编码参数对该目标图像帧进行编码,获得该目标图像帧对应的码流。通过目标图像帧的帧类型和编码参数进行预测,根据预测结果进行编码,能够获得稳定的视频播放质量。
4.然而,在一些情况下,根据其它多个参考图像帧对待编码的图像帧进行编码时,需要等待这些参考图像帧输入编码设备,会造成较大编码时延。


技术实现要素:

5.本技术实施例提供了一种视频编码方法、装置、设备及存储介质,有助于降低编码过程中产生的编码时延。技术方案如下:
6.根据本技术实施例的一个方面,提供了一种视频编码方法,所述方法包括:
7.获取待编码的目标图像帧;
8.在所述目标图像帧的参考图像帧的数量不满足分析条件的情况下,按照第一方式确定所述目标图像帧的帧类型和编码参数;其中,所述第一方式是指不依据所述参考图像帧确定帧类型和编码参数的方式;
9.根据所述目标图像帧的帧类型和编码参数,对所述目标图像帧进行编码。
10.根据本技术实施例的一个方面,提供了一种视频编码装置,所述装置包括:
11.图像帧获取模块,用于获取待编码的目标图像帧;
12.第一编码确定模块,用于在所述目标图像帧的参考图像帧的数量不满足分析条件的情况下,按照第一方式确定所述目标图像帧的帧类型和编码参数;其中,所述第一方式是指不依据所述参考图像帧确定帧类型和编码参数的方式;
13.图像帧编码模块,用于根据所述目标图像帧的帧类型和编码参数,对所述目标图像帧进行编码。
14.根据本技术实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序以实现上述视频编码方法。
15.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,所述存储介质
中存储有计算机程序,所述计算机程序用于被处理器执行,以实现上述视频编码方法。
16.根据本技术的一个方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述视频编码方法。
17.本技术实施例提供的技术方案可以带来如下有益效果:
18.在待编码的目标图像帧不满足分析条件的情况下,直接对该目标图像帧进行编码,不需要等待目标图像帧的参考图像帧数目满足分析要求,消除了等待目标图像帧的多个其它参考图像帧造成的等待时间,降低了编码时延。
附图说明
19.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本技术一个实施例提供的实施环境的示意图;
21.图2是本技术一个实施例提供的视频编码方法的流程图;
22.图3是本技术另一个实施例提供的视频编码方法的流程图;
23.图4是本技术另一个实施例提供的视频编码方法的示意图;
24.图5是本技术另一个实施例提供的视频编码方法的示意图;
25.图6是本技术另一个实施例提供的视频编码过程的示意图;
26.图7是本技术一个实施例提供的视频编码装置的框图;
27.图8是本技术另一个实施例提供的视频编码装置的框图。
具体实施方式
28.在介绍本技术技术方案之前,先对本技术涉及的一些背景技术知识进行介绍说明。以下相关技术作为可选方案与本技术实施例的技术方案可以进行任意结合,其均属于本技术实施例的保护范围。本技术实施例包括以下内容中的至少部分内容。
29.首先对本技术中可能出现的名词进行介绍。
30.帧(frame)是指视频中的静止画面。
31.fps(frames per second,帧率)是指每秒钟刷新图片的帧数,或者图形处理器每秒钟刷新的次数。帧率越高,表示一秒钟内刷新的图片数量越多,视频画面越逼真,视频中的动作越流畅。
32.dr(data rate,码流)是指视频文件在单位时间内使用的数据流量,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。
33.视频编码是指通过特定的压缩技术,去除视频画面中冗余信息的过程。
34.gop(group of picture,关键帧的周期)是指两个相邻i帧(intra picture,内部画面)帧之间的距离,也即一个帧组的最大帧数,解码过程以gop为单位进行解码。
35.qp(quantizer parameter,量化参数),用于反映空间细节压缩情况。qp的值越小,
量化越精细,图像中细节保留程度越大,图片的质量越高,产生的码流也越长,即数据量越大;qp越大,画面中一些细节丢失程度越大,码率越低图像失真程度越大。
36.下面对y(lumina,明亮度)u(chrominance,色度)v(chroma,色度)信号进行介绍和说明。
37.yuv是一种颜色数字化表示方式,y用来表示像素的灰阶值,u和v用来表示像素的颜色,包括像素的色彩及饱和度。由于人眼对色调变化的敏感度低于人眼对明亮度变换的敏感度,在视频编码过程中可以在色度维度进行更大的压缩,使得视频编码后获得的码流更小。
38.yuv画面的采样格式包括:
39.(1)4∶4∶4,即yuv三个信道的抽样率相同,在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),未经压缩的每个像素占用3个字节。例如,有四个像素为:[y0u0v0]、[y1u1v1]、[y2u2v2]和[y3u3v3],采样后对应的码流为:y0u0v0;y1u1v1;y2u2v2;y3u3v3。
[0040]
(2)4∶2∶2,即每个色度信道的抽样率是亮度信道的一半,因此,水平方向的色度抽样率只有4:4:4的一半。对非压缩的8bit量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存(亮度2个字节,两个色度各1个字节)。例如,有四个像素为:[y0u0v0]、[y1u1v1]、[y2u2v2]和[y3u3v3],采样后对应的码流为:y0u0;y1v1;y2u2;y3v3。
[0041]
(3)4∶2∶0,即对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,例如,第一行为4:2:0的话,第二行为4:0:2,第三行为4:2:0,以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,相当于色度的抽样率是4:1。对非压缩的8bit量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存(亮度4个字节,两个色度各1个字节)。例如,有八个像素为:[y0 u0 v0]、[y1 u1 v1]、[y2 u2 v2]、[y3 u3 v3]、[y5 u5 v5]、[y6 u6 v6]、[y7 u7 v7]和[y8 u8 v8],采样后的码流为:y0 u0;y1;y2 u2;y3;y5v5;y6;y7v7;y8。
[0042]
下面对帧类型进行介绍和说明。
[0043]
帧类型主要包括以下几类:
[0044]
(1)i帧:也称为关键帧,i帧用于表示图像背景和运动主体的详情,所占数据的信息量比较大。在编码过程中,i帧的压缩率最小,在解码时,i帧不依赖其它帧进行解码,并且能够作为其它帧类型解码过程中的参考图像帧。i帧是gop的基础帧(gop中的第一帧),一组gop中包含1个i帧。
[0045]
(2)idr(instantaneous decoding refresh,即时解码刷新)帧:idr帧是i帧中的一种,在对idr帧进行解码前,解码设备会清空前后向参考缓冲区(参考缓冲区用于存储在解码过程中具有参考作用的图像帧),使得idr帧之后的任意帧不能参考idr出现前的任一帧进行解码。idr帧作为视频安全的随机访问点,能够避免传输错误的图像帧长期影响其它帧的解码结果。
[0046]
(3)p(predictive-coded picture,前向预测编码图像)帧:p帧中记录了当前图像帧与前面若干帧的差别信息,在编码过程中,p帧的压缩率较高。对p帧的解码过程,需要参考之前缓存的画面中的部分信息进行解码,生成画面。
[0047]
(4)b(bidirectionally predicted picture,双向预测编码图像)帧,b帧中记录了本帧与前后帧的差别,编码过程中的最大的压缩量。在对b帧进行解码时,需要参考前向或/和后向i帧或p帧,前向是指时间轴上比当前帧出现早的图像帧。
[0048]
下面,对视频编码方法进行介绍和说明。
[0049]
视频编码包括预测编码、变换编码、量化以及熵编码,其中预测编码包括帧内预测编码和帧间预测编码。帧内预测编码利用视频空间域的相关性对同一帧图像内相邻的宏块进行比较。帧间预测编码利用视频时域空间的相关性。帧间预测编码使用邻近已编码图像帧的像素预测当前图像帧像素编码后所对应的像素,得到残差信号。帧间预测编码包括:运动估计、mv预测和加权预测、运动补偿等;其中,运动估计用于为当前图像帧的宏块在参考图像帧中匹配最相近的宏块,运动估计通过搜索算法寻找参考图像帧中的宏块,使用最小均方误差、最小平均绝对误差等匹配标准确定参考图像帧中与当前图像帧的宏块最相似的宏块。
[0050]
量化是指对时间上离散的信号处理,使其在幅度上也离散,量化又可以分为均匀量化和非均匀量化,其中非均匀量化对于小信号效果较好。
[0051]
本技术实施例描述的系统架构以及业务场景是为了更加清楚地说明本技术实施例的技术方案,并不构成对本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0052]
请参考图1,其示出了本技术一个实施例提供的是实施环境的示意图。该实施环境可以包括编码设备10和解码设备20。
[0053]
编码设备10是具有视频编码、视频数据存储和视频数据收发等功能的设备。编码设备10可以是诸如计算机、手机、平板电脑、智能电视、摄像机、车载系统等设备。编码设备10对某一帧待编码的目标图像帧进行编码,可选地,编码设备10直接指定该目标图像帧的编码参数,根据指定的编码参数对该目标图像帧进行编码;可选地,编码设备10首先根据其他参考图像帧预测该目标图像帧的帧类型和编码参数,再根据编码参数对该目标图像帧进行编码。编码设备10将该目标图像帧编码后得到码流以视频数据流的形式发送给解码设备20。
[0054]
解码设备20是具有视频编码、视频数据收发等功能的设备,解码设备可以是服务器或终端设备,服务器可以是运行目标应用程序的后台服务器。目标应用程序包括视频类应用程序、直播类应用程序、具有视频通信功能的社交类应用程序,应用程序的种类在此不进行限定。编码设备20可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。终端设备上运行有目标应用程序,终端设备除了解码视频数据流的功能,至少具有一种其他功能,例如视频播放功能,信息发送功能等。
[0055]
请参考图2,其示出了本技术一个实施例的提供的视频编码方法的流程图,本方法各步骤的执行主体可以是编码设备,该方法可以包括如下几个步骤(210-230)中的至少一个步骤:
[0056]
步骤210,获取待编码的目标图像帧。
[0057]
图像帧是一幅静止的画面,多个图像帧连续切换形成一段视频。在一些实施例中,图像帧是yuv格式的信号。编码是指编码设备将一种格式的画面进行压缩,获得另一种格式
画面的过程,通过编码获得的画面的数据量小于编码前的原画面的数据量。
[0058]
编码设备获取待编码的目标图像帧,对获取的目标图像帧进行编码。可选地,编码设备从视频数据库的某个视频文件中获取目标图像帧;可选地,编码设备通过摄像机等具有视频画面采集功能的设备获取目标图像帧。目标图像帧可以是视频文件中的一帧画面,也可以是视频直播、视频通话过程中,画面采集设备采集到的一帧场景画面,图像帧的来源和类型根据实际情况确定,在此不进行限定。在一个示例中,在视频播放的应用场景中,编码设备可以设置在目标应用程序的后台服务器上,编码设备从服务器的数据库中获取某个待编码的目标图像帧,其中该目标图像帧来自收到播放指示命令对应的视频文件。在另一个示例中,在视频直播的应用场景下,摄像机每25ms采集一帧现场画面,编码设备通过摄像机获取待编码的目标图像帧。
[0059]
步骤220,在目标图像帧的参考图像帧的数量不满足分析条件的情况下,按照第一方式确定目标图像帧的帧类型和编码参数;其中,第一方式是指不依据参考图像帧确定帧类型和编码参数的方式。
[0060]
参考图像帧和目标图像帧是同一个视频文件中的图像帧,或者来自同一个画面采集设备在某段时间间隔内采集得到的图像帧。参考图像帧可以是已经完成编码的图像帧,也可以是未进行编码的图像帧。在一些实施例中,参考图像帧和目标图像帧具有部分相同的特征,目标图像帧可以根据参考图像帧中的信息进行编码。在一些实施例中,参考图像帧存储在编码设备中。分析条件是指用于判断目标图像帧的帧类型和编码参数确定方式的条件。帧类型用于表征目标图像帧的可压缩程度,帧类型包括i帧、p帧和b帧,关于帧类型的详细内容请参考上文,在此不进行赘述。编码参数包括码率控制参数,编码参数用于保持编码过程中码率维持稳定并降低编码过程中图像帧的失真率。
[0061]
在一些实施例中,分析条件是指目标图像帧的参考图像帧的数量大于或等于第一阈值。在一些实施例中,编码设备获取待编码的目标图像帧后,根据编码设备中参考图像帧的数量确定获取目标图像帧的编码方式,若目标图像帧的参考图像帧的数量不满足分析条件,则编码设备采用第一方式确定目标图像帧的帧类型和编码参数,反之,若目标图像帧的参考图像帧的数量满足分析条件,则编码设备采用除第一方式以外的其它方法确定目标图像帧的帧类型和编码参数。
[0062]
在一些实施例中,获取待编码的目标图像帧之后,还包括:将目标图像帧添加至预编码队列中;在预编码队列的长度小于额定长度的情况下,确定目标图像帧的参考图像帧的数量不满足分析条件;在预编码队列的长度等于额定长度的情况下,确定目标图像帧的参考图像帧的数量满足分析条件。
[0063]
预编码队列的长度是指预编码队列中存储的图像帧的数量。在一些实施例中,额定长度等于预编码队列的大小,预编码队列的大小是指预定义队列中可容纳的图像帧的最大数量,也即在预编码队列中存储的图像帧的数量达到预编码队列的大小前,编码设备采取第一方式确定获取的目标图像帧的帧类型和编码参数。在一些实施例中,编码设备获取待编码的目标图像帧之后,将目标图像帧添加至预编码队列中,预编码队列中存储的多个图像帧作为目标图像帧的参考图像帧。在一些实施例中,编码设备将待编码的目标图像帧的帧类型和编码参数存储在预编码队列中,例如,编码设备将待编码的目标图像帧以及对应的帧类型和编码参数存储在预编码队列的同一个单元中;又例如,编码设备将某个待编
码的目标图像帧的帧类型和编码参数单独存储在预编码队列的一个单元中,且该单元与用于存储该目标图像帧的单元具有映射关系,编码设备通过映射关系确定该目标图像帧对应的帧类型和编码参数。
[0064]
步骤230,根据目标图像帧的帧类型和编码参数,对目标图像帧进行编码。
[0065]
在一些实施例中,编码设备根据目标图像帧的帧类型和编码参数,对目标图像帧进行编码,获得目标图像帧的对应的码流,并输出目标图像帧对应的码流。编码设备根据某个待编码的目标图像帧的帧类型和编码参数对该目标图像帧进行编码的详细内容请参考相关背景介绍,在此不进行赘述。
[0066]
综上所述,本方法对于参考图像帧数量不满足分析条件的待编码的目标图像帧,通过第一方式确定目标图像帧的帧类型和编码参数,由于第一方式无需根据目标图像帧的参考图像帧确定目标图像帧的帧类型和编码参数,因此消除了在目标图像帧的参考图像帧的数量不满足分析情况下,编码设备获取足够数量的参考图像帧消耗的等待时间,本方法不需要引入过多的参数以及复杂的计算方式,即可有效降低编码时延。
[0067]
通过几个实施例对本方法提供的视频编码过程进行介绍说明。
[0068]
请参考图3,其示出本技术另一个实施例提供的视频编码方法的流程图。
[0069]
步骤310,获取待编码的目标图像帧。
[0070]
在一些实施例中,获取待编码的目标图像帧之后,还包括:将目标图像帧添加至预编码队列中;在预编码队列的长度小于额定长度的情况下,编码设备确定目标图像帧的参考图像帧的数量不满足分析条件;在预编码队列的长度等于额定长度的情况下,编码设备确定目标图像帧的参考图像帧的数量满足分析条件。
[0071]
步骤320,在目标图像帧的参考图像帧的数量不满足分析条件的情况下,将预定义的帧类型,确定为目标图像帧的帧类型。
[0072]
在一些实施例中,预定义的帧类型存储在编码设备中,或者预定义的帧类型根据画面采集工具或待编码视频确定,预定义的帧类型可以根据网络传输时延、编码设备的编码能力和视频播放质量要求等实际应用情况确定,本技术在此不进行限定。在一些实施例中,在目标图像帧的参考图像帧的数量不满足分析条件的情况下,编码设备根据预定义的帧类型确定目标图像帧的帧类型。
[0073]
其中,步骤320在一种可能的实现方式中,包括步骤322,获取预定义的帧类型排列,预定义的帧类型排列是指预先确定的、多个图像帧分别对应的帧类型的排布方式;基于目标图像帧的序号从预定义的帧类型排列中,确定目标图像帧的帧类型;步骤320在另一种可能的实现方式中,包括步骤324,获取预定义的帧类型配置信息,预定义的帧类型配置信息中包括至少一种帧类型的配置数量;基于已编码图像帧的帧类型和预定义的帧类型配置信息,确定目标图像帧的帧类型。
[0074]
在一些实施例中,预定义的帧类型排列存储在编码设备中。在一些实施例中,在预定义的帧类型配置信息中包括i帧以及p帧和b帧中的至少一种,例如,预定义的帧类型排列可以包括:iiiiiiiiii、ipppipppip、ibpbpibpp等,预定义帧类型排列可以根据经验、实际视频播放要求等因素进行设定,本技术在此不进行限定。在一些实施例中,目标图像帧的序号根据编码设备获取目标图像帧的次序确定,例如,某个目标图像帧是编码设备第9个获取的图像帧,则该目标图像帧的序号为9。在一些实施例中,编码设备获取目标图像帧后,获取
预定义的帧类型排列,编码设备根据预定义的帧类型排列以及目标图像的序号,确定目标图像的帧类型。例如,编码设备获取某个待编码的目标图像帧,该目标图像帧是编码设备获取的第1个目标图像帧,则该目标图像帧的序号为1,在该目标图像帧的参考图像帧的数量不满足分析条件的情况下,编码设备中存储的预定义的帧类型排列为ippbpp,编码设备根据该目标图像帧的序号和预定义的帧类型排列,确定该目标图像帧的帧类型为i帧。
[0075]
在一些实施例中,预定义的帧类型排列的长度根据预编码队列的长度确定,例如,预编码队列的大小为10帧,则预定义的帧类型排列的长度大于或等于10。目标图像的序号根据预编码队列中存储的图像帧的数量确定,在一些实施例中,编码设备在获取某个待编码的目标图像帧后,将该目标图像帧添加至预编码队列;编码设备通过判断确定预编码队列的长度小于额定长度,编码设备通过预定义的帧类型排列和目标图像帧的序号确定该目标图像帧的帧类型和编码参数,例如,编码设备获取到预定义的帧类型的排列为ibpbpibpp,编码设备获取某个待分析的目标图像帧后,在预编码队列中存储的图像帧的数量为4,则该目标图像帧的序号4,因此该目标图像帧的帧类型为b帧。
[0076]
已编码图像帧的帧类型是指通过编码设备完成编码过程的图像帧的帧类型。在一些实施例中,编码设备通过变量对已编码图像帧的帧类型进行计数,例如,编码设备中设置了第一变量、第二变量和第三变量,其中,第一变量用于记录已编码图像帧的帧类型为i帧的图像帧数目,第二变量用于记录已编码图像帧的帧类型为p帧的图像帧数目,第三变量用于记录已编码图像帧的帧类型为b帧的图像帧的数目;编码设备对目标图像帧进行编码后,对帧类型对应的变量的数值进行更新。例如,第二变量的当前数值为3,在编码设备将某个帧类型为p帧的目标图像帧进行编码后,第二变量数值更新为4。在一些实施例中,预定义的配置信息由编码设备确定,编码设备根据编码质量要求、视频播放质量等要求确定,预定义的帧类型配置信息的确定方式取决于实际情况,本技术在此不进行限定。在一些实施例中,预定义的帧类型配置信息中包括5个i帧,并且已编码的图像帧中包括1个i帧,编码设备获取某个待编码的目标图像帧并将该编码设备存储在预编码队列中,在预编码队列中图像帧的数量小于预编码队列大小的情况下,编码设备基于预配置的帧类型配置信息,确定该目标图像帧的帧类型为i帧。在一些实施例中,在编码设备将获取的某个目标图像帧存储在预编码队列中的情况下,编码设备根据预配置的帧类型配置信息、已编码图像帧的帧类型和预编码队列的长度,确定该目标图像帧的帧类型,例如,预配置的帧类型配置信息包括3个i帧,已编码的图像帧中包括2个i帧,预编码队列中长度为8,预编码队列的大小为10,编码设备根据上述信息确定该目标图像帧的帧类型为i帧。
[0077]
在一些实施例中,预定义的帧类型配置信息中包括至少一种帧类型的数量和两种不同帧类型数据的比例,例如某个预定义的帧类型配置信息包括3个i帧和i帧数量/p帧数量小于等于4。在一些实施例中,编码设备出于对视频编码的压缩率等方面的考虑,配置的预定义的帧类型配置信息中包括3个i帧,并且和i帧数量/p帧数量小于等于4,已编码的图像帧中包括3个i帧,包括6个p帧,编码设备获取某个待编码的目标图像帧,在该目标图像帧的参考图像帧的数量不满足分析条件的情况下,基于上述信息将目标图像帧的帧类型确定为p帧。
[0078]
步骤330,在目标图像帧的参考图像帧的数量不满足分析条件的情况下,将预定义的帧类型,确定为目标图像帧的帧类型。
[0079]
其中,步骤330包括以下几个子步骤,步骤332,获取预定义的编码参数配置信息,编码参数配置信息中包括至少一组帧类型和编码参数之间的对应关系;步骤334,从编码参数配置信息中,确定与目标图像帧的帧类型相对应的编码参数,作为目标图像帧的编码参数。
[0080]
编码参数包括比特率,qp等。
[0081]
在一些实施例中,编码设备获取某个待编码的目标图像帧,并将该目标图像帧存储在预编码队列中,在预编码队列的长度小于额定长度的情况下,编码设备通过预定义的帧类型排列ippipp和该目标图像帧的序号5确定目标图像帧的帧类型,通过预定义的编码参数确定目标图像帧的编码参数。
[0082]
在一些实施例中,编码设备获取某个待编码的目标图像帧,并将该目标图像帧存储在预编码队列中。编码设备判断该目标图像帧的参考图像帧是否满足编码条件,即判断预编码队列中存储的图像帧的数量是否达到预编码队列的大小。当目标图像帧的参考图像帧的数量不满足编码条件的情况时,也即预编码队列中图像帧的数量小于预编码队列的大小时,编码设备将预定义的编码参数,确定为该目标图像帧的编码参数。
[0083]
在一些实施例中,编码设备通过码率控制模型获取目标图像帧的编码参数。编码设备通过码率控制模型确定目标图像帧的编码参数的详细内容,请参考下文中通过第二方式对目标图像帧进行编码的实施例。
[0084]
步骤340,在目标图像帧的帧类型为关键帧的情况下,采用帧内预测模式根据目标图像帧的编码参数对目标图像帧进行编码;或者,在目标图像帧的帧类型为非关键帧的情况下,采用帧间预测模式根据目标图像帧的编码参数对目标图像帧进行编码。
[0085]
在一些实施例中,编码设备通过目标图像帧的帧类型和编码参数对目标图像帧进行编码,编码的具体过程请参考背景技术中的详细介绍,在此不进行赘述。根据目标图像帧的信号类型以及编码设备的编码特性可以使用不同的编码方式,对目标图像帧进行编码,本技术对编码的具体方式不进行限定。
[0086]
请参考图4,其示出了本技术另一个实施例提供的视频编码方法的示意图。在一些实施例中,编码设备获取某个待编码的目标图像帧,通过判断确定该目标图像帧的参考图像帧的数量不满足分析条件,如图4所示,编码设备获取的待编码图像帧为第3帧图像帧,第3帧图像帧的参考图像帧的数量为2(第3帧图像帧的参考图像帧包括第1帧和第2帧),分析条件为30,编码设备通过第一方式确定第3帧图像帧的帧类型为i帧(关键帧),通过码率控制模型获得第三帧图像帧对应的编码参数。编码设备对第3帧图像帧进行帧内预测编码,获得残差值,并经过量化、熵编码等编码处理,最终获得第3帧图像帧对应的码流,编码设备输出该目标图像帧对应的码流,并准备获取新的目标图像帧。
[0087]
在一些实施例中,编码设备获取某个待编码的目标图像帧后,将该目标图像帧添加至预编码队列中;在预编码队列不满足额定长度的情况下,编码设备使用第一方式确定该目标图像帧的帧类型为p帧,并通过码率预测模型确定该目标图像帧对应的编码参数;编码设备将该目标图像帧的帧类型和编码参数添加至预编码队列;编码设备对该目标图像帧进行帧间预测等、获得残差值,并经过量化、熵编码等编码处理,最终获得该关键帧对应的码流,编码设备输出该目标图像帧对应的码流,可选地,在预编码队列长度小于额定长度的情况下,已经完成编码的目标图像帧存储在编码队列中。
[0088]
编码设备在目标图像帧的参考图像帧的数量不满足分析条件的情况下,不使用目标图像的图像帧对目标图像帧的帧类型和编码参数进行预测,通过预定义的帧类型排列直接确定目标图像帧的帧类型,能节省编码设备确定目标图像帧的帧类型的时间,避免了目标图像帧的参考图像帧的数量不满足分析条件的情况下,编码设备获取到足够数量的参考图像帧才能预测目标图像帧的帧类型和编码参数的情况。
[0089]
下面通过几个实施例对目标图像帧的参考图像帧的数量满足分析条件的情况下的视频编码方法进行介绍。
[0090]
在一些实施例中,获取待编码的目标图像帧之后,还包括:在参考图像帧的数量满足分析条件的情况下,按照第二方式确定目标图像帧的帧类型和编码参数;其中,第二方式是指依据参考图像帧确定帧类型和编码参数的方式。
[0091]
第二方式是指在对目标图像帧进行正式编码前,编码设备需要根据目标图像帧和参考图像帧,预测目标图像帧的帧类型和编码参数,已获得较好的压缩率并降低视频编码造成的失真度,保证视频编码后得到的码流在解码后能产生码率稳定的视频画面。
[0092]
在一些实施例中,编码设备获取目标图像帧后,将目标图像帧添加至预编码队列,在预编码队列的长度满足额定长度的情况下,编码设备按照第二方式确定目标图像帧的帧类型和编码参数。在一些实施例中,预编码队列中除编码设备添加的目标图像帧以外,其它多个的图像帧是已经编码的图像帧,可选地,预编码队列中包括其它多个图像帧的帧类型和编码参数。在一些实施例中,预编码队列中的除目标图像帧以外的所有图像帧均为目标图像帧的参考图像帧。
[0093]
在一些实施例中,按照第二方式确定目标图像帧的帧类型和编码参数,包括:根据目标图像帧的参考图像帧确定目标图像帧的帧类型;根据配置参数和/或目标图像帧的帧类型目标图像帧的编码参数,配置参数用于约束目标图像帧的码率。
[0094]
在一些实施例中,根据参考图像帧确定目标图像帧的帧类型,包括;生成多种帧类型排列,每一种帧类型排列中包括目标图像帧的一种假定帧类型和位于假定帧类型之后的至少一个帧类型;计算多种帧类型排列分别对应的失真率;其中,帧类型排列对应的失真率是根据帧类型排列对目标图像帧和至少一个参考图像帧进行编码确定的;从多种帧类型排列中,确定失真率最小的目标帧类型排列;将目标帧类型排列中的假定帧类型,确定为目标图像帧的帧类型。
[0095]
在一些实施例中,目标图像帧的一种假定帧类型包括,i帧、p帧和b帧。位于假定帧类型之后的至少一个帧类型是指根据目标图像帧的假定帧类型,确定的参考图像帧的假定帧类型。编码设备在根据参考图像帧确定某个待编码的目标图像帧的帧类型的过程中,先假定一个该目标图像帧的帧类型,根据该目标图像帧的假定的帧类型逐个确定参考图像帧的假定帧类型,最终获得多个帧类型排列,由于目标图像帧的假定帧类型会影响后续参考图像帧确定的假定帧,因此目标图像帧设定不同的假定帧类型,会产生多个不同的帧类型排列,例如,某个待编码的目标图像帧具有5个参考图像帧,将该目标图像帧的假定帧类型确定为i帧,根据该目标图像帧的画面内容以及该目标图像帧的假定帧类型,确定的第一参考图像帧的假定帧类型为b帧,第二参考图像帧基于目标图像帧的画面内容、目标图像帧的假定帧类型、第一参考图像帧的画面内容、第一参考图像帧的假定帧类型,确定的假定帧类型为b帧,重复上述步骤直到该目标图像帧的所有参考图像帧的假定帧类型确定完成,最终
得到的一个帧类型排列为ibbpbb;将该目标图像帧的帧类型确定为b帧,重复上述步骤,确定所有参考图像帧的假定帧类型,最终得到的一个帧类型排列为bipbpp。
[0096]
编码设备计算多个帧类型排列分别对应的失真率,其中帧类型排列对应的失真率是编码设备基于该帧类型排列对目标图像帧和参考图像帧内进行粗略编码确定的。帧类型排列对应的失真率越小,说明这种这种帧类型排列的编码质量越好。编码设备选择失真率最小的帧类型排列作为目标帧类型序列,并将该目标帧类型排列中目标图像帧的假定帧类型作为该目标图像帧的帧类型。在一些实施例中,通过码率控制模型确定目标图像帧的编码参数。
[0097]
由于视频文件或实时直播场景中,相邻视频图像帧之间的变换频率较低,因此通过目标图像帧的前向参考图像帧预测目标图像帧的帧类型能够获取较可靠的帧类型预测结果。
[0098]
在一些实施例中,目标图像帧的编码参数至少包括:目标图像帧的码率和量化参数。根据配置参数和/或目标图像帧的帧类型,确定目标图像帧的编码参数,包括:根据配置参数确定目标图像帧的码率,以及,根据目标图像帧的帧类型确定目标图像帧的量化参数。或者,根据配置参数确定目标图像帧的码率和量化参数。
[0099]
编码设备可以根据不同的编码要求设置不同的配置参数。在一些实施例中,为了保持编码后的视频码率稳定,编码设备采用abr(average bitrate,平均码率)控制模型作为配置参数。编码设备还可以采用crf(constant rate factor,恒定码率系数)、cqp(constantquantizer parameter,恒定量化参数)和r-qp(rate-quantizationparameter,码率-量化)等码率控制模型作为配置参数,配置参数根据网络通信质量和编码要求等条件确定,本技术在此不进行限定。
[0100]
在一些实施例中,编码设备基于r-qp码率控制模型确定配置参数,配置参数中包括初始qp和二次模型的码率ri计算公式:
[0101][0102]
其中,ri表示目标图像帧的码率,a0、a1和ai用于表示与目标图像帧的内容相关的信息,qi是指根据初始qp对目标图像帧进行编码后得到的失真率。
[0103]
得到目标帧类型的码率后,编码设备在rdo(rate-distortion optimization,率失真优化)过程中,根据目标图像帧的帧类型确定目标图像帧的qp。
[0104]
在一些实施例中,编码设备基于cqp确定配置参数,按照cqp方法,编码设备在配置参数中配置固定的qp。可选地,编码设备为不同的帧类型配置不同的qp,例如,编码设备将帧类型为p帧的目标图像帧的qp配置为第一固定qp。编码设备根据配置参数中固定的qp计算目标图像帧的码率。
[0105]
需要说明的是,在视频文件进行预编码过程中,用于确定目标图像帧的码率和量化参数的所有方法,都可以在本技术中使用。
[0106]
请参考图5,其示出本方法另一个实施例提供的视频编码方法的示意图。
[0107]
编码设备获取目标图像帧后,将目标图像帧添加至预编码队列,预编码队列的长度为n,额定长度为n,n为正整数。在0-t1时间段内,预编码队列中帧的数量小于n,对于获取到的某个待编码的目标图像帧,编码设备采用第一方式确该定目标图像帧的帧类型和编码
参数;在一个示例中,第1帧输入预编码队列,预编码队列中帧的数量为1,小于n,不满足分析条件,编码设备通过第一方式确定该目标图像帧的帧类型为i帧,基于码率控制模型确定第1帧对应的编码参数,并对第1帧进行编码,编码后获得第1帧对应的码流,输出该码流。在t1时刻后,编码设备获取第n帧目标图像帧,此时,预编码队列的长度为n,满足分析条件;编码设备采用第二方式确定第n帧目标图像帧类型和编码参数,在另一个示例中,编码设备将第n+1帧添加至预编码队列,预编码队列中包括第2帧至第n+1帧中的任意一帧。编码设备根据第2帧至第n+1帧生成m种帧类型排列,m为正整数,计算m种帧类型排列分别对应的编码失真率,将失真率最小的帧类型排列确定为目标帧类型排列,并根据该目标图像帧类型排列确定第n+1帧的目标图像帧的帧类型,编码设备通过码率控制模型确定第n+1帧的编码参数。编码设备根据预测得到的帧类型和编码参数对第n+1帧进行编码,得到第n+1帧对应的码流,输出该码流。编码设备将第2帧移出预编码队列,等待第n+2帧待编码画面输入预编码队列。
[0108]
请参考图6,其示出本技术另一个实施例提供的视频编码过程的示意图。
[0109]
在实时直播的应用场景下,编码设备通过画面采集设备获取某个待编码的目标图像帧;编码设备将该目标图像帧添加至预编码队列中;编码设备判断预编码队列的长度是否满足分析要求,在一些实施例中,分析要求是预编码队中存储的图像帧的数量达到与编码队列的大小相同;在预编码队列长度不满足分析要求的情况下,编码设备采用第一方式确定的该目标图像帧的帧类型和编码参数,编码设备将该目标图像的帧类型和编码参数添加至预编码队列中,并根据帧类型和编码参数对该目标图像帧进行编码,获得对应的码流,并输出该码流;在预编码队列长度满足分析要求的情况下,编码设备采用第二方式预测目标图像帧的帧类型和编码参数,使得通过预测获得的目标图像帧的帧类型能在编码过程中产生的失真度最小。编码设备将编码设备将目标图像的帧类型和编码参数添加至预编码队列中,并根据帧类型和编码参数对目标图像帧进行编码,获得对应的码流,并输出该码流;编码设备通过第二方式获得目标图像帧的帧类型和编码参数后,将最早添加到预编码队列中的图像帧移出预编码队列,保证编码设备可以将下一次从画面采集设备中获得的目标图像帧添加至预编码队列中。编码设备完成对一帧目标图像帧进行编码之后,需要判断是否继续重复上述编码过程,若编码设备接收到退出指令,例如终端设备上由用户退出视频播放界面触发的退出指令、或画面采集设备结束工作触发的退出指令,则编码设备停止上述编码过程。
[0110]
综上所述,本方法在目标图像帧的参考图像帧的数量不满足分析条件的情况下,使用第一方式直接确定目标图像帧的帧类型和编码参数,减少了编码设备的等待时间,降低了编码延时;在目标图像帧的参考图像帧的数量满足分析条件的情况下,使用第二方式通过参考图像帧预测目标图像的帧类型,有助于维持编码过程码率的稳定性,避免帧间质量的波动。由于视频文件中的图像帧或直播场景的图像帧的内容切换率较低,即场景发生切换的情况较少,目标图像帧与相邻的参考图像帧之间具有很强的相关性,因此,在本方法中,采用第二方式,即使用前向参考图像帧对目标图像帧的帧类型进行预测,能够达到使用后向参考图像帧对目标图像帧类型进行预测相近的效果,并且降低了编码时延。
[0111]
虽然,在使用第一方式确定直接确定目标图像帧的帧类型和编码参数时,会造成帧间质量的波动,但是在视频流进行编码的过程中,按照第一方式确定帧类型和编码参数
的图像帧的数量远小于按照第二方式确定帧类型和编码参数的图像帧的数量,因此采用本方法建立了合理的码率控制模型,进行在视频播放的初始的很短一段时间内会因此帧间质量的波动,此后均能保持的视频画面的帧间质量的平稳性,并且编码延时低,在直播和rtc等场景中具有很高的使用性。
[0112]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0113]
请参考图7,其示出了本技术一个实施例提供的视频编码装置的框图。该装置具有实现上述视频编码方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的电子设备,也可以设置在电子设备中。该装置700可以包括:图像帧获取模块710、第一编码确定模块720和图像帧编码模块730。
[0114]
图像帧获取模块710,用于获取待编码的目标图像帧。
[0115]
第一编码确定模块720,用于在所述目标图像帧的参考图像帧的数量不满足分析条件的情况下,按照第一方式确定所述目标图像帧的帧类型和编码参数;其中,所述第一方式是指不依据所述参考图像帧确定帧类型和编码参数的方式。
[0116]
图像帧编码模块730,用于根据所述目标图像帧的帧类型和编码参数,对所述目标图像帧进行编码。
[0117]
在一些实施例中,如图8所示,所述第一编码确定模块720包括:第一帧类型确定单元722,用于将预定义的帧类型,确定为目标图像帧的帧类型;第一参数确定单元724,用于将预定义的编码参数,确定为所述目标图像帧的编码参数。
[0118]
在一些实施例中,所述第一帧类型确定单元722,用于:获取预定义的帧类型排列,所述预定义的帧类型排列是指预先确定的多个图像帧分别对应的帧类型的排布方式;基于所述目标图像帧的序号从所述预定义的帧类型排列中,确定所述目标图像帧的帧类型;或者,获取预定义的帧类型配置信息,所述预定义的帧类型配置信息中包括至少一种帧类型的配置数量;基于已编码图像帧的帧类型和所述预定义的帧类型配置信息,确定所述目标图像帧的帧类型。
[0119]
在一些实施例中,所述第一参数确定单元724,用于:所述获取预定义的编码参数配置信息,所述编码参数配置信息中包括至少一组帧类型和编码参数之间的对应关系;从所述编码参数配置信息中,确定与所述目标图像帧的帧类型相对应的编码参数,作为所述目标图像帧的编码参数。
[0120]
所述图像帧编码模块730,用于:在所述目标图像帧的帧类型为关键帧的情况下,采用帧内预测模式根据所述目标图像帧的编码参数对所述目标图像帧进行编码;或者,在所述目标图像帧的帧类型为非关键帧的情况下,采用帧间预测模式根据所述目标图像帧的编码参数对所述目标图像帧进行编码。
[0121]
在一些实施例中,如图8所示,所述装置700还包括第二编码确定模块740,用于在所述参考图像帧的数量满足所述分析条件的情况下,按照第二方式确定所述目标图像帧的帧类型和编码参数;其中,所述第二方式是指依据所述参考图像帧确定帧类型和编码参数的方式。
[0122]
在一些实施例中,所述第二编码确定模块740包括:第二帧类型确定单元742,用于根据目标图像帧的参考图像帧确定目标图像帧的帧类型;第二参数确定单元744,用于根据
配置参数和/或目标图像帧的帧类型目标图像帧的编码参数,所述配置参数用于约束所述目标图像帧的码率。
[0123]
在一些实施例中,所述第二帧类型确定单元742,用于:生成多种帧类型排列,每一种帧类型排列中包括所述目标图像帧的一种假定帧类型和位于所述假定帧类型之后的至少一个帧类型;计算所述多种帧类型排列分别对应的失真率;其中,所述帧类型排列对于的失真率是根据所述帧类型排列对所述目标图像帧和至少一个参考图像帧进行编码确定的;从所述多种帧类型排列中,确定失真率最小的目标帧类型排列;将所述目标帧类型排列中的假定帧类型,确定为所述目标图像帧的帧类型。
[0124]
在一些实施例中,如图8所示,所述装置700还包括图像帧添加模块750,用于:将所述目标图像帧添加至预编码队列中;在所述预编码队列的长度小于额定长度的情况下,确定所述目标图像帧的参考图像帧的数量不满足分析条件;在所述预编码队列的长度等于所述额定长度的情况下,确定所述目标图像帧的参考图像帧的数量满足分析条件。
[0125]
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0126]
在示例中实施例中,还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序。所述计算机程序经配置以由一个或者一个以上处理器执行,以实现上述视频编码方法。
[0127]
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被计算机设备的处理器执行时实现上述视频编码方法。
[0128]
可选地,上述计算机可读存储介质可以是rom(read-only memory,只读存储器)和ram(random access memory,随机存取存储器)等存储设备。
[0129]
在示例性实施例中,还提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述视频编码方法。
[0130]
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本技术实施例对此不作限定。
[0131]
以上所述仅为本技术的示例性实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1