CN115941958A - 一种视频编码方法、装置、电子设备及存储介质 - Google Patents
一种视频编码方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115941958A CN115941958A CN202211569981.2A CN202211569981A CN115941958A CN 115941958 A CN115941958 A CN 115941958A CN 202211569981 A CN202211569981 A CN 202211569981A CN 115941958 A CN115941958 A CN 115941958A
- Authority
- CN
- China
- Prior art keywords
- image block
- code stream
- data
- component
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供了一种视频编码方法、装置、电子设备及存储介质,该方法包括:对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。通过采用上述视频编码方法、装置、电子设备及存储介质,解决了在KVM应用场景下,无法同时兼顾硬件实现难度以及压缩率的问题。
Description
技术领域
本申请涉及视频传输技术领域,具体而言,涉及一种视频编码方法、装置、电子设备及存储介质。
背景技术
视频编码技术是通过压缩技术,将原始视频格式的数据转换成另一种视频格式数据的一种技术。视频编码的目的是降低传输带宽或减小保存视频文件的硬件空间。视频编码按照编码类型有帧内编码和帧间编码两种,按照压缩率可分为浅压缩和深压缩。浅压缩的硬件实现难度低,但是压缩率也不高,压缩率为1-30倍,一般应用为4-10倍,例如JPEG、JPEG-XS、VC-2等编码标准,深压缩的硬件实现难度高,但是压缩率较高,压缩率可以达到几千倍,例如H.264、H.265等。
然而,在KVM(Keyboard Video Mouse)应用场景下,视频画面不会频繁的切换,大部分场景只有鼠标和少数区域的画面发生变化,若仍采用上述视频编码方式进行编码,会导致在KVM应用场景下,无法同时兼顾硬件实现难度以及压缩率的问题,还会造成由于生成的编码结果较长而不易传输的问题。
发明内容
有鉴于此,本申请的目的在于提供一种视频编码方法、装置、电子设备及存储介质,以解决在KVM应用场景中,无法同时兼顾硬件实现难度以及压缩率的问题,以及由于生成的编码结果较长而不易传输的问题。
第一方面,本申请实施例提供了一种视频编码方法,包括:
对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;
针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;
确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;
对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
可选地,多种编码方式包括直传方式、直接编码方式以及做差编码方式;利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流,包括:针对直传方式,获取该图像块中每个像素点的色值,直接将每个像素点的色值依次连接起来生成直传方式下的第一候选图像块码流,每一个颜色通道对应一个分量;针对直接编码方式,对该图像块中的每个像素点进行XYZ颜色空间变换,生成每个像素点对应的XYZ空间数据,XYZ空间数据包括X分量数据、Y分量数据以及Z分量数据;针对每个分量,在该分量下对该图像块内相邻像素点之间的分量数据作差生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块直接编码方式下的第二候选图像块码流;针对做差编码方式,获取目标编码帧视频图像中目标图像块的XYZ空间数据,目标编码帧视频图像是与该图像块对应的帧视频数据距离最近的已完成编码的帧数据,目标图像块是目标编码帧视频数据中与该图像块对应的图像块;将该图像块中每个像素点的XYZ空间数据分别与目标图像块中对应像素点的XYZ空间数据相减,获得该图像块中每个像素点的分量差数据;针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块做差编码方式下的第三候选图像块码流。
可选地,对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块,包括:确定图像块的图像块长度;将该帧视频图像中不同行的像素点进行逐行首尾连接,构成像素点序列;按照预设顺序,从像素点序列中依次选取与图像块长度对应数量的像素点构成一个图像块,由该帧视频图像中选取的所有像素点构成多个图像块。
可选地,方法还包括:确定第一间隔数量以及第二间隔数量,第一间隔数量用于确定单帧视频数据内禁止使用做差编码方式的图像块,第二间隔数量用于确定不同帧视频数据之间禁止使用做差编码方式的图像块;针对待编码视频数据中的每帧视频数据,按照第一间隔数量以及第二间隔数量分别选取第一禁用图像块以及第二禁用图像块;确定该图像块是否为第一禁用图像块或者第二禁用图像块;若是第一禁用图像块或者第二禁用图像块,禁止对该图像块使用做差编码方式进行编码。
可选地,在针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据之后,还包括:若该图像块内每个像素点在不同分量下的待熵编码数据全部为0,则不需要对该图像块进行编码。
可选地,对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包,包括:针对每个分量,将该分量下的目标图像块码流分成多个设定长度的码流块;按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块;将码流数据块与码流信息组合在一起生成该图像块的图像块数据包。
可选地,按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块,包括:按照预设分量顺序依次将不同分量下的码流长度组合在一起生成第一码流数据块;按照预设分量顺序依次将不同分量下对应位置的码流块组合在一起生成第二码流数据子块,将多个第二码流数据子块组合在一起生成第二码流数据块;由第一码流数据块以及第二码流数据块构成码流数据块。
第二方面,本申请实施例还提供了一种视频编码装置,所述装置包括:
图像分割模块,用于对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;
图像块编码模块,用于针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;
码流选取模块,用于确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;
数据包生成模块,用于对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的视频编码方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的视频编码方法的步骤。
本申请实施例带来了以下有益效果:
本申请实施例提供的一种视频编码方法、装置、电子设备及存储介质,能够将每帧视频图像分割为多个图像块,并利用多种编码方式分别对每个图像块进行编码,同时从多个候选图像块码流中选取码流长度最小的候选图像块码流作为目标图像块码流,利用目标图像块码流得到该图像块对应的图像块数据包,实现了根据每帧视频图像的实际情况选取最合适的编码方式进行编码的技术效果,能够缩短编码结果的长度,达到快速传输视频编码的目的,与现有技术中的视频编码方法相比,解决了无法同时兼顾硬件实现难度以及压缩率的问题,也解决了因生成的编码结果较长而不易传输的问题。同时,还由于整个编码过程中均是对单个图像块进行处理,也解决了因消耗的硬件资源较多,导致硬件实现难度大的问题。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的视频编码方法的流程图;
图2示出了本申请实施例所提供的码流数据块的示意图;
图3示出了本申请实施例所提供的视频编码装置的结构示意图;
图4示出了本申请实施例所提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
值得注意的是,在本申请提出之前,视频编码技术是通过压缩技术,将原始视频格式的数据转换成另一种视频格式数据的一种技术。视频编码的目的是降低传输带宽或减小保存视频文件的硬件空间。视频编码按照编码类型有帧内编码和帧间编码两种,按照压缩率可分为浅压缩和深压缩。浅压缩的硬件实现复杂度低,但是压缩率也不高,压缩率为1-30倍,一般应用为4-10倍,例如JPEG、JPEG-XS、VC-2等编码标准,深压缩的硬件实现复杂度高,但是压缩率较高,压缩率可以达到几千倍,例如H.264、H.265等。但是,在KVM(KeyboardVideo Mouse)应用场景下,视频画面不会频繁的切换,大部分场景只有鼠标和少数区域的画面发生变化,若仍采用上述视频编码方式进行编码,会导致在KVM应用场景下,无法同时兼顾硬件实现难度以及压缩率的问题,还会造成由于生成的编码结果较长而不易传输的问题。
基于此,本申请实施例提供了一种视频编码方法,以缩短编码结果的长度,在保证硬件易于实现的前提下提高视频编码的压缩率。
请参阅图1,图1为本申请实施例所提供的一种视频编码方法的流程图。如图1所示,本申请实施例提供的视频编码方法,包括:
步骤S101,对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块。
该步骤中,待编码视频数据可指待编码的视频图像数据。
待编码视频数据包括多个时间连续的帧视频图像,每个帧视频图像包括多个像素点,这些像素点可以构成二维点阵。
图像块可指帧视频图像中的区域块,由多个区域块共同组成帧视频图像。
在本申请实施例中,视频编码方法应用于视频编码器中,将待编码视频数据输入至视频编码器中,由视频编码器对待编码视频数据进行编码。首先,针对待编码视频数据中的每帧视频图像进行分割,将单帧视频图像分割为多个图像块,每个图像块是一个基本编码单元,将单个图像块称之为slice,单个slice为1×N大小的像素点集合,该slice内包括N个像素点,通常情况下N取256。
在一可选实施例中,对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块,包括:确定图像块的图像块长度;将该帧视频图像中不同行的像素点进行逐行首尾连接,构成像素点序列;按照预设顺序,从像素点序列中依次选取与图像块长度对应数量的像素点构成一个图像块,由该帧视频图像中选取的所有像素点构成多个图像块。
具体的,首先设定图像块的图像块长度,以上述示例为例,该图像块长度为N=256。确定图像块长度之后,可根据该长度对单帧视频图像进行分割,假设单帧视频图像为1920×1080,则单帧视频图像中每一行为1920个像素点,按照行号由小到大的顺序依次将第一行的1920个像素点与后面每一行的1920个像素点连接起来,可构成该单帧视频图像对应的像素点序列。按照从前到后的顺序,依次将像素点序列分割成多个图像块,每连续的256个像素点构成一个图像块。这样,单帧视频图像的第一行被分割为7个图像块余128个像素点,这128个像素点将与第二行中起始的128个像素点共同组成第二个图像块,依此类推,可得到多个图像块。另外,如果单帧视频图像中剩余的像素点不足256个,则将剩余的像素点作为一个图像块,并且每个图像块都有一个图像块标识,该图像块标识用于确定当前图像块在单帧视频图像中的具体位置。
步骤S102,针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流。
该步骤中,多种编码方式可指不同的视频编码方式。
候选图像块的数量与编码方式的种类相等,如果编码方式为三种,则候选图像块码流数量为三个。
在本申请实施例中,假设单帧视频图像被分割为A、B、C三个图像块,多种编码方式分别为编码方式a、编码方式b、编码方式c三种编码方式,则针对每个图像块生成对应的三个候选图像块码流,该单帧视频图像对应的三个图像块共对应九个候选图像块码流。
在一可选实施例中,多种编码方式包括直传方式、直接编码方式以及做差编码方式;利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流,包括:针对直传方式,获取该图像块中每个像素点的色值,直接将每个像素点的色值依次连接起来生成直传方式下的第一候选图像块码流,每一个颜色通道对应一个分量;针对直接编码方式,对该图像块中的每个像素点进行XYZ颜色空间变换,生成每个像素点对应的XYZ空间数据,XYZ空间数据包括X分量数据、Y分量数据以及Z分量数据;针对每个分量,在该分量下对该图像块内相邻像素点之间的分量数据作差生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块直接编码方式下的第二候选图像块码流;针对做差编码方式,获取目标编码帧视频图像中目标图像块的XYZ空间数据,目标编码帧视频图像是与该图像块对应的帧视频数据距离最近的已完成编码的帧数据,目标图像块是目标编码帧视频数据中与该图像块对应的图像块;将该图像块中每个像素点的XYZ空间数据分别与目标图像块中对应像素点的XYZ空间数据相减,获得该图像块中每个像素点的分量差数据;针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块做差编码方式下的第三候选图像块码流。
这里,直传方式可指直接将像素点的色值作为码流的编码方式。
直接编码方式为帧内编码方式,直接编码方式可指针对帧内单个图像块中每个像素点的分量值进行编码的方式。
做差编码方式为帧间编码方式,做差编码方式可指针对帧间同一位置的两个不同图像块中每个像素点的分量差值进行编码的方式。
候选图像块码流可以是第一候选图像块码流,也可以是第二候选图像块码流,还可以是第三候选图像块码流。
第一候选图像块码流可指直传方式对应的图像块码流。
第二候选图像块码流可指直接编码方式对应的图像块码流。
第三候选图像块码流可指做差编码方式对应的图像块码流。
目标编码帧视频图像可指与当前图像块所在的当前帧视频图像距离最近的已完成编码的单帧视频数据。其中,距离最近可指时间或者帧序号最近。
以存在丢帧情况为例,第2、4帧丢失时,解码端只收到了第0、1、3、5、6帧的码流,则对于第5帧来说,距离最近的是第3帧。
目标图像块可指与当前图像块位置对应的目标编码帧视频图像中的图像块。
假设,当前图像块在第5帧视频图像中的序号为3,则在与第5帧视频图像距离最近的第3帧视频图像中序号为3的图像块为目标图像块。
具体的,针对直传方式,确定图像块中每个像素点的RGB值,将每个像素点的RGB值按照像素点之间的先后顺序依次连接起来,生成该图像块对应的第一候选图像块码流。其中,每一个颜色通道对应一个分量,即R颜色通道对应第一分量、G颜色通道对应第二分量、B颜色通道对应第三分量。
针对直接编码方式,在编码前,需要将所有像素点的RGB值转换至XYZ颜色空间,得到每个像素点在XYZ颜色空间中的XYZ空间数据,其中,XYZ空间数据包括X分量数据、Y分量数据以及Z分量数据。其中,X分量为第一分量、Y分量为第二分量、Z分量为第三分量。为便于描述,图像块的XYZ空间数据记作:[(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3),...,(XN,YN,ZN)]。在编码时,将图像块内相邻像素点之间对应分量的数据相减得到直接编码方式下的待熵编码数据,即X分量相减得到第一分量待熵编码数据为[X1,X2-X1,X3-X2,…,XN-XN-1],Y分量相减得到第二分量待熵编码数据为[Y1,Y2-Y1,Y3-Y2,…,YN-YN-1],Z分量相减得到第三分量待熵编码数据为[Z1,Z2-Z1,Z3-Z2,…,ZN-ZN-1]。这样处理的好处是相邻像素点的分量数据如果相同,则对应分量的待熵编码数据为0,能够减少码流数量。然后,针对不同分量的待熵编码数据进行哥伦布编码,生成第二图像块码流。
针对做差编码方式,在编码前,同样需要将所有像素点的RGB值转换至XYZ颜色空间,得到每个像素点在XYZ颜色空间中的XYZ空间数据,XYZ空间数据包括X分量数据、Y分量数据以及Z分量数据。其中,X分量为第一分量、Y分量为第二分量、Z分量为第三分量。然后,将该图像块的XYZ空间数据与目标图像块的XYZ空间数据做差,得到分量差数据为[(dX1,dY1,dZ1),(dX2,dY2,dZ2),(dX3,dY3,dZ2),...,(dXN,dYN,dZN)]。然后,在编码时,将图像块内相邻像素点之间对应分量的分量差数据相减得到做差编码方式下的待熵编码数据,待熵编码数据包括X分量对应的第一分量待熵编码数据、Y分量对应的第二分量待熵编码数据以及Z分量对应的第三分量待熵编码数据,第一分量待熵编码数据为[dX1,dX2-dX1,dX3-dX2,…,dXN-dXN-1],第二分量待熵编码数据为[dY1,dY2-dY1,dY3-dY2,…,dYN-dYN-1],第三分量待熵编码数据为[dZ1,dZ2-dZ1,dZ3-dZ2,…,dZN-dZN-1]。最后,针对不同分量的待熵编码数据进行哥伦布编码,生成第三图像块码流。需要说明的是,针对待编码视频数据中的第一帧视频图像不能进行做差编码,因为在第一帧视频图像之前已经没有其他帧视频图像与第一帧视频图像进行做差处理。
在一可选实施例中,在针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据之后,还包括:若该图像块内每个像素点在不同分量下的待熵编码数据全部为0,则不需要对该图像块进行编码。
具体的,针对做差编码方式,若图像块中不同分量下的所有待熵编码数据均为0,表明当前帧视频图像与前一帧视频图像在当前图像块位置熵有大量相同的内容,为了减少码流数量,无需对该图像块进行重复编码,因此,在所有待熵编码均为0时,不对该图像块进行编码。
在一可选实施例中,方法还包括:确定第一间隔数量以及第二间隔数量,第一间隔数量用于确定单帧视频数据内禁止使用做差编码方式的图像块,第二间隔数量用于确定不同帧视频数据之间禁止使用做差编码方式的图像块;针对待编码视频数据中的每帧视频数据,按照第一间隔数量以及第二间隔数量分别选取第一禁用图像块以及第二禁用图像块;确定该图像块是否为第一禁用图像块或者第二禁用图像块;若是第一禁用图像块或者第二禁用图像块,禁止对该图像块使用做差编码方式进行编码。
具体的,由于做差编码可能存在不需要编码的情况发生,所以为了保证图像正确,需要在特定图像块中禁止使用做差编码方式进行编码,以保证网络丢包后数帧内图像能够恢复正确,所以需要进行数据丢包恢复处理。
这里,首先设置第一间隔数量以及第二间隔数量的取值,例如:第一间隔数量为59,第二间隔数量为56,这样即使一帧视频图像丢失,也可以在60帧后恢复正确。在对待编码视频数据进行编码时,先根据第一间隔数量以及第二间隔数量确定每帧视频图像内哪些图像块是禁止使用做差编码方式的,必须使用直传或者直接编码方式进行编码。
以上述示例为例,第一间隔数量为59,第二间隔数量为56,假设每帧视频图像被分割为100个图像块,则第一帧视频图像整帧不能使用作差编码,对于第二帧视频图像来说,由于第1图像块不能使用做差编码方式,经过第一间隔数量后,第61图像块也不能使用做差编码方式,所以第一帧视频图像中第1图像块和第61图像块不能使用做差编码方式。对于第三帧视频图像来说,经过第二间隔数量的图像块后61+56+1-100=18,所以第18图像块不能使用做差编码方式,在第三帧视频图像内经过第一间隔数量后18+59+1=78,第78图像块不能使用做差编码方式,即第三帧视频图像中第18图像块和第78图像块不能使用做差编码方式。同理,对于第四帧视频图像来说,78+56+1-100=35,35+59+1=95,所以第四帧视频图像中第35图像块和第95图像块不能使用做差编码方式。其中,不强制第1图像块一定不能使用做差编码方式,本领域技术人员可以根据实际情况选择第1图像块是否使用做差编码方式。
步骤S103,确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流。
该步骤中,在每次对图像块编码完成后,都需要记录该图像块在对应编码方式下码流长度。
在本申请实施例中,以图像块A为例,该图像块A经过直传方式得到的第一候选图像块码流a的码流长度为L1,经过直接编码方式得到的第二候选图像块码流b的码流长度为L2,经过做差编码方式得到的第三候选图像块码流c的码流长度为L3,则计算min(L1,L2,L3)的结果。假设,最小的码流长度为L3,则将做差编码方式得到的第三候选图像块码流c作为目标图像块码流。
目标图像块码流包括了第一分量码流、第二分量码流以及第三分量码流,第一分量码流是X分量或者R分量对应的码流,第二分量码流是Y分量或者G分量对应的码流,第三分量码流是Z分量或者B分量对应的码流。
获得不同分量的码流后,将各个分量码流各自拼接起来得到三段码流,该三段码流即为目标图像块码流。其中,如果码流的字节数是非8的倍数的,在高位用0补齐。
以第一分量编码后的四个数据(像素点)为例来介绍单个分量的拼接过程,这四个数据分别为code0=01101,code1=001010101,code2=0,code3=00101,将code3、code2、code1、code0四个数据拼接起来后得到:0010 1000 1010 1010 1101,补齐0后为:0000001010001010 10101101,最终输出的码流为:[10101101,10001010,00000010],即[173,138,2]。
步骤S104,对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
该步骤中,一个图像块数据包对应一个图像块,即一个图像块数据包传输1×N个像素的图像块。
图像块数据包中包括但不限于:图像块包头标记、码流长度、编码方式、图像块标识、起始及结束解码标记、码流数据块。
图像块包头标记用于在解码时确定图像块的起始位置。
码流长度用于记录各分量的码流大小,与码流数据块配合用于确定当前图像块中各个分量码流的具体数据。
编码方式用于确定使用哪种对应的解码方式来处理熵解码后的数据。
图像块标识用于确定当前图像块位于单帧视频图像中的具体位置。
起始及结束解码标记用于确定单帧视频图像是否开始解码和单帧视频图像是否完成解码。
在一可选实施例中,对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包,包括:针对每个分量,将该分量下的目标图像块码流分成多个设定长度的码流块;按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块;将码流数据块与码流信息组合在一起生成该图像块的图像块数据包。
具体的,确定目标图像块码流的三段码流后,可分别确定第一分量码流大小、第二分量码流大小、第三分量码流大小,其中,将第一分量码流分为size_x个2字节的第一码流块,将第二分量码流分为size_y个2字节的第二码流块,将第三分量码流分为size_z个2字节的第三码流块。第一码流块的具体内容记作:code_x[(size_nx-1)×2:size_nx×2-1],第二码流块的具体内容记作:code_y[(size_ny-1)×2:size_ny×2-1],第三码流块的具体内容记作:code_z[(size_nz-1)×2:size_nz×2-1]。其中,size_nx、size_ny、size_nz的取值范围分别是[1,size_x]、[1,size_y]、[1,size_z],它们的取值随着码流块的数量而改变,例如:第一个码流块时size_nx、size_ny、size_nz均取1,第二个码流块时size_nx、size_ny、size_nz均取2。
按照分量顺序,先将size_x、size_y、size_z以及各个码流块组合到一起得到码流数据块,然后将码流数据块与图像块包头标记、码流长度、编码方式、图像块标识、起始及结束解码标记组合在一起得到图像块数据包。
在一可选实施例中,按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块,包括:按照预设分量顺序依次将不同分量下的码流长度组合在一起生成第一码流数据块;按照预设分量顺序依次将不同分量下对应位置的码流块组合在一起生成第二码流数据子块,将多个第二码流数据子块组合在一起生成第二码流数据块;由第一码流数据块以及第二码流数据块构成码流数据块。
具体的,按照第一分量、第二分量以及第三分量的先后顺序,先将size_x、size_y、size_z组合在一起得到第一码流数据块,然后,同样按照第一分量、第二分量以及第三分量的先后顺序依次将不同分量下对应位置的码流块组合在一起生成第二码流数据子块,例如:将code_x[0:1]、code_y[0:1]以及code_z[0:1]组合在一起得到第一个第二码流数据子块,将code_x[2:3]、code_y[2:3]以及code_z[2:3]组合在一起得到第二个第二码流数据子块,将这样多个第二码流数据子块组合在一起生成第二码流数据块,由第一码流数据块和第二码流数据块构成码流数据块。
下面参照图2来介绍码流数据块的结构。
图2示出了本申请实施例所提供的码流数据块的示意图。
如图2所示,码流数据块分为两部分,分别为第一码流数据块210以及第二码流数据块220。其中,第一码流数据块210用于存储码流长度、第二码流数据块用于存储具体码流数据。
与现有技术中视频编码方法相比,本申请能够将每帧视频图像分割为多个图像块,并利用多种编码方式分别对每个图像块进行编码,同时从多个候选图像块码流中选取码流长度最小的候选图像块码流作为目标图像块码流,利用目标图像块码流得到该图像块对应的图像块数据包,实现了根据每帧视频图像的实际情况选取最合适的编码方式进行编码的技术效果,能够缩短编码结果的长度,达到快速传输视频编码的目的,解决了无法同时兼顾硬件实现难度以及压缩率的问题,也解决了因生成的编码结果较长而不易传输的问题。同时,还由于整个编码过程中均是对单个图像块进行处理,也解决了因消耗的硬件资源较多,导致硬件实现难度大的问题。
基于同一发明构思,本申请实施例中还提供了与视频编码方法对应的视频编码装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述视频编码方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图3,图3为本申请实施例所提供的一种视频编码装置的结构示意图。如图3中所示,所述视频编码装置300包括:
图像分割模块301,用于对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;
图像块编码模块302,用于针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;
码流选取模块303,用于确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;
数据包生成模块304,用于对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
请参阅图4,图4为本申请实施例所提供的一种电子设备的结构示意图。如图4中所示,所述电子设备400包括处理器410、存储器420和总线430。
所述存储器420存储有所述处理器410可执行的机器可读指令,当电子设备400运行时,所述处理器410与所述存储器420之间通过总线430通信,所述机器可读指令被所述处理器410执行时,可以执行如上述图1所示方法实施例中的视频编码方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1所示方法实施例中的视频编码方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种视频编码方法,其特征在于,包括:
对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;
针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;
确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;
对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
2.根据权利要求1所述的方法,其特征在于,所述多种编码方式包括直传方式、直接编码方式以及做差编码方式;
所述利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流,包括:
针对直传方式,获取该图像块中每个像素点的色值,直接将每个像素点的色值依次连接起来生成直传方式下的第一候选图像块码流,每一个颜色通道对应一个分量;
针对直接编码方式,对该图像块中的每个像素点进行XYZ颜色空间变换,生成每个像素点对应的XYZ空间数据,所述XYZ空间数据包括X分量数据、Y分量数据以及Z分量数据;
针对每个分量,在该分量下对该图像块内相邻像素点之间的分量数据作差生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块直接编码方式下的第二候选图像块码流;
针对做差编码方式,获取目标编码帧视频图像中目标图像块的XYZ空间数据,所述目标编码帧视频图像是与该图像块对应的帧视频数据距离最近的已完成编码的帧数据,所述目标图像块是目标编码帧视频数据中与该图像块对应的图像块;
将该图像块中每个像素点的XYZ空间数据分别与目标图像块中对应像素点的XYZ空间数据相减,获得该图像块中每个像素点的分量差数据;
针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据,基于不同分量下的待熵编码数据生成该图像块做差编码方式下的第三候选图像块码流。
3.根据权利要求1所述的方法,其特征在于,所述对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块,包括:
确定图像块的图像块长度;
将该帧视频图像中不同行的像素点进行逐行首尾连接,构成像素点序列;
按照预设顺序,从所述像素点序列中依次选取与所述图像块长度对应数量的像素点构成一个图像块,由该帧视频图像中选取的所有像素点构成多个图像块。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定第一间隔数量以及第二间隔数量,所述第一间隔数量用于确定单帧视频数据内禁止使用做差编码方式的图像块,所述第二间隔数量用于确定不同帧视频数据之间禁止使用做差编码方式的图像块;
针对所述待编码视频数据中的每帧视频数据,按照所述第一间隔数量以及所述第二间隔数量分别选取第一禁用图像块以及第二禁用图像块;
确定该图像块是否为第一禁用图像块或者第二禁用图像块;
若是第一禁用图像块或者第二禁用图像块,禁止对该图像块使用做差编码方式进行编码。
5.根据权利要求2所述的方法,其特征在于,在所述针对每个分量,在该分量下对该图像块内相邻像素点之间的分量差数据相减生成该分量下的待熵编码数据之后,还包括:
若该图像块内每个像素点在不同份量下的待熵编码数据全部为0,则不需要对该图像块进行编码。
6.根据权利要求2所述的方法,其特征在于,所述对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包,包括:
针对每个分量,将该分量下的目标图像块码流分成多个设定长度的码流块;
按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块;
将所述码流数据块与码流信息组合在一起生成该图像块的图像块数据包。
7.根据权利要求6所述的方法,其特征在于,所述按照预设分量顺序,将每个分量下的码流长度以及不同分量对应的多个码流块依次组合在一起生成该图像块的码流数据块,包括:
按照预设分量顺序依次将不同分量下的码流长度组合在一起生成第一码流数据块;
按照预设分量顺序依次将不同分量下对应位置的码流块组合在一起生成第二码流数据子块,将多个第二码流数据子块组合在一起生成第二码流数据块;
由所述第一码流数据块以及所述第二码流数据块构成码流数据块。
8.一种视频编码装置,其特征在于,包括:
图像分割模块,用于对待编码视频数据中每帧视频图像中的多个像素点进行分割,获得该帧视频图像对应的多个图像块;
图像块编码模块,用于针对每个图像块,利用多种编码方式分别对该图像块中的每个像素点进行编码,生成该图像块在不同编码方式下的多个候选图像块码流;
码流选取模块,用于确定该图像块对应的每个候选图像块码流的码流长度,选取码流长度最小的候选图像块码流作为该图像块的目标图像块码流;
数据包生成模块,用于对该图像块对应的目标图像块码流进行打包,生成该图像块对应的图像块数据包。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7中任一项所述的视频编码方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7中任一项所述的视频编码方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569981.2A CN115941958A (zh) | 2022-12-08 | 2022-12-08 | 一种视频编码方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211569981.2A CN115941958A (zh) | 2022-12-08 | 2022-12-08 | 一种视频编码方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115941958A true CN115941958A (zh) | 2023-04-07 |
Family
ID=86551758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211569981.2A Pending CN115941958A (zh) | 2022-12-08 | 2022-12-08 | 一种视频编码方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115941958A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117615137A (zh) * | 2024-01-15 | 2024-02-27 | 北京铁力山科技股份有限公司 | 一种视频处理方法、装置、设备以及存储介质 |
-
2022
- 2022-12-08 CN CN202211569981.2A patent/CN115941958A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117615137A (zh) * | 2024-01-15 | 2024-02-27 | 北京铁力山科技股份有限公司 | 一种视频处理方法、装置、设备以及存储介质 |
CN117615137B (zh) * | 2024-01-15 | 2024-04-09 | 北京铁力山科技股份有限公司 | 一种视频处理方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8509310B2 (en) | Method, medium, and system encoding and/or decoding an image | |
EP1813119B1 (en) | Film grain sei message insertion for bit-accurate simulation in a video system | |
CN108271024B (zh) | 图像编码、解码方法及装置 | |
JP5356812B2 (ja) | 画像系列及びロゴを含むビデオコンテンツを符号化する方法及び装置 | |
CN104581177B (zh) | 一种结合块匹配和串匹配的图像压缩方法和装置 | |
CN109005426A (zh) | 一种图片文件处理方法 | |
CN105100814B (zh) | 图像编码、解码方法及装置 | |
CN109640089B (zh) | 图像编解码方法及装置 | |
CN107483942B (zh) | 视频数据压缩码流的解码、视频数据的编码方法及装置 | |
US20130251257A1 (en) | Image encoding device and image encoding method | |
CN103124350B (zh) | 基于rle的图像压缩方法及装置 | |
KR101805550B1 (ko) | 프리젠테이션 가상화를 위한 화면 부호화 방법 및 서버 | |
WO2014050151A1 (en) | System for signaling idr and bla pictures | |
CN109040789A (zh) | 一种图片文件处理方法 | |
US20070064275A1 (en) | Apparatus and method for compressing images | |
CN115941958A (zh) | 一种视频编码方法、装置、电子设备及存储介质 | |
JP2010098352A (ja) | 画像情報符号化装置 | |
CN111131654A (zh) | 一种水印嵌入方法、装置及编解码器 | |
WO2024078066A1 (zh) | 视频解码方法、视频编码方法、装置、存储介质及设备 | |
CN113994708A (zh) | 编码方法、解码方法、装置及系统 | |
JP5080304B2 (ja) | 秘匿データが挿入された画像データの表示方式 | |
CN109413445B (zh) | 一种视频传输方法及装置 | |
CN113573076A (zh) | 视频编码的方法和装置 | |
CN116095262B (zh) | 用于处理视频信号源的移动处理设备、处理方法及系统 | |
CN117793458A (zh) | 一种视频处理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |