发明内容
本发明实施例提供一种基于关键帧的视频数据传输方法及装置,以解决现有的体积视频占用的数据较大的技术问题。
本发明实施例提供一种基于关键帧的视频数据传输方法,其包括:
获取目标视频的三维数据信息,所述三维数据信息包括三维模型的三角网格集合和顶点坐标集合;
在所述三角网格集合中确定第一基准三角网格;
根据所述第一基准三角网格的边界以及所述第一基准三角网格与其他三角网格之间的位置关系,构建所述三角网格集合中三角网格之间的拓扑关系;
基于所述目标视频中画面的纹理变化,对所述目标视频的关键帧以及非关键帧进行标记;
将所述拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串,并将编码得到的字符串存储至所述目标视频的视频流数据中,得到目标视频流数据;
当接收到针对所述目标视频触发的数据传输操作时,将所述目标视频流数据发送至数据接收端中。
在本发明所述的视频数据传输方法中,所述基于所述目标视频中画面的纹理变化,对所述目标视频的关键帧以及非关键帧进行标记,包括:
确定所述目标视频中当前画面对应的当前画面帧;
获取当前画面帧的多个画面像素点之间像素点的纹理变化值;
根据所述纹理变化值,对所述目标视频的关键帧以及非关键帧进行标记。
在本发明所述的视频数据传输方法中,所述根据所述像素点纹理变化值,对所述目标视频的关键帧以及非关键帧进行标记,包括:
计算所述纹理变化值对应的平均值,得到所述当前画面帧对应的整体纹理变化值;
检测所述整体纹理变化值是否大于第一设定值;
当检测到所述整体纹理变化值大于第一设定值时,则获取所述当前画面帧中局部画面对应的局部纹理变化值;
当检测到所述局部纹理变化值大于第二设定值时,则将所述当前画面帧确定为关键帧,并对所述关键帧进行标记;
当检测到所述整体纹理变化值小于或等于第二设定值时,则将所述当前画面帧确定为非关键帧,并对所述非关键帧进行标记。
在本发明所述的视频数据传输方法中,所述获取所述当前画面帧中局部画面对应的局部纹理变化值,包括:
在当前画面帧中选择多个像素点,并将选择的像素点确定为目标像素点;
将所述目标像素点之间的纹理变化值确定为所述当前画面帧中局部画面对应的局部纹理变化值。
在本发明所述的视频数据传输方法中,还包括:
当检测到所述整体纹理变化值大于第三设定值时,则将所述当前画面帧确定为关键帧;
当检测到所述目标像素点的纹理变化值小于或等于第三设定值时,则将所述当前画面帧确定为非关键帧。
在本发明所述的视频数据传输方法中,还包括:
若所述当前画面帧为非关键帧,且所述当前画面帧对应的连续非关键帧的数量大于第三设定值时,则将所述当前画面帧确定为关键帧。
本发明实施例还提供一种基于关键帧的视频数据传输装置,其包括:
获取模块,用于获取目标视频的三维数据信息,所述三维数据信息包括三维模型的三角网格集合和顶点坐标集合;
确定模块,用于在所述三角网格集合中确定第一基准三角网格;
构建模块,用于根据所述第一基准三角网格的边界以及所述第一基准三角网格与其他三角网格之间的位置关系,构建所述三角网格集合中三角网格之间的拓扑关系;
标记模块,用于基于所述目标视频中画面的纹理变化,对所述目标视频的关键帧以及非关键帧进行标记;
编码模块,用于将所述拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串;
存储模块,用于将编码得到的字符串存储至所述目标视频的视频流数据中,得到目标视频流数据;
发送模块,用于当接收到针对所述目标视频触发的数据传输操作时,将所述目标视频流数据发送至数据接收端中。
在本发明所述的视频数据传输装置中,所述标记模块包括:
确定单元,用于确定所述目标视频中当前画面对应的当前画面帧;
获取单元,用于获取当前画面帧的多个画面像素点之间像素点的纹理变化值;
标记单元,用于根据所述纹理变化值,对所述目标视频的关键帧以及非关键帧进行标记。
本发明实施例还提供一种存储介质,其内存储有处理器可执行指令,所述指令由一个或一个以上处理器加载,以执行上述视频数据传输方法。
相较于现有技术,本发明的基于关键帧的视频数据传输方法及视频数据传输装置根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,无需记录每个三角网格的3个顶点对应的数据量,大幅压缩的需要记录的信息,降低了体积视频占用的数据,并且,基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,最后,将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串;有效解决现有的体积视频占用的数据较大的技术问题。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本发明的基于关键帧的视频数据传输方法及传输装置可设置在任何的电子设备中,用于根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,并基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,随后将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串,进而编码得到目标视频流数据。该电子设备包括但不限于可穿戴设备、头戴设备、医疗健康平台、个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。该基于关键帧的视频数据传输装置优选为进行视频数据传输的图像处理终端或服务器,其基于第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,并基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,随后将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串,进而编码得到目标视频流数据,其通过构建三角网格集合中三角网格之间的拓扑关系、以及基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记有效降低了对体积视频占用的数据大小。
请参照图1,图1为本发明的基于关键帧的视频数据传输方法的一实施例的流程图。本实施例的基于关键帧的视频数据传输方法可使用上述的电子设备进行实施,本实施例的基于关键帧的视频数据传输方法包括:
步骤101、获取目标视频的三维数据信息;
步骤102、在三角网格集合中确定第一基准三角网格;
步骤103、根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系;
步骤104、基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记;
步骤105、将拓扑关系以及顶点坐标编码为预设格式的字符串、标记后关键帧以及标记后非关键帧编码,并将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据;
步骤106、当接收到针对目标视频触发的数据传输操作时,将目标视频流数据发送至数据接收端中。
下面详细说明本实施例的基于关键帧的视频数据传输方法。
在步骤101中,视频数据传输装置获取目标视频的三维数据信息。这里的三维数据信息包括三维模型的三角网格集合和顶点坐标集合,三维模型由一组三维空间的多边形面片组成,每组面片包括多个相互连接的多边形。多边形是指三条或三条以上的线段首尾顺次连接所组成的封闭图形。优选的,三维模型中多边形为三角形。三维模型呈现的可以是真实的物体,也可以是虚构的物体,包括但不限于三维地图、三维设备、三维人物和三维游戏等。
其中,三角网格是多边形网格的一种,多边形网格又被称为“Mesh”,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。现实世界中的物体表面直观上看都是由曲面构成的;而在计算机世界中,由于只能用离散的结构去模拟现实中连续的事物。所以现实世界中的曲面实际上在计算机里是由无数个小的多边形面片去组成的。比如下图的这些模型,在计算机渲染后由肉眼看是十分平滑的曲面,而实际上,计算机内部使用了大量的小三角形片去组成了这样的形状。这样的小面片的集合就被称作Mesh。Mesh既可以由三角形组成,也可以由其他平面形状如四边形,五边形等组成;由于平面多边形实际上也能再细分成三角形。所以,使用全由三角形组成的三角网格(Triangle Mesh)来表示物体表面也是具有一般性的。顶点是指多面体中三个或更多的面的连接处,在三维模型中,每个多边形的顶点就是该三维模型的顶点,顶点坐标为三维坐标,比如可用(x,y,z)来表示。纹理是二维空间的图片,实际上是一个二维数组,它的元素是一些颜色值。单个的颜色值被称为纹理元素或纹理像素。每一个纹理像素在纹理中都有一个唯一的地址,也就是纹理坐标,纹理坐标是二维坐标,可以用(u,v)来表示。在三维模型中存在一定数量的顶点坐标被共用的情况,即一个顶点坐标可对应多个纹理坐标。一般是在三维模型的拐点处,多个纹理坐标共用一个顶点坐标。因此在一个三维模型中,纹理坐标的数量要多于顶点坐标的数量。
在本申请中,用点坐标、法线坐标以及纹理坐标来表示三角网格的点、法线以及纹理,比如,三角网格f(66/229/66 42/231/42 62/230/62),其中66、42、62是点坐标的序号,229、231、230是法线坐标的序号,可通过查表等方式通过序号找到对应的点坐标、法线坐标以及纹理坐标。
具体的,可以将三维模型中的点坐标、法线坐标以及纹理坐标通过标准的Draco方式编码为Draco Buffer,其中,点的表示方法为“v 0.026924158697600634-0.015117654524685747-0.21916531359023442”,v为标识符,即vertex点的意思,后面三个数字分别为世界坐标系XYZ坐标,即世界坐标系的横坐标、纵坐标以及竖坐标;法线的表示方式为:“vn-0.954586757372500210.26521292533283047 0.13574323882042055”,vn为标识符,即vertex normal的意思,后面三个数字分别是XYZ三个方向的法线方向;纹理坐标的表示方法为:“vt 0.090416959507715916 0.75024171767928871”,vt为标识符,即vertextexture的意思,后面两组数字表示纹理的X,Y坐标,需要说明的是,纹理的X坐标和Y坐标对应的取值均在0-1的范围内。
在步骤102中,视频数据传输装置在三角网格集合中确定第一基准三角网格。
具体的,视频数据传输装置可以随机在三角网格集合中选择三角网格,将选择的三角网格确定为第一基准三角网格,当然,视频数据传输装置还可以根据预置策略在三角网格集合中确定第一基准三角网格,比如,在封闭图形的最外侧三角网格中随机选择三角网格,将选择的三角网格确定为第一基准三角网格,又比如,确定预置策略对应的三角网格坐标,基于确定的三角网格坐标,在三角网格集合中确定第一基准三角网格,具体根据实际情况而定,在此不再赘述。
在步骤103中,视频数据传输装置根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系。
具体请参照图2,图2为本发明的视频数据传输方法的一实施例的步骤103的流程图。该步骤103包括:
步骤201、在三角网格集合中确定与第一基准三角网格的边界关联的三角网格,得到关联三角网格;
步骤202、根据第一基准三角网格的边界与关联三角网格之间的相对位置,构建三角网格集合中三角网格之间的拓扑关系。
其中,与第一基准三角网格的边界关联的三角网格为:与第一基准三角网格邻接、关联、包含和连通的三角网格,在本发明中,可以将同一个面内的三角网格确定为第一基准三角网格的边界关联的三角网格,然后,再根据第一基准三角网格的边界与关联三角网格之间的相对位置,如关联三角网格A在第一基准三角网格的边界的右方,关联三角网格B在第一基准三角网格的边界的上方,以此构建三角网格集合中三角网格之间的拓扑关系,该拓扑关系是指满足拓扑几何学原理的各空间数据间的相互关系。
需要说明的是,为了避免后续三维模型在解码时出现较大的形变,可以基于每个三角网格与所在平面的夹角,在三角网格集合中确定与第一基准三角网格的边界关联的三角网格,具体的,可以将夹角小于设定值的三角网格确定为与第一基准三角网格的边界关联的三角网格,该设定值可以根据实际情况进行设置,在此不再赘述。
进一步的,在步骤202中,可以基于区域增长原理以及第一基准三角网格的边界与关联三角网格之间的相对位置,构建三角网格集合中三角网格之间的拓扑关系,请参阅图3,图3为本发明的基于关键帧的视频数据传输方法的一实施例的步骤202的流程图,步骤202包括。
步骤301、在第一基准三角网格的边界中选择目标边界;
步骤302、以目标边界为基准,确定与第一基准三角网格邻接的邻接三角网格;
步骤303、采用预设标识符记录第一基准三角网格与邻接三角网格之间的拓扑关系,并将邻接三角网格确定为更新后第一基准三角网格,最后,返回执行在第一基准三角网格的边界中选择目标边界的步骤,直至采用标识符记录三角网格集合中三角网格之间的拓扑关系为止。
具体的,在步骤101确定所有三角网格后,可以采用预设编码方式确定三角面之间的连接关系,即,构建三角网格集合中三角网格之间的拓扑关系,
确定好多个三角面之后,要确定三角面之间的连接关系,这里使用的预设编码方式具体如下:
初始化时,标记所有的顶点与三角形为未访问。如图4所示,当遍历到三角形X时,如果项点v还没有被访问过,则输出符号S,并标记三角形X和顶点v为己访问,然后,遍历三角形X右边的三角形,如图中的箭头所示。若顶点v已经被访问过,则根据三角形X的左边三角形以及右边三角形的被访问情况,存在四种可能:1.当三角X的右边不存在三角形时,则从三角形X的进入边的左边访问下一个三角形,此时,输出符号L,如图所示。2.当三角X的左边不存在三角形时,则从三角形X的进入边的右边访问下一个三角形,此时,输出符号R。3.如果三角形X的左边和右边均存在有三角形,则输出符号D,然后从三角形X右边的三角形开始进行遍历,此时产生了递归调用。4.如果左边和右边的三角形都已经被访问过,则输出符号E,并使递归调用返回。在这四种情形中,都要标记三角形X为已访问。
由于E结构处于结构的外侧,与其连接的只有一个三角形,因此相对连接有两个三角形的R、L、D结构反馈的连接数据较少,因此在设置通路结构时,尽量满足条件S=E>D,避免模型中的环形结构产生较多的E(以减少通路数量,增加三角面之间的连接数据),可通过设置S或D来减少环形结构的E,但是D的结构数量不能大于S。
进一步的,请参阅图5,图5为本发明的基于关键帧的视频数据传输方法中构建拓扑关系的示意图,S(Start)标识起始点,L(left)标识以进入边为参考,可进入左边的三角,R(right)表示以进入边为参考,可进入右边的三角,D(double)标识以进入边为参考,可进入两边的三角,但是选择右边进入;E表示达到最后的三角,比如右图的通路设计结构由于左图的通路设计结构。图5中的图形可以编码为{SLLLLRESLLLLE},如图5左图所示;也可以编码为{SLLLLRLDLLLLE},如图5右图所示。
在步骤S104中,视频数据传输装置将拓扑关系以及顶点坐标编码为预设格式的字符串,并将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据。具体的,可分别将拓扑关系以及顶点坐标编码为二进制字符串,根据预设映射关系,将编码得到二进制字符串转换为Base64格式的字符串。比如,对于拓扑关系为SRDRLESRRRLE的三角网格,可以将其拓扑关系转为二进制:
010000110101001001010011010100100100110001000101010000110101001001010010010100100100110001000101,坐标0.026924158697600634转二进制为0011000000101110001100000011001000110110001110010011001000110100001100010011010100111000001101100011100100110111001101100011000000110000001101100011001100110100,几何信息编码为Base64过程:比如转为二进制的“010000110101”按照图6所示的表格转为Base64后为“Q1”。
视频数据传输装置将拓扑关系以及顶点坐标编码为预设格式的字符串后,可以将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据,具体的,视频数据传输装置获取目标视频的视频流数据,并将编码得到的字符串存储至视频流数据的网络抽象层中,得到目标视频流数据。
需要说明的是,网络抽象层(Network Abstraction Layer,NAL),NAL负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输,在视频传输中,每帧数据就是一个网络抽象层单元(Network Abstraction Layer Unit,NALU),NALU用于存储编码后的视频信息和其他附加信息,即,编码得到的字符串存储至视频流数据的网络抽象层单元中,得到目标视频流数据。
需要说明的是,H.264的编码视频序列包括一系列的NALU,其中,每个NALU包含一个扩展字节序列载荷(Encapsulated Byte Sequence Payload,EBSP)、以及一组对应于视频编码的NALU头信息,即,NALU=NALU Header+EBSP。
其中,EBSP相较于原始数据字节流(A NALU contains a Raw Byte SequencePayload,a sequence of bytes containingsyntax elements,RBSP)而言,多了防止竞争的一个字节:0x03。
由于NALU的起始码为0x000001或0x00000001,同时.H264规定,当检测到0x000000时,也可以表示当前NALU的结束,因此,H.264就提出了“防止竞争”这样一种机制,当编码器编码完一个NAL时,应该检测NALU内部,是否出现“0x0000000”、“0x00000001”、“0x0000002”或“0x0000003”。当检测到它们存在时,编码器就在最后一个字节前,插入一个新的字节:0x03。可见,解码器在收到H.264的码流后,就需要检测EBSP内是否有序列:0x000003,如果有,则去掉其中的0x03,从而得到RBSP。
其中,NAL单元的信息头定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据,在解码得到RBSP数据后,可以从RBSP数据提取原始数据比特流(String Of Data Bits,SODB),由于SODB的长度不一定是8的倍数,故需要补齐,即,RBSP=SODB+RBSP尾部,由此可见,RBSP的基本结构是:在原始编码数据的后面增加了结尾比特,即,在原始编码数据的最后增加了一个bit“1”以及若干比特“0”。
进一步的,解码器可以根据H.264对应的语法去除RBSP尾部,即可得到SODB,然后,对照对应类型的NALU的句法,解析出语法元素的值,进而根据语法元素,重建图像。
需要说明的是,编码器在对视频数据进行编码时,可以在补充增强信息(Supplemental Enhancement Information,SEI)中存储辅助解码与显示的信息,比如,在SEI中存储编码器参数、视频版权信息以及内容生成过程中的剪辑事件(引发场景切换的事件),生成自定义的SEI数据,再将自定义的SEI数据嵌入至视频码流中,从而对视频码流进行标识,如增加隐形水印等等。
上述编码过程是一个画面帧的编码过程,在步骤104中,本申请为了进一步提高数据传输效率会基于画面的纹理变化来确定当前画面帧是否为关键帧(几何关键帧),这里的判断条件是;以设定间隔像素间隔获取当前画面帧的多个画面像素点的像素点纹理变化值,当像素点纹理变化值大于第一设定值的画面像素点大于第二设定值时(局部变化较大),或像素点的纹理变化值的平均值大于第三设定值时(整体变化较大),确定当前帧为关键帧;否则确定当前帧为非关键帧,即,可选的,在一些实施例中,请参阅图7,步骤104具体可以包括:
401、确定目标视频中当前画面对应的当前画面帧;
402、获取当前画面帧的多个画面像素点之间像素点的纹理变化值;
403、根据纹理变化值,对目标视频的关键帧以及非关键帧进行标记。
其中,在对目标视频的关键帧以及非关键帧进行标记之前,还可以利用ICP和Non-rigid tracking的方式统一纹理坐标,即,将纹理坐标添加至同一坐标系下,便于后续获取当前画面帧的多个画面像素点之间像素点的纹理变化值,随后,遍历目标视频的所有视频帧,根据多个画面像素点之间像素点的纹理变化值,确定相应的关键帧和非关键帧,并对目标视频的关键帧以及非关键帧进行标记。
具体的,可以检测整体纹理变化值是否大于第一设定值,当检测到整体纹理变化值大于第一设定值时,则获取当前画面帧中局部画面对应的局部纹理变化值;当检测到局部纹理变化值大于第二设定值时,则将当前画面帧确定为关键帧,并对关键帧进行标记;当检测到整体纹理变化值小于或等于第二设定值时,则将当前画面帧确定为非关键帧,并对非关键帧进行标记。
比如,第一设定值为5,第二设定值为20,当整体纹理变化值为10时,则检测当前画面帧中局部画面对应的局部纹理变化值,比如,获取由像素点A1、像素点A2、像素点A3、像素点A4以及像素点A5所构成的局部画面P对应的局部纹理变化值,即,在当前画面帧中选择多个像素点,并将选择的像素点确定为目标像素点;将目标像素点之间的纹理变化值确定为当前画面帧中局部画面对应的局部纹理变化值;当局部画面P的局部纹理变化值为30时,则将当前画面帧确定为关键帧,并对关键帧进行标记;当局部画面P的局部纹理变化值为15时,则将当前画面帧确定为非关键帧,并对非关键帧进行标记。
需要说明的是,若当前画面画面帧为关键帧时,则可以利用纹理坐标对当前画面帧进行标记,如vt 0.090416959507715916 0.75024171767928871标记该当前画面帧;若当前画面画面帧为非关键帧时,则可以在其纹理坐标中标记{vt1},从而可以对画面帧的纹理信息进行压缩简化。
还需要说明的是,当检测到整体纹理变化值大于第三设定值时,则将当前画面帧确定为关键帧;当检测到目标像素点的纹理变化值小于或等于第三设定值时,则将当前画面帧确定为非关键帧,其中,第一设定值随着连续非关键帧的数量增加而减小、第二设定值随着连续非关键帧的数量增加而减小、第三设定值随着连续非关键帧的数量增加而减小;由于画面的微小变化可能导致将当前帧判断为非关键帧,这里将所有设定值设定为动态设定值,以便对画面的微小变化也能在较短的时间内进行识别。这里见减小的程度可为定值如10%,或变值10%*n(n为连续非关键帧的数量)。
当连续的非关键帧的数量大于等于第四设定值,当前帧直接设置为关键帧,即,若当前画面帧为非关键帧,且当前画面帧对应的连续非关键帧的数量大于第四设定值时,则将当前画面帧确定为关键帧。需要说明的是,确定关键帧之后在进行几何编码过程。
在步骤105中,视频数据传输装置将拓扑关系以及顶点坐标编码为预设格式的字符串,并将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据。具体的,可分别将拓扑关系以及顶点坐标编码为二进制字符串,根据预设映射关系,将编码得到二进制字符串转换为Base64格式的字符串。比如CRSRLECRRRLE转为二进制为010000110101001001010011010100100100110001000101010000110101001001010010010100100100110001000101,坐标0.026924158697600634转二进制为0011000000101110001100000011001000110110001110010011001000110100001100010011010100111000001101100011100100110111001101100011000000110000001101100011001100110100,几何信息编码为Base64过程:比如转为二进制的“010000110101”按照图6所示的表格转为Base64后为“Q1”。
视频数据传输装置将拓扑关系以及顶点坐标编码为预设格式的字符串后,可以将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据,具体的,视频数据传输装置获取目标视频的视频流数据,并将编码得到的字符串存储至视频流数据的网络抽象层中,得到目标视频流数据。
需要说明的是,网络抽象层(Network Abstraction Layer,NAL),NAL负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输,在视频传输中,每帧数据就是一个网络抽象层单元(Network Abstraction Layer Unit,NALU),NALU用于存储编码后的视频信息和其他附加信息,即,编码得到的字符串存储至视频流数据的网络抽象层单元中,得到目标视频流数据。
需要说明的是,H.264的编码视频序列包括一系列的NALU,其中,每个NALU包含一个扩展字节序列载荷(Encapsulated Byte Sequence Payload,EBSP)、以及一组对应于视频编码的NALU头信息,即,NALU=NALU Header+EBSP。
其中,EBSP相较于原始数据字节流(A NALU contains a Raw Byte SequencePayload,a sequence of bytes containingsyntax elements,RBSP)而言,多了防止竞争的一个字节:0x03。
由于NALU的起始码为0x000001或0x00000001,同时.H264规定,当检测到0x000000时,也可以表示当前NALU的结束,因此,H.264就提出了“防止竞争”这样一种机制,当编码器编码完一个NAL时,应该检测NALU内部,是否出现“0x0000000”、“0x00000001”、“0x0000002”或“0x0000003”。当检测到它们存在时,编码器就在最后一个字节前,插入一个新的字节:0x03。可见,解码器在收到H.264的码流后,就需要检测EBSP内是否有序列:0x000003,如果有,则去掉其中的0x03,从而得到RBSP。
其中,NAL单元的信息头定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据,在解码得到RBSP数据后,可以从RBSP数据提取原始数据比特流(String Of Data Bits,SODB),由于SODB的长度不一定是8的倍数,故需要补齐,即,RBSP=SODB+RBSP尾部,由此可见,RBSP的基本结构是:在原始编码数据的后面增加了结尾比特,即,在原始编码数据的最后增加了一个bit“1”以及若干比特“0”。
进一步的,解码器可以根据H.264对应的语法去除RBSP尾部,即可得到SODB,然后,对照对应类型的NALU的句法,解析出语法元素的值,进而根据语法元素,重建图像。
需要说明的是,编码器在对视频数据进行编码时,可以在补充增强信息(Supplemental Enhancement Information,SEI)中存储辅助解码与显示的信息,比如,在SEI中存储编码器参数、视频版权信息以及内容生成过程中的剪辑事件(引发场景切换的事件),生成自定义的SEI数据,再将自定义的SEI数据嵌入至视频码流中,从而对视频码流进行标识,如增加隐形水印等等。
在步骤106中,视频数据传输装置当接收到针对目标视频触发的数据传输操作时,将目标视频流数据发送至数据接收端中,比如,用户在手机的显示屏中针对目标视频触发的视频播放操作,手机响应于该视频播放操作,针对目标视频触发的数据传输操作,视频数据传输装置将目标视频流数据发送至手机中,然后,手机接收到目标视频流数据后,对该目标视频流数据进行解码,解码过程如下:手机在NAL中获取原始字节序列载荷中的SEI信息,并从SEI信息中提取格式为Base64编码的信息,随后对Base64编码的信息进行解码,第一次解码过程是Base64到二进制的转换,比如Base64后为“Q1”转为二进制为“010000110101”,然后,再将该二进制的字符串转为字符信息:SLLLLRESLLLLE和顶点坐标,随后,在对SLLLLRESLLLLE进行解码,第二次解码过程还原压缩的三角形信息,即按照SLLLLRESLLLLE的顺序,从点坐标列表中顺序的取3个点的坐标,下一个三角形会取之前三角形的两个重复点,最终解码得到原始的几何信息,实现对目标视频的播放。
同样的,可以采用上述的方式对视频帧的信息进行编码,具体请参阅前面实施例,在此不再赘述。
这样即完成了本实施例的基于关键帧的视频数据传输方法的视频数据传输过程。
本实施例的基于关键帧的视频数据传输方法根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,无需记录每个三角网格的3个顶点对应的数据量,大幅压缩的需要记录的信息,降低了体积视频占用的数据,并且,基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,最后,将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串;有效解决现有的体积视频占用的数据较大的技术问题。
本发明还提供一种基于关键帧的视频数据传输装置,请参照图8,图8为本发明的基于关键帧的视频数据传输装置的一实施例的结构示意图,本实施例的基于关键帧的视频数据传输装置可使用上述的基于关键帧的视频数据传输方法进行实施。本实施例的视频数据传输装置60包括获取模块601、确定模块602、构建模块603、标记模块604、编码模块605、存储模块606以及发送模块607,具体如下:
获取模块601,用于获取目标视频的三维数据信息,三维数据信息包括三维模型的三角网格集合和顶点坐标集合;
确定模块602,用于在三角网格集合中确定第一基准三角网格;
构建模块603,用于根据第一基准三角网格的边界以及所述第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系;
标记模块604,用于基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记;
编码模块605,用于将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串;
存储模块606,用于将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据;
发送模块607,用于当接收到针对目标视频触发的数据传输操作时,将目标视频流数据发送至数据接收端中。
请参照图9,图9为本发明的视频数据传输装置的一实施例的构建模块的结构示意图,该标记模块604包括确定单元6041、获取单元6042以及标记单元6043。
其中,确定单元6041用于确定目标视频中当前画面对应的当前画面帧;获取单元6042用于获取当前画面帧的多个画面像素点之间像素点的纹理变化值;标记单元6043用于根据所纹理变化值,对目标视频的关键帧以及非关键帧进行标记。
标记单元6043具体用于:计算纹理变化值对应的平均值,得到当前画面帧对应的整体纹理变化值;检测整体纹理变化值是否大于第一设定值;当检测到整体纹理变化值大于第一设定值时,则获取当前画面帧中局部画面对应的局部纹理变化值;当检测到局部纹理变化值大于第二设定值时,则将当前画面帧确定为关键帧,并对关键帧进行标记;当检测到整体纹理变化值小于或等于第二设定值时,则将当前画面帧确定为非关键帧,并对非关键帧进行标记
进一步的,标记单元6043具体还用于:在当前画面帧中选择多个像素点,并将选择的像素点确定为目标像素点;将目标像素点之间的纹理变化值确定为当前画面帧中局部画面对应的局部纹理变化值。
标记单元6043具体还用于:当检测到整体纹理变化值大于第三设定值时,则将当前画面帧确定为关键帧;当检测到目标像素点的纹理变化值小于或等于第三设定值时,则将当前画面帧确定为非关键帧。
标记单元6043具体还用于:若当前画面帧为非关键帧,且当前画面帧对应的连续非关键帧的数量大于第三设定值时,则将当前画面帧确定为关键帧。
进一步的,编码模块605具体可以用于分别将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码编码为二进制字符串;根据预设映射关系,将编码得到二进制字符串转换为Base64格式的字符串。存储模块606具体可以用于获取目标视频的视频流数据,并将编码得到的字符串存储至视频流数据的网络抽象层中,得到目标视频流数据。
这样即完成了本实施例的视频数据传输装置60的视频数据传输过程。
本实施例的基于关键帧的视频数据传输装置的具体工作原理与上述基于关键帧的视频数据传输方法的实施例中的描述相同或相似,具体请参见上述视频数据传输方法的实施例中的详细描述。
本实施例的基于关键帧的视频数据传输装置基于第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,并且,基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,最后,将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串,进而得到目标视频流数据,其通过构建三角网格集合中三角网格之间的拓扑关系以及对视频帧进行编码有效降低了对体积视频占用的数据大小。
下面通过一具体实施例说明本发明的基于关键帧的视频数据传输方法的具体工作原理。请参照图10,图10为本发明的基于关键帧的视频数据传输方法及视频数据传输装置的具体实施例的流程示意图。
本实施例的基于关键帧的视频数据传输装置设置在数据传输终端(以下简称终端)中,该数据传输终端进行视频数据传输的流程包括:
步骤901、终端获取目标视频的三维数据信息。
步骤902、终端在三角网格集合中确定第一基准三角网格;
步骤903、终端在三角网格集合中确定与第一基准三角网格的边界关联的三角网格,得到关联三角网格;
步骤904、终端根据第一基准三角网格的边界与关联三角网格之间的相对位置,构建三角网格集合中三角网格之间的拓扑关系;
步骤905、终端基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记;
步骤906、终端将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串,并将编码得到的字符串存储至目标视频的视频流数据中,得到目标视频流数据;
步骤907、终端当接收到针对目标视频触发的数据传输操作时,将目标视频流数据发送至数据接收端中。
由此完成本实施例的数据传输终端进行视频数据传输的流程。
本发明的基于关键帧的视频数据传输方法及传输装置根据第一基准三角网格的边界以及第一基准三角网格与其他三角网格之间的位置关系,构建三角网格集合中三角网格之间的拓扑关系,无需记录每个三角网格的3个顶点对应的数据量,大幅压缩的需要记录的信息,降低了体积视频占用的数据,并且,基于目标视频中画面的纹理变化,对目标视频的关键帧以及非关键帧进行标记,最后,将拓扑关系、顶点坐标编码、标记后关键帧以及标记后非关键帧编码为预设格式的字符串;有效解决现有的体积视频占用的数据较大的技术问题。
如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
图11和随后的讨论提供了对实现本发明所述的视频数据传输装置所在的电子设备的工作环境的简短、概括的描述。图11的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例电子设备1012包括但不限于可穿戴设备、头戴设备、医疗健康平台、个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
尽管没有要求,但是在“计算机可读指令”被一个或多个电子设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
图11图示了包括本发明的视频数据传输装置中的一个或多个实施例的电子设备1012的实例。在一种配置中,电子设备1012包括至少一个处理单元1016和存储器1018。根据电子设备的确切配置和类型,存储器1018可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图11中由虚线1014图示。
在其他实施例中,电子设备1012可以包括附加特征和/或功能。例如,设备1012还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图11中由存储装置1020图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置1020中。存储装置1020还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器1018中由例如处理单元1016执行。
本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器1018和存储装置1020是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被电子设备1012访问的任何其他介质。任意这样的计算机存储介质可以是电子设备1012的一部分。
电子设备1012还可以包括允许电子设备1012与其他设备通信的通信连接1026。通信连接1026可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将电子设备1012连接到其他电子设备的其他接口。通信连接1026可以包括有线连接或无线连接。通信连接1026可以发射和/或接收通信媒体。
术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
电子设备1012可以包括输入设备1024,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备1012中也可以包括输出设备1022,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备1024和输出设备1022可以经由有线连接、无线连接或其任意组合连接到电子设备1012。在一个实施例中,来自另一个电子设备的输入设备或输出设备可以被用作电子设备1012的输入设备1024或输出设备1022。
电子设备1012的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE13104)、光学总线结构等等。在另一个实施例中,电子设备1012的组件可以通过网络互连。例如,存储器1018可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络1028访问的电子设备1030可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。电子设备1012可以访问电子设备1030并且下载计算机可读指令的一部分或所有以供执行。可替代地,电子设备1012可以按需要下载多条计算机可读指令,或者一些指令可以在电子设备1012处执行并且一些指令可以在电子设备1030处执行。
本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被电子设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
综上所述,虽然本发明已以实施例揭露如上,实施例前的序号仅为描述方便而使用,对本发明各实施例的顺序不造成限制。并且,上述实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。