一种视频编码方法、装置、计算机设备及存储介质与流程

文档序号:24406016发布日期:2021-03-26 17:09阅读:84来源:国知局
一种视频编码方法、装置、计算机设备及存储介质与流程

1.本发明实施例涉及视频处理技术领域,尤其涉及一种视频编码方法、装置、计算机设备及存储介质。


背景技术:

2.相关技术中,视频编辑软件或者视频转换软件在编码输出时,常采用两种技术:一种是换容器的无损转换;另一种是解码后图像再次进行gpu编码或者cpu编码;但这两种技术的编码输出的速度均受当前硬件性能影响,所以提高编码输出速度已成为主流编码优化方向。


技术实现要素:

3.本发明实施例的目的是提供一种视频编码方法、装置、计算机设备及存储介质,旨在解决现有技术中需要过度依赖硬件性能才能提高编码输出速度的问题。
4.第一方面,本发明实施例提供了一种视频编码方法,其包括:
5.解析待解码视频流,得到原始视频帧;
6.解码所述原始视频帧并提取每一所述原始视频帧中的原始宏块运动矢量;
7.根据目标视频参数,将每一原始视频帧中的所述原始宏块运动矢量换算为对应的目标宏块运动矢量;
8.利用所述目标宏块运动矢量,完成编码。
9.第二方面,本发明实施例提供了一种视频编码装置,其包括:
10.解析单元,用于解析待解码视频流,得到原始视频帧;
11.提取单元,用于解码所述原始视频帧并提取每一所述原始视频帧中的原始宏块运动矢量;
12.换算单元,用于根据目标视频参数,将每一原始视频帧中的所述原始宏块运动矢量换算为对应的目标宏块运动矢量;
13.替换单元,用于利用所述目标宏块运动矢量,完成编码。
14.第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的视频编码方法。
15.第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的视频编码方法。
16.本发明实施例公开了一种视频编码方法、装置、计算机设备及存储介质。该方法包括解析待解码视频流,得到原始视频帧;解码原始视频帧并提取每一原始视频帧中的原始宏块运动矢量;根据目标视频参数,将每一原始视频帧中的原始宏块运动矢量换算为对应的目标宏块运动矢量;利用目标宏块运动矢量作为编码过程中的运动估计结果,完成编码
过程。本发明实施例在解码过程中提取每一原始视频帧自身携带的原始宏块运动矢量,将原始宏块运动矢量换算为对应的目标宏块运动矢量,并将目标宏块运动矢量作为编码过程中的运动估计结果,可节省运动估计过程,具有不依赖硬件性能也能提高编码速度的优点,有效的提高了用户体验。
附图说明
17.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本发明实施例提供的视频编码流程示意图;
19.图2为本发明实施例提供的视频编码子流程示意图;
20.图3为本发明实施例提供的视频编码又一子流程示意图;
21.图4为本发明实施例提供的待解码视频流的解码示意图;
22.图5为本发明实施例提供的目标宏块运动矢量的换算示意图;
23.图6为本发明实施例提供的目标宏块运动矢量的另一换算示意图;
24.图7为本发明实施例提供的目标宏块运动矢量的另一换算示意图;
25.图8为本发明实施例提供的宏块坐标的示意图;
26.图9为本发明实施例提供的视频编码装置的示意图。
具体实施方式
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
28.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
29.还应当理解,在此本发明实施例的说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明实施例。如在本发明实施例的说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
30.还应当进一步理解,在本发明实施例的说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
31.请参阅图1,图1为本发明实施例提供的视频编码方法的流程示意图;
32.如图1所示,该方法包括步骤s101~s104。
33.s101、解析待解码视频流,得到原始视频帧。
34.本实施例中,在视频编辑完成后,一般都会进行编码输出,编码输出是指将某个视频格式的文件转换成另一种视频格式文件的方式,在这个过程中,首先需要对待解码视频
流进行解析,得到多个原始视频帧,多个原始视频帧是构成一个视频的基础单位,编码输出的过程也可以说是对多个原始视频帧进行解码并输出新的视频帧的过程,也就是输出目标视频帧的过程。
35.s102、解码原始视频帧并提取每一原始视频帧中的原始宏块运动矢量。
36.本实施例中,原始宏块运动矢量是包含在原始视频帧的码流中的,在解码原始视频帧时,会从原始视频帧的码流中解压出原始宏块运动矢量,通过对每一原始视频帧进行解码,可得到对应每一原始视频帧自身携带的原始宏块运动矢量。
37.在一实施例中,如图2,步骤s102包括:
38.s201、对每一原始视频帧进行排序,得到每一原始视频帧对应的原始视频帧号;
39.s202、解码每一原始视频帧号下对应的原始帧类型,原始帧类型包括关键帧i、双向预测编码帧b以及前向预测帧p;
40.s203、解码每一原始视频帧号下对应的原始运动向量信息。
41.本实施例中,结合图4所示,对原始视频帧进行解码时,先将每一原始视频帧进行排序,排序的方式可以按原始视频流的播放顺序进行排序,一个原始视频帧对应一个原始视频帧号,可得到每一原始视频帧对应的原始视频帧号;然后继续解码每一原始视频帧号下对应的原始帧类型,原始帧类型包括关键帧i、双向预测编码帧b以及前向预测帧p;再继续解码每一原始视频帧号下对应的原始运动向量信息;但需要说明的是,这里只有双向预测编码帧b和前向预测帧p需要进行帧间运行估计,所以在解码每一原始视频帧号下对应的原始运动向量信息时,只需解码原始帧类型为双向预测编码帧b和前向预测帧p的原始运动向量信息即可。
42.s103、根据目标视频参数,将每一原始视频帧中的原始宏块运动矢量,换算为对应的目标宏块运动矢量。
43.本实施例中,在对原始视频帧进行编码输出的过程中,因为编码输出的目标视频帧的目标视频参数与原始视频帧的原始视频参数不同,这样会导致原始宏块运动矢量不能直接替换编码输出过程中的运动估计结果,还需要根据目标视频帧的目标视频参数与原始视频帧的原始视频参数之间的关系来对原始宏块运动矢量进行换算,在换算得到对应每一目标视频帧的目标宏块运动矢量后,再将得到的目标宏块运动矢量来替换编码输出过程中的运动估计结果,即可有效的提高编码输出的速度。
44.在一实施例中,如图3,步骤s103包括:
45.s301、获取每一目标视频帧的目标视频参数,目标视频参数包括目标视频分辨率和目标视频帧率;
46.s302、若目标视频帧的目标视频分辨率和目标视频帧率分别与对应原始视频帧的原始视频分辨率和原始视频帧率一致,则直接将原始视频帧对应的原始宏块运动矢量作为目标视频帧对应的目标宏块运动矢量。
47.本实施例中,结合图5所示,获取每一目标视频帧的目标视频参数,这里的目标视频参数包括目标视频分辨率和目标视频帧率,目标视频分辨率和目标视频帧率越高则表示输出的目标视频的画质更好更流畅,具体的目标视频分辨率和目标视频帧率可根据需求进行选用。
48.在解码输出的过程中,若目标视频帧的目标视频分辨率和目标视频帧率分别与对
应原始视频帧的原始视频分辨率和原始视频帧率一致,也就是说编码输出的目标视频帧的目标视频参数与原始视频帧的原始视频参数相同,则在编码输出的过程中可直接使用原始视频帧对应的原始宏块运动矢量作为目标视频帧对应的目标宏块运动矢量,并将目标视频帧对应的目标宏块运动矢量替换编码输出过程中的运动估计结果,从而跳过运动估计的过程,实现有效的提高编码输出的速度。
49.本实施例相比于现有技术,现有技术中若输出参数与源文件参数保持一致,通常采用无损输出;但是对源文件与输出参数之间的限制多且源文件不可编辑,使得应用场景有限;而本实施例不受该限制且应用更便捷。
50.在一实施例中,步骤s103还包括:
51.若目标视频帧的目标视频分辨率与对应原始视频帧的原始视频分辨率不一致,则按照目标视频帧的目标视频分辨率与原始视频帧的原始视频分辨率的之间的比例进行缩放,换算出目标视频帧中对应的目标宏块运动矢量。
52.本实施例中,结合图6所示,在解码输出的过程中,若目标视频帧的目标视频分辨率与对应原始视频帧的原始视频分辨率不一致,举例来说,若目标视频分辨率的宽高为32
×
32,原始视频分辨率的宽高为64
×
64,则需要根据目标视频分辨率和原始视频分辨率的之间的比例进行缩放,也就是要将原始视频分辨率64
×
64通过缩放来转化为目标视频分辨率32
×
32,而这一转化的过程中,不能直接以原始宏块运动矢量来替换运动估计结果,而是基于目标视频分辨率和原始视频分辨率的之间的比例关系,对原始宏块运动矢量进行换算得到目标宏块运动矢量,再由目标宏块运动矢量来替换运动估计结果,从而跳过运动估计的过程,实现有效的提高编码输出的速度。
53.在一实施例中,对原始宏块运动矢量进行换算得到目标宏块运动矢量的过程为:根据原始宏块运动矢量、原始宏块的坐标系数、原始视频帧的宽和高以及目标视频帧的宽和高,计算并得到目标视频帧的目标宏块运动矢量。
54.具体的,按如下公式换算目标视频帧的目标宏块运动矢量:
55.dmv=smv(x*sw/dw,y*sh/dh);
56.其中,smv为原始宏块运动矢量,x和y为原始宏块的坐标系数,sw为原始视频帧的宽,sh为原始视频帧的高,dw为目标视频帧的宽,dh为目标视频帧的高。
57.分别将对应的参数代入上述公式后即可换算出目标视频帧的目标宏块运动矢量;举例来说,如图7所示,将原始视频分辨率为64
×
64的原始视频帧的宏块分割为16
×
16的宏块分割坐标图,将目标视频分辨率为32
×
32的目标视频帧的宏块分割为16
×
16的宏块分割坐标图;具体的,对于目标视频帧的坐标为d(0,0)处的目标宏块运动矢量,其对应的原始视频帧的坐标为s(0,0)、s(0,1)、s(1,0)、s(1,1)的任意一个,即dmv(0,0)=smv(0,0)或者dmv(0,0)=smv(0,1)或者dmv(0,0)=smv(1,0)或者dmv(0,0)=smv(1,1);也就是说,通过换算得到的目标视频帧的坐标为d(0,0)处的目标宏块运动矢量可以是原始视频帧的坐标为s(0,0)、s(0,1)、s(1,0)、s(1,1)的任意一个原始宏块运动矢量,同理可换算出目标视频帧的坐标为d(0,1)、d(1,0)以及d(1,1)处的目标宏块运动矢量。
58.本实施例相比于现有技术,现有技术对编辑过的视频采用gpu编码方案或者cpu并行的优化方案,但这两种方案均依赖比较好的独立显卡以及适当的显卡驱动,成本比较高,技术复杂度高;尤其采用cpu并行的优化方案,在编辑高分辨率和高帧率视频后输出时,由
于解码/视频渲染已占用较多cpu资源,并行并不能带来本质上的提升,并且依赖硬件资源,对硬件本身数据处理能力要求较高,如采用并行的cpu优化方案,占用的设备运算资源过多,还会造成过高的时间成本。而本实施例中提供的方案并不需要均依赖比较好的独立显卡以及适当的显卡驱动,仅是将原始宏块运动矢量转化为目标宏块运动矢量,并且节省了运动估计的过程,从而实现有效的提高编码输出的速度。
59.在一实施例中,步骤s103还包括:
60.若目标视频帧的目标视频帧率与原始视频帧的原始视频帧率不一致,则根据目标视频帧的目标帧号和对应的目标帧类型,在原始视频帧中寻找与目标帧类型相同且最接近的原始视频帧,并将找到的最接近的原始视频帧对应的原始宏块运动矢量作为对应目标视频帧的目标宏块运动矢量。
61.本实施例中,在解码输出的过程中,若目标视频帧的目标视频帧率与原始视频帧的原始视频帧率不一致,举例来说,若目标视频帧率为4fps,原始视频帧率为8fps,则解码输出的过程如图8所示,目标视频的双向预测编码帧b或前向预测帧p的目标视频帧号为dn,原始视频帧号为sn,视频帧号为sn的原始运动矢量为mv。具体的,当dn为2时,对应的是前向预测帧p,在sn序列中寻找距离最近的相同类型帧,例如sn为6,则目标视频帧号2对应的前向预测帧p的目标宏块运动矢量可以采用原始视频帧号6对应的前向预测帧p的原始宏块运动矢量,同理可换算出其他目标视频帧号的类型帧对应的目标宏块运动矢量。
62.s104、利用目标宏块运动矢量,完成编码。
63.具体的,可直接剔除帧间编码阶段的运动估计过程,将目标宏块运动矢量作为帧间编码阶段的运动估计结果,进行下一流程编码。
64.本实施例中,运动估计的过程是传统编码输出的过程中必不可少的部分,这一过程的结果可得到一个运动矢量,该运动矢量可用后续的运动补偿阶段进行宏块数据压缩;而为了节省运动估计这一过程的时间,本发明实施例直接将目标宏块运动矢量运动估计结果,由目标宏块运动矢量替换运动估计结果来进行后续的运动补偿阶段,从而实现了节省运动估计时间,提高编码速度的优点。
65.本实施例相比于现有技术,同样不需要依赖比较好的独立显卡以及适当的显卡驱动,也仅是将原始宏块运动矢量转化为目标宏块运动矢量,并且节省了运动估计的过程,从而实现有效的提高编码输出的速度。
66.本发明实施例还提供一种视频编码装置,该视频编码装置用于执行前述视频编码方法的任一实施例。具体地,请参阅图9,图9是本发明实施例提供的视频编码装置的示意性框图。
67.如图9所示,视频编码装置900,包括:解析单元901、解析单元902、换算单元903以及替换单元904。
68.解析单元901,用于解析待解码视频流,得到原始视频帧;
69.提取单元902,用于解码原始视频帧并提取每一原始视频帧中的原始宏块运动矢量;
70.换算单元903,用于根据目标视频参数,将每一原始视频帧中的原始宏块运动矢量换算为对应的目标宏块运动矢量;
71.替换单元904,用于利用目标宏块运动矢量,完成编码。
72.该装置在解码过程中提取每一原始视频帧自身携带的原始宏块运动矢量,将原始宏块运动矢量换算为对应的目标宏块运动矢量,并将目标宏块运动矢量作为编码过程中的运动估计结果,可节省运动估计过程,具有不依赖硬件性能也能提高编码速度的优点,有效的提高了用户体验。
73.在一实施例中,提取单元902包括:
74.排序单元,用于对每一原始视频帧进行排序,得到每一原始视频帧对应的原始视频帧号;
75.第一解码单元,用于解码每一原始视频帧号下对应的原始帧类型,原始帧类型包括关键帧i、双向预测编码帧b以及前向预测帧p;
76.第二解码单元,用于解码每一原始视频帧号下对应的原始运动向量信息。
77.在一实施例中,换算单元903包括:
78.获取单元,用于获取每一目标视频帧的目标视频参数,目标视频参数包括目标视频分辨率和目标视频帧率;
79.第一换算单元,用于若目标视频帧的目标视频分辨率和目标视频帧率分别与对应原始视频帧的原始视频分辨率和原始视频帧率一致,则直接将原始视频帧对应的原始宏块运动矢量作为目标视频帧对应的目标宏块运动矢量。
80.在一实施例中,换算单元903还包括:
81.第二换算单元,用于若目标视频帧的目标视频分辨率与对应原始视频帧的原始视频分辨率不一致,则按照目标视频帧的目标视频分辨率与原始视频帧的原始视频分辨率的之间的比例进行缩放,换算出目标视频帧中对应的目标宏块运动矢量。
82.在一实施例中,第二换算单元还包括:
83.计算单元,用于根据原始宏块运动矢量、原始宏块的坐标系数、原始视频帧的宽和高以及目标视频帧的宽和高,计算并得到目标视频帧的目标宏块运动矢量。
84.在一实施例中,换算单元903还包括:
85.第三换算单元,用于若目标视频帧的目标视频帧率与原始视频帧的原始视频帧率不一致,则根据目标视频帧的目标帧号和对应的目标帧类型,在原始视频帧中寻找与目标帧类型相同且最接近的原始视频帧,并将找到的最接近的原始视频帧对应的原始宏块运动矢量作为对应目标视频帧的目标宏块运动矢量。
86.在一实施例中,替换单元904包括:
87.剔除单元,用于剔除帧间编码阶段的运动估计过程,将目标宏块运动矢量作为帧间编码阶段的运动估计结果,进行下一流程编码。
88.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上的视频编码方法。
89.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
90.以上所述,仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1