1.本发明涉及视频传输领域,更具体地,涉及一种视频编解码方法、系统、设备及介质。
背景技术:
2.视频编解码处理应用非常广泛,近年来流行两种
方案,一种被称为深压缩,一般采用h264/h265的编码格式对视频
图像进行压缩,其优势是压缩比高、占用带宽少,劣势是图像质量较差,特别是在显示文字的场景,另一种被称为浅压缩,一般采用jpeg、vc-2、sdvoe等技术对视频图像进行压缩,其优势是图像质量好,但劣势是带宽要求高,有的甚至要求万兆交换机。
技术实现要素:
3.本发明旨在克服上述现有技术的至少一种缺陷(不足),提供一种自适应视频编解码方法、系统、设备及介质,用于融合不同编码方式的优点,优化视频数据传输。
4.本发明采取的技术方案是,一种自适应视频编码方法,包括:
5.获取视频数据的图像帧;
6.根据每一图像帧的帧顺序以及图像帧之间的
差异程度,确定每一图像帧的编码方案;
7.根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码;
8.根据每一图像帧的编码方案,确定每一图像帧的缓存方式;
9.每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。
10.本发明中,可以根据视频数据中各图像帧的帧顺序以及图像帧之间的差异程度,有针对性地自适应地确定每一图像帧的编码方案并进行编码,采用多种编码方式共同对视频数据进行处理,进而融合不同编码方式的优点,优化视频数据传输。
11.进一步的,根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案,具体包括:
12.判断当前图像帧是否为所述视频数据的第一帧图像帧,
13.若是,则确定当前图像帧的编码方案为第一编码算法;
14.若否,则获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,并继续判断所述差异程度是否大于或等于预设阈值,
15.若是,则确定当前图像帧的编码方案为第一编码算法;
16.若否,则确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法。
17.本发明中,确定视频数据的第一帧的编码方案为第一编码算法,例如jpeg lossless等压缩算法,可以对该帧所有数据进行完整的压缩编码,而从第二帧开始,先获取当前图像帧与前一帧的差异程度,若差异程度大于或等于预设阈值时,则代表当前图像帧
相较前一帧图像变化较大,即两帧图像中所包含的数据区别较大,属于偏动态的画面,此时为了保证视频图像传输质量与完整,需对当前帧的所有数据同样进行完整的压缩编码,故此时当前帧的编码方案仍旧需要选择第一编码算法;而若差异程度小于预设阈值时,则代表当前图像帧相较前一帧图像变化较小,即两帧图像中所包含的数据区别较小,属于偏静态的画面,故无需对当前帧的所有数据进行编码,仅需对当前帧与前一帧的差异值进行编码,即可保证视频图像传输的完整性。本发明对不同特性的图像帧采取不同的编码方案,可在保证视频图像传输质量与完整的同时,有效降低在图像变化较小时的网络带宽消耗和延时,提升视频传输效率,优化视频数据传输。
18.进一步的,根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码,具体包括:
19.当确定当前图像帧的编码方案为第一编码算法时,采用第一编码算法对当前图像帧进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第一帧类型码;
20.当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,采用第二编码算法对所述差异值进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第二帧类型码。
21.本发明中,采用不同的编码方案对不同特性的图像帧进行编码,并根据编码方案设置不同的帧类型码进行表征,有利于后续解码过程中,快速通过帧类型码确定图像帧的编码方式,进而确定对应的解码方式,从另一方面提升视频数据传输处理效率。
22.进一步的,根据每一图像帧的编码方案,确定每一图像帧的缓存方式,具体包括:
23.在当前图像帧的编码方案为第一编码算法的情况下,判断所述第一编码算法是否为无损算法,若是,则将当前图像帧直接保存到缓存,若否,则将当前图像帧编码后的数据进行解码后再保存到缓存;
24.在当前图像帧的编码方案为第二编码算法的情况下,则将当前图像帧直接保存到缓存。
25.在进行编码过程中,由于涉及不断进行当前图像帧与前一图像帧的差异比较,因此需要将每次编码的图像帧进行缓存保存,以便下一帧比较时进行参考。其中,对于无损的第一编码算法以及对差异值进行编码的第二编码算法来说,其在之后的解码过程中,得到的解码后图像均与原始图像数据完全一致,并不存在差异,故将每次编码的当前图像帧直接保存进缓存即可,每次比较的均是原始图像数据;而对于有损的第一编码算法来说,其在之后的解码过程中,得到的解码后图像并不是原始图像数据,而是存在数据损失的图像,故为了保证编解码的一致性,在编码过程中,需要将经过有损编码后的当前图像帧进行解码后保存在缓存中,以便进行与下一帧的差异比较。
26.进一步的,获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,具体包括:
27.将当前图像帧与前一图像帧对应划分为若干比较区域,每个比较区域间隔若干
字节,每个比较区域包含若干字节;
28.对当前图像帧与前一图像帧的每个比较区域进行差异比较,将所有比较区域的差异字节数与当前图像帧的总字节数的比值作为当前图像帧与缓存中的前一图像帧的差异
程度,将每个区域字节差异值拼接形成的数据组作为当前图像帧与缓存中的前一图像帧的差异值。
29.本发明中,获取视频数据中两帧图像的差异程度,并不需要将两帧中的所有字节逐一严格进行比较,而只需要比较其中一定数量的字节差异即可反映两帧的差异程度,故本发明将当前图像帧与前一图像帧对应划分若干比较区域进行多次比较,每个比较区域间隔若干字节,仅比较各个比较区域中的字节差异即可,可有效节省cpu资源,提升帧间差异的比较速度,提升视频编码效率。
30.另一方面,本发明采取的另一种技术方案为,一种自适应视频解码方法,包括:
31.接收视频编码方法中所述的视频流;
32.根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一图像帧解码后的数据。
33.另一方面,本发明采取的另一种技术方案为,一种自适应视频编码系统,包括:
34.数据获取模块,用于获取视频数据的图像帧;
35.编码方案确定模块,用于根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;
36.编码模块,用于根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,并根据每一图像帧的编码方案,设置对应的帧类型码;
37.缓存模块,用于根据每一图像帧的编码方案,确定每一图像帧的缓存方式;
38.视频流构成模块,用于每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。
39.另一方面,本发明采取的另一种技术方案为,一种自适应视频解码系统,包括:
40.视频流接收模块,用于接收视频编码方法中所述的视频流;
41.解码模块,用于根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一解码后的数据。
42.另一方面,本发明采取的另一种技术方案为,一种电子设备,包括存储器和处理器,存储器存储有计算机程序,所述处理器执行计算机程序时实现如上述的自适应视频编码方法或上述的自适应视频解码方法。
43.另一方面,本发明采取的另一种技术方案为,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的自适应视频编码方法或如上述的自适应视频解码方法。
44.与现有技术相比,本发明的有益效果为:
45.本发明根据图像帧的帧顺序以及帧间的差异程度,自动确定图像帧的编码方案,对视频数据的第一帧以及与前一帧差异程度较大的偏动态图像帧采用第一编码算法进行压缩编码,对与前一帧差异程度较小的偏静态图像帧采用第二编码算法对差异值进行编码,融合不同编码方式的优点,优化视频数据传输,同时支持视频数据动静态特性的自适应识别,始终保证了良好的图像质量,在画面变化较小时可获得极低的网络带宽消耗和极低的延时,能在几乎与浅压缩相当的带宽环境下,实现高质量画面的传输。
附图说明
46.图1为实施例1编码方法流程图。
47.图2为实施例1编码方法细化流程图。
48.图3为实施例2解码方法流程图。
49.图4为实施例3编码系统结构图。
50.图5为实施例4解码系统结构图。
51.附图标记说明:数据获取模块100,编码方案确定模块200,编码模块300,缓存模块400,视频流构成模块500,视频流接收模块600,解码模块700。
具体实施方式
52.本发明附图仅用于示例性说明,不能理解为对本发明的限制。为了更好说明以下实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
53.实施例1
54.如图1所示,本实施例提供一种自适应视频编码方法,包括:
55.s1、获取视频数据的图像帧;
56.s2、根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;
57.s3、根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码;
58.s4、根据每一图像帧的编码方案,确定每一图像帧的缓存方式;
59.s5、每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。
60.更具体的,本实施例对图1中的s2、s3、s4步骤做出进一步细化,完整流程图如图2所示。
61.进一步的,步骤s2具体包括:
62.s21、判断当前图像帧是否为所述视频数据的第一帧图像帧,若是,则执行步骤s22,若否,则执行步骤s23;
63.s22、确定当前图像帧的编码方案为第一编码算法;
64.s23、获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,并继续执行步骤s24;
65.s24、判断所述差异程度是否大于或等于预设阈值,若是,则返回执行s22,若否,则执行步骤s25;
66.s25、确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法。
67.本实施例中,确定视频数据的第一帧的编码方案为第一编码算法,第一编码算法可以具体为帧内编码,例如jpeg lossless等压缩算法,可以对该帧所有数据进行完整的压缩编码,而从第二帧开始,则首先获取当前图像帧与前一帧的差异程度,若差异程度大于或等于预设阈值时,则代表当前图像帧相较前一帧图像变化较大,即两帧图像中所包含的数据区别较大,属于偏动态的画面,此时为了保证视频图像传输质量与完整,需对当前帧的所有数据同样进行完整的压缩编码,故此时当前帧的编码方案仍旧需要选择第一编码算法;
而若差异程度小于预设阈值时,则代表当前图像帧相较前一帧图像变化较小,即两帧图像中所包含的数据区别较小,属于偏静态的画面,故无需对当前帧的所有数据进行编码,仅需对当前帧与前一帧的差异值进行编码,即可保证视频图像传输的完整性。本实施例对不同特性的图像帧采取不同的编码方案,可在保证视频图像传输质量与完整的同时,有效降低在图像变化较小时的网络带宽消耗和延时,提升视频传输效率,优化视频数据传输。
68.进一步的,步骤s23中获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,具体包括:
69.将当前图像帧与前一图像帧对应划分为若干比较区域,每个比较区域间隔若干字节,每个比较区域包含若干字节;
70.对当前图像帧与前一图像帧的每个比较区域进行差异比较,将所有比较区域的差异字节数与当前图像帧的总字节数的比值作为当前图像帧与缓存中的前一图像帧的差异程度,将每个区域字节差异值拼接形成的数据组作为当前图像帧与缓存中的前一图像帧的差异值。
71.具体实施过程中,在进行帧间差异比较的时候,可以先使用内存比较函数memcmp比较当前图像帧和前一图像帧的k*n个字节,其中n表示一个比较区域的字节数,k表示随机一个大于1的自然数,即先进行图像帧的大范围字节数的差异位置区域搜索,当memcmp返回非0值时,判定当前比较的k*n个字节中存在差异,故继续在当前比较的k*n个字节中,选取一定数量的字节进行细致的差异比较,可以划分每n个字节作为一个比较区域,每个比较区域间隔m个字节,依次比较当前k*n个字节中所有比较区域的字节差异,进而得到该k*n个字节中当前帧与前一帧的差异程度与差异值;而当memcmp返回非0值时,判定当前比较的k*n个字节中不存在差异,故偏移k*n个字节重复上述步骤,依次类推,直至当前图像帧和前一图像帧所有字节比较完成。本实施例,避免图像帧间的逐一字节差异比较,有利于提升比较速度以及节省cpu消耗,提升视频编码效率。
72.进一步的,步骤s3,具体包括:
73.当确定当前图像帧的编码方案为第一编码算法时,执行步骤s31,当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,执行步骤s32;
74.s31、采用第一编码算法对当前图像帧进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第一帧类型码;
75.s32、采用第二编码算法对所述差异值进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第二帧类型码。
76.具体的,本实施例中,当确定当前图像帧的编码方案为第一编码算法时,可以设置当前图像帧的帧类型码为0;而当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,可以设置当前图像帧的帧类型码为1。设置不同的帧类型码表征不同的编码方案,有利于后续解码过程中,快速通过帧类型码确定图像帧的编码方式,进而确定对应的解码方式,从另一方面提升视频数据传输处理效率。
77.同时,采用第二编码算法对差异值进行编码,具体实施过程可以为,假设每次比较8字节,比较完偏移4字节继续比较,用offset表示偏移量,用v1表示前一帧的8字节数据值,v2表示后一帧的8字节数据值,当v1不等于v2时,则将[offset,v1-v2]这一数据组记录到编码后的数据中,其中offset占4个字节,v1-v2的值占8个字节,合计12个字节。与此同时,对
缓存图像数据进行修改,用v2代替v1值,得到当前图像帧,这样就可以使得在比较的过程中,同时也把缓存数据进行了更新,能有效降低cpu的消耗,更新后的缓存数据可以用于下一图像帧比较时的参考。
[0078]
进一步的,步骤s4,具体包括:
[0079]
当确定当前图像帧的编码方案为第一编码算法时,执行步骤s41,当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,执行步骤s42;
[0080]
s41、判断所述第一编码算法是否为无损算法,若是,则执行步骤s42;若否,则执行步骤s43;
[0081]
s42、将当前图像帧直接保存到缓存;
[0082]
s43、将当前图像帧编码后的数据进行解码后再保存到缓存。
[0083]
在进行编码过程中,由于涉及不断进行当前图像帧与前一图像帧的差异比较,因此需要将每次编码的图像帧进行缓存保存,以便下一帧比较时进行参考。其中,对于无损的第一编码算法以及对差异值进行编码的第二编码算法来说,其在之后的解码过程中,得到的解码后图像均与原始图像数据完全一致,并不存在差异,故将每次编码的当前图像帧直接保存进缓存即可,每次比较的均是原始图像数据;而对于有损的第一编码算法来说,其在之后的解码过程中,得到的解码后图像并不是原始图像数据,而是存在数据损失的图像,故为了保证编解码的一致性,在编码过程中,需要将经过有损编码后的当前图像帧进行解码后保存在缓存中,以便进行与下一帧的差异比较。
[0084]
实施例2
[0085]
如图3所示,本实施例提供一种自适应视频解码方法,包括:
[0086]
s6、接收实施例1中所述的视频流;
[0087]
s7、根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一图像帧解码后的数据。
[0088]
具体的,根据在实施例1中帧类型码的设置方式,若帧类型码为0,则确定当前图像帧的编码方案为第一编码算法,按照第一编码算法的对应解码方案进行解码;若帧类型码为1,则确定当前图像帧的编码方案为对差异值进行编码的第二编码算法,按照第二编码算法的对应解码方案进行解码。
[0089]
其中,按照第二编码算法的对应解码方案进行解码的具体实施过程可以为,若编码采用的是每次以8字节比较差异,并将4个字节的偏移量offset和8个字节差异值d保存为编码后的数据,则在解码时,每次从编码后的数据中取12字节,前4个字节作为偏移量offset,后8个字节作为差异值d,根据偏移量offset从缓存前一图像帧中取8个字节v1,并做有符号运行v2=v1-d,然后将v2替换掉缓存前一图像帧中偏移量offset后的8个字节,即可计算得到解码后的当前图像帧。
[0090]
在得到每一图像帧解码后的数据后,可以根据需要送去显示或存储。
[0091]
实施例3
[0092]
如图4所示,本实施例提供一种自适应视频编码系统,包括:
[0093]
数据获取模块100,用于获取视频数据的图像帧;
[0094]
编码方案确定模块200,用于根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;
[0095]
编码模块300,用于根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,并根据每一图像帧的编码方案,设置对应的帧类型码;
[0096]
缓存模块400,用于根据每一图像帧的编码方案,确定每一图像帧的缓存方式;
[0097]
视频流构成模块500,用于每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。
[0098]
进一步的,编码方案确定模块200确定每一图像帧的编码方案,步骤具体包括:
[0099]
判断当前图像帧是否为所述视频数据的第一帧图像帧,
[0100]
若是,则确定当前图像帧的编码方案为第一编码算法;
[0101]
若否,则获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,并继续判断所述差异程度是否大于或等于预设阈值,
[0102]
若是,则确定当前图像帧的编码方案为第一编码算法;
[0103]
若否,则确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法。
[0104]
本实施例中,确定视频数据的第一帧的编码方案为第一编码算法,第一编码算法可以具体为帧内编码,例如jpeg lossless等压缩算法,可以对该帧所有数据进行完整的压缩编码,而从第二帧开始,则首先获取当前图像帧与前一帧的差异程度,若差异程度大于或等于预设阈值时,则代表当前图像帧相较前一帧图像变化较大,即两帧图像中所包含的数据区别较大,属于偏动态的画面,此时为了保证视频图像传输质量与完整,需对当前帧的所有数据同样进行完整的压缩编码,故此时当前帧的编码方案仍旧需要选择第一编码算法;而若差异程度小于预设阈值时,则代表当前图像帧相较前一帧图像变化较小,即两帧图像中所包含的数据区别较小,属于偏静态的画面,故无需对当前帧的所有数据进行编码,仅需对当前帧与前一帧的差异值进行编码,即可保证视频图像传输的完整性。本实施例对不同特性的图像帧采取不同的编码方案,可在保证视频图像传输质量与完整的同时,有效降低在图像变化较小时的网络带宽消耗和延时,提升视频传输效率,优化视频数据传输。
[0105]
进一步的,获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,具体包括:
[0106]
将当前图像帧与前一图像帧对应划分为若干比较区域,每个比较区域间隔若干字节,每个比较区域包含若干字节;
[0107]
对当前图像帧与前一图像帧的每个比较区域进行差异比较,将所有比较区域的差异字节数与当前图像帧的总字节数的比值作为当前图像帧与缓存中的前一图像帧的差异程度,将每个区域字节差异值拼接形成的数据组作为当前图像帧与缓存中的前一图像帧的差异值。
[0108]
具体实施过程中,在进行帧间差异比较的时候,可以先使用内存比较函数memcmp比较当前图像帧和前一图像帧的k*n个字节,其中n表示一个比较区域的字节数,k表示随机一个大于1的自然数,即先进行图像帧的大范围差异位置区域搜索,当memcmp返回非0值时,判定当前比较的k*n个字节中存在差异,故继续在当前比较的k*n个字节中,选取一定数量的字节进行细致的差异比较,可以划分每n个字节作为一个比较区域,每个比较区域间隔m个字节,依次比较当前k*n个字节中所有比较区域的字节差异,进而得到该k*n个字节中当前帧与前一帧的差异程度与差异值;而当memcmp返回非0值时,判定当前比较的k*n个字节中不存在差异,故偏移k*n个字节重复上述步骤,依次类推,直至当前图像帧和前一图像帧
所有字节比较完成。本实施例,避免图像帧间的逐一字节差异比较,有利于提升比较速度以及节省cpu消耗,提升视频编码效率。
[0109]
进一步的,根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码,具体包括:
[0110]
当确定当前图像帧的编码方案为第一编码算法时,采用第一编码算法对当前图像帧进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第一帧类型码;
[0111]
当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,采用第二编码算法对所述差异值进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第二帧类型码。
[0112]
具体的,本实施例中,当确定当前图像帧的编码方案为第一编码算法时,可以设置当前图像帧的帧类型码为0;而当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,可以设置当前图像帧的帧类型码为1。设置不同的帧类型码表征不同的编码方案,有利于后续解码过程中,快速通过帧类型码确定图像帧的编码方式,进而确定对应的解码方式,从另一方面提升视频数据传输处理效率。
[0113]
同时,采用第二编码算法对差异值进行编码,具体实施过程可以为,假设每次比较8字节,比较完偏移4字节继续比较,用offset表示偏移量,用v1表示前一帧的8字节数据值,v2表示后一帧的8字节数据值,当v1不等于v2时,则将[offset,v1-v2]这一数据组记录到编码后的数据中,其中offset占4个字节,v1-v2的值占8个字节,合计12个字节。与此同时,对缓存图像数据进行修改,用v2代替v1值,得到当前图像帧,这样就可以使得在比较的过程中,同时也把缓存数据进行了更新,能有效降低cpu的消耗,更新后的缓存数据可以用于下一图像帧比较时的参考。
[0114]
进一步的,根据每一图像帧的编码方案,确定每一图像帧的缓存方式,具体包括:
[0115]
在当前图像帧的编码方案为第一编码算法的情况下,判断所述第一编码算法是否为无损算法,若是,则将当前图像帧直接保存到缓存,若否,则将当前图像帧编码后的数据进行解码后再保存到缓存;
[0116]
在当前图像帧的编码方案为第二编码算法的情况下,则将当前图像帧直接保存到缓存。
[0117]
在进行编码过程中,由于涉及不断进行当前图像帧与前一图像帧的差异比较,因此需要将每次编码的图像帧进行缓存保存,以便下一帧比较时进行参考。其中,对于无损的第一编码算法以及对差异值进行编码的第二编码算法来说,其在之后的解码过程中,得到的解码后图像均与原始图像数据完全一致,并不存在差异,故将每次编码的当前图像帧直接保存进缓存即可,每次比较的均是原始图像数据;而对于有损的第一编码算法来说,其在之后的解码过程中,得到的解码后图像并不是原始图像数据,而是存在数据损失的图像,故为了保证编解码的一致性,在编码过程中,需要将经过有损编码后的当前图像帧进行解码后保存在缓存中,以便进行与下一帧的差异比较。
[0118]
实施例4
[0119]
如图5所示,本实施例提供一种自适应视频解码系统,包括:
[0120]
视频流接收模块600,用于接收实施例1中所述的视频流;
[0121]
解码模块700,用于根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一解码后的数据。
[0122]
具体的,根据在实施例1中帧类型码的设置方式,若帧类型码为0,则确定当前图像帧的编码方案为第一编码算法,按照第一编码算法的对应解码方案进行解码;若帧类型码为1,则确定当前图像帧的编码方案为对差异值进行编码的第二编码算法,按照第二编码算法的对应解码方案进行解码。
[0123]
其中,按照第二编码算法的对应解码方案进行解码的具体实施过程可以为,若编码采用的是每次以8字节比较差异,并将4个字节的偏移量offset和8个字节差异值d保存为编码后的数据,则在解码时,每次从编码后的数据中取12字节,前4个字节作为偏移量offset,后8个字节作为差异值d,根据偏移量offset从缓存前一图像帧中取8个字节v1,并做有符号运行v2=v1-d,然后将v2替换掉缓存前一图像帧中偏移量offset后的8个字节,即可计算得到解码后的当前图像帧。
[0124]
在得到每一图像帧解码后的数据后,可以根据需要送去显示或存储。
[0125]
实施例5
[0126]
本实施例提供一种电子设备,包括存储器和处理器,存储器存储有计算机程序,所述处理器执行计算机程序时实现如实施例1所述的自适应视频编码方法或如实施例2的自适应视频解码方法。
[0127]
实施例6
[0128]
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例1所述的自适应视频编码方法或如实施例2所述的自适应视频解码方法。
[0129]
显然,本发明的上述实施例仅仅是为清楚地说明本发明技术方案所作的举例,而并非是对本发明的具体实施方式的限定。凡在本发明权利要求书的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
技术特征:
1.一种自适应视频编码方法,其特征在于,包括:获取视频数据的图像帧;根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码;根据每一图像帧的编码方案,确定每一图像帧的缓存方式;每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。2.根据权利要求1所述的一种自适应视频编码方法,其特征在于,根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案,具体包括:判断当前图像帧是否为所述视频数据的第一帧图像帧,若是,则确定当前图像帧的编码方案为第一编码算法;若否,则获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,并继续判断所述差异程度是否大于或等于预设阈值,若是,则确定当前图像帧的编码方案为第一编码算法;若否,则确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法。3.根据权利要求2所述的一种自适应视频编码方法,其特征在于,根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码,具体包括:当确定当前图像帧的编码方案为第一编码算法时,采用第一编码算法对当前图像帧进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第一帧类型码;当确定当前图像帧的编码方案为对所述差异值进行编码的第二编码算法时,采用第二编码算法对所述差异值进行编码,得到当前图像帧编码后的数据,并设置当前图像帧的帧类型码为第二帧类型码。4.根据权利要求2或3所述的一种自适应视频编码方法,其特征在于,根据每一图像帧的编码方案,确定每一图像帧的缓存方式,具体包括:在当前图像帧的编码方案为第一编码算法的情况下,判断所述第一编码算法是否为无损算法,若是,则将当前图像帧直接保存到缓存,若否,则将当前图像帧编码后的数据进行解码后再保存到缓存;在当前图像帧的编码方案为第二编码算法的情况下,则将当前图像帧直接保存到缓存。5.根据权利要求4所述的一种自适应视频编码方法,其特征在于,获取当前图像帧与缓存中的前一图像帧的差异程度与差异值,具体包括:将当前图像帧与前一图像帧对应划分为若干比较区域,每个比较区域间隔若干字节,每个比较区域包含若干字节;对当前图像帧与前一图像帧的每个比较区域进行差异比较,将所有比较区域的差异字节数与当前图像帧的总字节数的比值作为当前图像帧与缓存中的前一图像帧的差异程度,将每个区域字节差异值拼接形成的数据组作为当前图像帧与缓存中的前一图像帧的差异值。6.一种自适应视频解码方法,其特征在于,包括:
接收权利要求1至5任一项所述的视频流;根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一图像帧解码后的数据。7.一种自适应视频编码系统,其特征在于,包括:数据获取模块,用于获取视频数据的图像帧;编码方案确定模块,用于根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;编码模块,用于根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,并根据每一图像帧的编码方案,设置对应的帧类型码;缓存模块,用于根据每一图像帧的编码方案,确定每一图像帧的缓存方式;视频流构成模块,用于每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。8.一种自适应视频解码系统,其特征在于,包括:视频流接收模块,用于接收权利要求1至5任一项所述的视频流;解码模块,用于根据所述视频流中的每一图像帧的帧类型码,得到每一图像帧的编码方案,并按照对应的解码方案对每一图像帧进行解码,得到每一解码后的数据。9.一种电子设备,包括存储器和处理器,存储器存储有计算机程序,其特征在于,所述处理器执行计算机程序时实现如权利要求1至5任一项所述的自适应视频编码方法或如权利要求6所述的自适应视频解码方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的自适应视频编码方法或如权利要求6所述的自适应视频解码方法。
技术总结
本发明公开了一种自适应视频编解码方法、系统、设备及介质,编码方法包括:获取视频数据的图像帧;根据每一图像帧的帧顺序以及图像帧之间的差异程度,确定每一图像帧的编码方案;根据每一图像帧的编码方案进行编码,得到每一图像帧编码后的数据,以及根据每一图像帧的编码方案,设置每一图像帧的帧类型码;根据每一图像帧的编码方案,确定每一图像帧的缓存方式;每一图像帧编码后的数据以及对应的帧类型码构成视频流,进行网络传输。本发明根据视频数据中各图像帧的帧顺序以及图像帧之间的差异程度,有针对性地确定每一图像帧的编码方案并进行编码,采用多种编码方式共同对视频数据进行处理,进而融合不同编码方式的优点,优化视频数据传输。视频数据传输。视频数据传输。
技术研发人员:
董友球 傅田
受保护的技术使用者:
威创集团股份有限公司
技术研发日:
2022.09.16
技术公布日:
2022/12/22