视频数据解码方法、编码方法以及相关设备与流程

文档序号:12498293阅读:240来源:国知局
视频数据解码方法、编码方法以及相关设备与流程

本发明涉及视频编解码技术领域,尤其涉及视频数据解码方法、编码方法以及相关设备。



背景技术:

在一些监控视频中,通常会有大量的静止或小运动的区域,对于这些区域的当前视频图像,很容易在之前甚至很久之前处理过的帧里面找到匹配的参考图像。因此,在编码器对这些监控视频进行编码时,应当尽量多使用帧间编码帧,以减少对帧内编码帧的使用,从而可以大大降低码率以提高视频编码效率。其中,编码器所编码得到的帧间编码帧可以包括P帧和B帧,即P帧和B帧均是基于帧间压缩算法生成的,P帧具体为前向预测编码帧,B帧具体为双向预测内插编码帧;其中,编码器所编码得到的帧内编码帧可以包括I帧,I帧是基于帧内压缩算法生成的,I帧具体为完整编码的帧。

另一方面,随机接入是对于编码后的视频码流的一个重要需求。目前的随机接入方法是:先由编码器将视频码流中的I帧设置为随机接入点,并将携带随机接入点的视频码流发送到解码器,若解码器检测到要从所接收到的视频码流中的目标帧(该目标帧可以为视频码流中的任意一个数据帧)的位置开始播放视频,则解码器可以在视频码流中沿着与解码顺序相反的方向搜索处于目标帧之前且离目标帧最近的随机接入点(即I帧),从该最近的随机接入点开始按照解码顺序逐一解码数据帧,直到解码完目标帧,则解码器可以将解码后的目标帧发送到播放器以进行播放。由此可见,若视频码流中的I帧数量比较少,则可能导致该最近的随机接入点到目标帧之间的帧间编码帧比较多,即解码器需要花费较多的时间才能解码出目标帧,从而降低了随机接入的访问效率。

现有技术提供了一种提高随机接入的访问效率的方法,通过在视频码流中增加I帧数量来提高随机接入的访问效率,但是由于I帧数量较多,此时又会降低视频编码效率。



技术实现要素:

本发明实施例提供视频数据解码方法、编码方法以及相关设备,可以在提高视频编码效率的同时,提高随机接入的访问效率。

本发明第一方面提供一种视频数据解码方法,包括:

确定视频编码数据中的起始播放帧,并从起始播放帧开始沿着与视频编码数据的解码顺序相反的方向,搜索距离起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点;

当目标随机接入点的随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据目标随机接入点所参考的帧内随机接入点,对目标随机接入点进行解码;帧内随机接入点是视频编码数据中的随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;

从解码后的目标随机接入点开始沿着与解码顺序相同的方向逐一解码数据帧,直到解码完起始播放帧。

其中,帧间编码帧可以为B帧或P帧,帧内编码帧可以为I帧。例如,在搜索出基于P帧或B帧的目标随机接入点之后,可以从目标随机接入点的位置开始沿着与视频编码数据的解码顺序相反的方向逐一检测并解码数据帧的NALU头信息,通过NALU头信息中的nal_unit_type的数值搜索出距离目标随机接入点最近的基于I帧的随机接入点(该基于I帧的随机接入点为目标随机接入点的参考帧),并解码所搜索出的基于I帧的随机接入点,进而直接解码目标随机接入点,并从目标随机接入点开始,按照解码顺序逐一解码后面的帧间编码帧,直到解码出起始播放帧,即可开始播放起始播放帧对应的图像数据。由于不仅将帧内编码帧作为随机接入点,还可以将部分帧间编码帧也作为随机接入点,所以可以在不增加帧内编码帧的前提下,增加随机接入点的数量,从而可以在提高视频编码效率的同时,提高随机接入的访问效率。

在第一种可能的实施方式中,确定视频编码数据中的起始播放帧,并从起始播放帧开始沿着与视频编码数据的解码顺序相反的方向,搜索距离起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点,包括:

确定起始播放帧在所属视频编码数据中的第一位置;

从第一位置开始沿着与视频编码数据的解码顺序相反的方向逐一检测数据帧的NALU头信息;NALU头信息包括数据帧的帧类型;

当检测到NALU头信息中的数据帧的帧类型为随机接入点类型时,将当前检测出的为随机接入点类型的数据帧确定为目标随机接入点;

NALU头信息中的随机接入点类型为:预设的基于帧间编码帧的第一随机接入点类型或基于帧内编码帧的第二随机接入点类型。

通过在NALU头信息中预设基于帧间编码帧的第一随机接入点类型,可以使得P帧或B帧也可以当做随机接入点使用,进而可以提高随机接入点的数量,以提高随机接入的访问效率。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,获取起始播放帧在所属视频编码数据中的第一位置,具体包括:

获取对视频编码数据的播放操作指令,并根据播放操作指令所携带的起始播放时间信息在视频编码数据中查找处于起始播放位置的数据帧以作为起始播放帧,并将起始播放位置确定为起始播放帧在视频编码数据中的第一位置。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,根据目标随机接入点所参考的帧内随机接入点,对目标随机接入点进行解码,包括:

确定目标随机接入点在视频编码数据中的第二位置,并从目标随机接入点对应的NALU头信息中获取用于指示目标随机接入点所需参考的帧内随机接入点数量的预设参考数量;

根据预设参考数量从第二位置开始沿着与解码顺序相反的方向逐一查找目标随机接入点所需参考的帧内随机接入点;所查找出的目标随机接入点所需参考的帧内随机接入点的数量为预设参考数量;

对所查找出的目标随机接入点所需参考的帧内随机接入点进行解码以得到解码后的帧内随机接入点;

根据解码后的帧内随机接入点对目标随机接入点进行解码。

其中,查找预设参考数量的帧内随机接入点的过程可以为:从第二位置开始沿着与视频编码数据的解码顺序相反的方向逐一检测并解码数据帧的NALU头信息,通过NALU头信息中的nal_unit_type的数值搜索出预设参考数量的基于I帧的随机接入点。例如,若预设参考数量为1,则在目标随机接入点之前搜索距离目标随机接入点最近的帧内随机接入点;若预设参考数量为2,则在目标随机接入点之前搜索距离目标随机接入点最近和第二近的帧内随机接入点。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,若目标随机接入点的解码规则与P帧解码规则相同,则预设参考数量为至少一个;

若目标随机接入点的解码规则与B帧解码规则相同,则预设参考数量为至少两个。

其中,若NALU头信息中没有指明预设参考数量,则可以默认基于P帧的目标随机接入点所对应的预设参考数量为1,且可以默认基于B帧的目标随机接入点所对应的预设参考数量为2。

本发明第二方面提供一种视频数据编码方法,包括:

对原始数据进行编码,得到视频编码数据;视频编码数据包括多个帧间编码帧和多个帧内编码帧;

在视频编码数据中的多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;

将视频编码数据中的多个帧内编码帧中各帧内编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧内编码帧的第二随机接入点类型。

通过在视频编码过程中,设置NALU头信息中的nal_unit_type的值,可以将某些P帧或B帧设置为基于帧间编码帧的随机接入点,使得在解码视频编码数据时,可以提供更多的随机接入点,以提高随机接入的访问效率。

在第一种可能的实现方式中,在视频编码数据中的多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,具体包括:

将视频编码数据中的第一个帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,并从第一个帧间编码帧开始每间隔预设数量的帧,选择一个帧间编码帧,以将所选择的帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型。

结合第二方面,在第二种可能的实现方式中,在视频编码数据中的多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,具体包括:

根据预设的比例数值在视频编码数据中的多个帧间编码帧中随机选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;所选择出的帧间编码帧的数量与视频编码数据中的帧间编码帧的总数量的比值等于预设的比例数值。

结合第二方面,在第三种可能的实现方式中,还包括:

在各帧间随机接入点分别对应的NALU头信息中添加用于指示帧间随机接入点所需参考的帧内随机接入点数量的预设参考数量。

本发明第三方面提供了一种视频数据解码装置,该视频数据解码装置具有实现上述第一方面的方法实际中视频数据解码装置行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,视频数据解码装置的结构中包括解码器,解码器被配置为支持视频数据解码装置执行上述第一方面的方法中相应的功能。视频数据解码装置还可以包括存储器,存储器用于与解码器耦合,其保存视频数据解码装置必要的程序指令和数据。

本发明第四方面提供了一种视频数据编码装置,该视频数据编码装置具有实现上述第二方面的方法实际中视频数据编码装置行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,视频数据编码装置的结构中包括编码器,编码器被配置为支持视频数据编码装置执行上述第二方面的方法中相应的功能。视频数据编码装置还可以包括存储器,存储器用于与编码器耦合,其保存视频数据编码装置必要的程序指令和数据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种视频数据处理方法的流程示意图;

图2是本发明实施例提供的另一种视频数据处理方法的流程示意图;

图3是本发明实施例提供的一种视频编码数据的结构示意图;

图4是本发明实施例提供的一种视频数据编码装置的结构示意图;

图5是本发明实施例提供的一种视频数据解码装置的结构示意图;

图6是本发明实施例提供的一种确定搜索模块的结构示意图;

图7是本发明实施例提供的一种第一解码模块的结构示意图;

图8是本发明实施例提供的另一种视频数据编码装置的结构示意图;

图9是本发明实施例提供的另一种视频数据解码装置的结构示意图。

具体实施方式

下面结合附图对本发明的实施例进行描述。

请参见图1,是本发明实施例提供的一种视频数据编码方法的流程示意图,所述方法具体描述视频编码的过程,所述方法可以包括:

S101,对原始数据进行编码,得到视频编码数据;所述视频编码数据包括多个帧间编码帧和多个帧内编码帧;

具体的,视频发送端可以包括编码器,通过所述编码器可以对采集到的原始视频数据进行编码,以得到视频编码数据。例如,所述视频发送端可以为视频监控器,视频监控器通过摄像头采集图像数据(即原始视频数据),视频监控器还可以通过编码器对采集到的图像数据进行编码以生成视频编码数据,所述视频编码数据可以包括多个帧内编码帧和多个帧间编码帧,如所述视频编码数据有100个数据帧,其中,2个数据帧为所述帧内编码帧,98个数据帧为帧间编码帧。所述帧间编码帧可以为B帧或P帧,所述帧内编码帧可以为I帧,I帧可以为每个GOP(Group of Pictures,画面组)的第一个帧。

S102,在所述视频编码数据中的所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU(Network Abstraction Layer-unit,网络抽象层单元)头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;

具体的,在编码得到帧间编码帧后,所述视频发送端可以进一步在所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,以下将帧类型为第一随机接入点类型的帧间编码帧称为帧间随机接入点。其中,各帧间随机接入点的参考帧都为I帧。

其中,编码器将选择出的至少一个帧间编码帧设置为帧间随机接入点的过程具体可以为:将所述视频编码数据中的第一个帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,并从所述第一个帧间编码帧开始每间隔预设数量的帧,选择一个帧间编码帧,以将所选择的帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为所述基于帧间编码帧的第一随机接入点类型。其中,在S101步骤中,所述编码器即可从第一个帧间编码帧开始每间隔所述预设数量的帧,就编码一个参考帧为I帧的帧间编码帧,当然也可以在此基础上编码更多的参考帧为I帧的帧间编码帧,以保证后续所设置的帧间随机接入点的参考帧都为I帧。例如,在两个I帧之间,每间隔20个数据帧,便选择其中一个帧间编码帧以作为帧间随机接入点

或者,所述编码器将选择出的至少一个帧间编码帧设置为帧间随机接入点的过程具体可以为:根据预设的比例数值在所述视频编码数据中的所述多个帧间编码帧中随机选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;所选择出的帧间编码帧的数量与所述视频编码数据中的帧间编码帧的总数量的比值等于所述预设的比例数值。例如,若有102个数据帧,其中2个数据帧为I帧(也为基于I帧的随机接入点),且预设的比例数值为20%(即说明100个帧间编码帧中需要有20个帧间随机接入点),则所述编码器可以在剩余的100个帧间编码帧中随机选择出20个帧,以作为帧间随机接入点(即基于P帧的随机接入点或基于B帧的随机接入点),每相邻两个帧间随机接入点之间的帧间编码帧的数量可以不同。

进一步的,所述编码器将NALU头信息中的数据帧的帧类型设置为所述基于帧间编码帧的第一随机接入点类型的具体过程可以为:所述编码器可以将所选择出的帧间编码帧对应的NALU头信息中的nal_unit_type的值设置为保留数值范围内的数值(如14-18),或设置为未指定数值范围内的数值(如24-31),进而将所设置的数值对应的帧类型确定为基于帧间编码帧的第一随机接入点类型。

其中,对于未被设置为帧间随机接入点的帧间编码帧,依然将所对应的NALU头信息中的nal_unit_type的值设置为P帧类型或B帧类型。

可选的,所述视频发送端还可以进一步在所述各帧间随机接入点分别对应的NALU头信息中添加用于指示所述帧间随机接入点所需参考的帧内随机接入点数量的预设参考数量。所述预设参考数量为帧间随机接入点所参考的基于I帧的随机接入点的数量。例如,若S101中是以一个I帧作为参考帧对某帧间编码帧进行编码,则在将该帧间编码帧设置为帧间随机接入点的时候可以同时设置所对应的预设参考数据为1;若S101中是以2个I帧作为参考帧对某帧间编码帧进行编码,则在将该帧间编码帧设置为帧间随机接入点的时候可以同时设置所对应的预设参考数据为2。进一步的,若将某个P帧设置为帧间随机接入点,则该基于P帧的帧间随机接入点对应的预设参考数量可以为至少一个;若将某个B帧设置为帧间随机接入点,则该基于B帧的帧间随机接入点对应的预设参考数量可以为至少两个。由于考虑到若帧间编码帧与所参考的I帧之间存在图像重合的情况,且为了后续可以解码出更准确的帧间编码帧,所以可以通过参考更多的I帧来编码帧间编码帧。

帧间随机接入点对应的NALU头信息可以如下表1所示:

表1

其中,表1中的If(nal_unit_type==PRAP||nal_unit_type==BRAP)语句是用来表示该帧是基于P帧的随机接入点还是基于B帧的随机接入点(统称为帧间随机接入点),“PRAP”字段是用于表示基于P帧的随机接入点类型所对应的数值,“BRAP”字段是用于表示基于B帧的随机接入点类型所对应的数值。refer_num是NALU头信息中的新语法元素,且refer_num的数值可以表示所述预设参考数量。可选的,也可以无需设置refer_num,而是通过使用PRAP_1(表示所述预设参考数量为1)或PRAP_2(表示所述预设参考数量为2)或PRAP_3(表示所述预设参考数量为3)来替换If(nal_unit_type==PRAP||nal_unit_type==BRAP)语句中的“PRAP”字段。或者,在无需设置refer_num时,可以默认基于P帧的随机接入点对应的预设参考数量为1,且可以默认基于B帧的随机接入点对应的预设参考数量为2。可选的,也可以在所述NALU头信息中不设置If(nal_unit_type==PRAP||nal_unit_type==BRAP)语句,即可以直接通过检测nal_unit_type的值以确定对应帧是否为帧内随机接入点(即所述基于I帧的随机接入点)还是帧间随机接入点。

S103,将所述视频编码数据中的所述多个帧内编码帧中各帧内编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧内编码帧的第二随机接入点类型;

具体的,所述编码器可以在编码得到帧内编码帧后,进一步将各帧内编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧内编码帧的第二随机接入点类型。例如,将某I帧的NALU头信息中的nal_unit_type的值设置为5,则表明该I帧的帧类型为基于I帧的第二随机接入点类型,即该I帧为IDR(Instantaneous Decoding Refresh,即时解码刷新)帧。其中,为基于I帧的第二随机接入点类型的数据帧即为基于I帧的随机接入点,所述基于I帧的随机接入点可以包括IDR、BLA(Broken Link Access)、CRA(Clean Random Access)帧,所述基于I帧的随机接入点也可以包括与IDR、BLA、CRA帧的特性都不同的其他基于I帧的随机接入点。

可选的,所述编码器可以进一步通过有线网络或无线网络将携带所述帧间随机接入点和所述帧内随机接入点的视频编码数据发送到视频接收端,所述视频接收端可以为监控室中的电脑设备,且所述视频接收端包括解码器。

进一步的,请一并参见图2,是本发明实施例提供的一种视频数据解码方法的流程示意图,所述方法具体描述视频解码的过程,所述方法可以包括:

S201,确定视频编码数据中的起始播放帧,并从所述起始播放帧开始沿着与所述视频编码数据的解码顺序相反的方向,搜索距离所述起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点;

具体的,在上述图1对应实施例中的S103步骤之后,视频接收端可以接收所述编码器发送的视频编码数据,此时,当用户选择从所述视频编码数据中的某个数据帧的位置开始播放视频(如点击到所述视频编码数据中的该数据帧的位置)时,所述视频接收端中的解码器可以将该被选择到的数据帧确定为起始播放帧。所述视频接收端可以进一步将所述起始播放帧在所述视频编码数据中的位置确定为第一位置,并从所述第一位置开始沿着与所述视频编码数据的解码顺序相反的方向逐一检测数据帧的NALU头信息;所述NALU头信息包括数据帧的帧类型;检测所述NALU头信息的具体过程可以为:解码所述NALU头信息,并从解码后的NALU头信息中提取nal_unit_type的数值,并分析nal_unit_type的数值所对应的帧类型。当检测到所述NALU头信息中的数据帧的帧类型为随机接入点类型时,将当前检测出的为所述随机接入点类型的数据帧确定为目标随机接入点,即搜索出了距离所述起始播放帧最近且为随机接入点类型的数据帧。其中,所述NALU头信息中的所述随机接入点类型为:预设的基于帧间编码帧的第一随机接入点类型或基于帧内编码帧的第二随机接入点类型。

其中,获取所述第一位置的具体过程可以为:获取对视频编码数据的播放操作指令,并根据所述播放操作指令所携带的起始播放时间信息在所述视频编码数据中查找处于起始播放位置的数据帧,以作为起始播放帧,并将所述起始播放位置确定为所述起始播放帧在所述视频编码数据中的第一位置。例如,若用户将所述视频编码数据的播放进度条拉至3分50.12秒,则可以将3分50.12秒对应的数据帧确定为起始播放帧,并将3分50.12秒记录为所述起始播放帧对应的第一位置,或将所述起始播放帧与第一个数据帧之间的数据帧的数量确定为所述起始播放帧对应的第一位置。

S202,当所述目标随机接入点的所述随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据所述目标随机接入点所参考的帧内随机接入点,对所述目标随机接入点进行解码;

具体的,当所述目标随机接入点的所述随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,即所述目标随机接入点为基于P帧的随机接入点或基于B帧的随机接入点,此时将记录所述目标随机接入点在所述视频编码数据中的第二位置(如所述第二位置可以为所述目标随机接入点所对应的时间信息),并从所述目标随机接入点对应的NALU头信息中获取用于指示所述目标随机接入点所需参考的帧内随机接入点数量的预设参考数量。所述解码器进一步根据所述预设参考数量从所述第二位置开始沿着与所述解码顺序相反的方向逐一查找所述目标随机接入点所需参考的帧内随机接入点;所查找出的所述目标随机接入点所需参考的帧内随机接入点的数量为所述预设参考数量;所述帧内随机接入点是所述视频编码数据中的所述随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧。查找所述预设参考数量的帧内随机接入点的过程可以为:继续从所述第二位置开始沿着与所述视频编码数据的解码顺序相反的方向逐一检测并解码数据帧的NALU头信息(此过程无需解码数据帧以及对应的帧头信息),通过NALU头信息中的nal_unit_type的数值搜索出所述预设参考数量的基于I帧的随机接入点。例如,若所述预设参考数量为1,则在所述目标随机接入点之前搜索距离所述目标随机接入点最近的帧内随机接入点;若所述预设参考数量为2,则在所述目标随机接入点之前搜索距离所述目标随机接入点最近和第二近的帧内随机接入点。

所述解码器可以进一步对查找出的所述预设参考数量的帧内随机接入点进行解码,由于所述帧内随机接入点均为基于I帧的随机接入点,所以可以直接对所查找出的所述目标随机接入点所需参考的帧内随机接入点进行完全解码,并将解码后的帧内随机接入点缓存为第一参考帧;再并根据所述第一参考帧对所述第二位置上的所述目标随机接入点进行解码。若所述目标随机接入点是基于P帧的随机接入点,则按照P帧的解码规则对所述目标随机接入点进行解码;若所述目标随机接入点是基于B帧的随机接入点,则按照B帧的解码规则对所述目标随机接入点进行解码。其中,P帧的解码规则是指HEVC(High Efficiency Video Coding,视频压缩标准)标准中对P帧中的视频数据进行解码的规则,B帧的解码规则是指HEVC标准中对B帧中的视频数据进行解码的规则,即通过P帧(或B帧)的解码规则对P帧(或B帧)解码后可以得到P帧(或B帧)对应的图像数据。即基于P帧的随机接入点与HEVC标准中所定义的P帧的不同之处,在于分别对应的NALU头信息不同(具体为NALU头信息中的帧类型不同);基于B帧的随机接入点与HEVC标准中所定义的B帧的不同之处,也在于分别对应的NALU头信息不同(具体为NALU头信息中的帧类型不同)。

其中,若所述目标随机接入点的解码规则与P帧解码规则相同,则所述目标随机接入点对应的所述预设参考数量可以为至少一个,若未在所述NALU头信息中指明所述预设参考数量,则可以默认所述预设参考数量为1个;若所述目标随机接入点的解码规则与B帧解码规则相同,则所述目标随机接入点对应的所述预设参考数量可以为至少两个,若未在所述NALU头信息中指明所述预设参考数量,则可以默认所述预设参考数量为两个,即前向、后向各1个。

S203,从解码后的目标随机接入点开始沿着与所述解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧;

具体的,当所述解码器完成对所述目标随机接入点的解码时,所述视频接收端可以根据所述目标随机接入点到所述起始播放帧之间的各数据帧以及所述起始播放帧分别对应的第二参考帧,从所述第二位置开始沿着与所述解码顺序相同的方向逐一解码数据帧,并当解码完所述起始播放帧时,所述解码器可以将解码后的起始播放帧发送到播放器,以使播放器播放所述起始播放帧。

其中,以所述目标随机接入点到所述起始播放帧之间的一个数据帧A为例,所述数据帧A对应的所述第二参考帧可以是位于所述目标随机接入点到所述起始播放帧之间,且处于所述数据帧A之前的数据帧,例如,所述第二参考帧是所述数据帧A的上一个数据帧,即解码完所述第二参考帧后,即可根据解码后的第二参考帧解码所述数据帧A。或者,所述第二参考帧为所述第一参考帧;或者,所述第二参考帧为所述目标随机接入点。通过对所述第二参考帧的范围的设定,可以保证所述解码器能够顺利解码所述起始播放帧。

再请一并参见图3,是本发明实施例提供的一种视频编码数据的结构示意图,图3中的GOP包括I帧、P帧以及B帧,其中,在A1位置的I帧和在A5的I帧均为基于I帧的随机接入点,位于A2的B帧为基于B帧的随机接入点,位于A3的P帧为基于P帧的随机接入点,其他位置的数据帧均不为随机接入点。当起始播放帧为位于A4的P帧时,则解码器可以通过NALU头信息往前搜索一个距离位于A4的P帧最近的随机接入点,搜索到的随机接入点为位于A3的基于P帧的随机接入点,并记录A3的位置;再进一步通过NALU头信息往前搜索最近的一个基于I帧的随机接入点(假设预设参考数量为1),该最近的基于I帧的随机接入点是位于A1位置的随机接入点,因此,可以解码位于A1的随机接入点,根据解码后的位于A1的随机接入点以及A3的位置,对位于A3的基于P帧的随机接入点进行解码,之后从A3的位置开始逐一解码P帧、B帧以及位于A4的P帧,当位于A4的P帧解码完后,则解码器可以通知播放器开始播放位于A4的P帧所对应的视频画面。而现有技术的随机接入法则需要从位于A1的随机接入点逐一解码数据帧到A4位置,由此可见,本发明实施例可以省略A3到A1之间的数据帧的解码(只需解码NALU头信息即可),因此可以在不增加I帧数量的前提下提高随机接入效率。

可选的,当所述目标随机接入点的所述随机接入点类型为基于帧内编码帧的第二随机接入点类型时,可以直接解码所述目标随机接入点,并从所述目标随机接入点的位置开始按照解码顺序逐一解码数据帧,直到解码出所述起始播放帧,则开始播放所述起始播放帧对应的图像数据。

本发明实施例通过搜索位于起始播放帧之前且距离最近的为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点,可以在目标随机接入点的随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据目标随机接入点所参考的帧内随机接入点,对目标随机接入点进行解码;帧内随机接入点是视频编码数据中的随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;之后,再从解码后的目标随机接入点开始沿着与解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧。由于不仅将帧内编码帧作为随机接入点,还可以将部分帧间编码帧也作为随机接入点,所以可以在不增加帧内编码帧的前提下,增加随机接入点的数量,从而可以在提高视频编码效率的同时,提高随机接入的访问效率。

请参见图4,是本发明实施例提供的一种视频数据编码装置1的结构示意图,所述视频数据编码装置1可以包括:编码模块10、第一设置模块20、第二设置模块30、数量设置模块40;

所述编码模块10,用于对原始数据进行编码,得到视频编码数据;所述视频编码数据包括多个帧间编码帧和多个帧内编码帧;

所述第一设置模块20,用于在所述视频编码数据中的所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;

具体的,所述第一设置模块20可以具体用于将所述视频编码数据中的第一个帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,并从所述第一个帧间编码帧开始每间隔预设数量的帧,选择一个帧间编码帧,以将所选择的帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为所述基于帧间编码帧的第一随机接入点类型。

或者,所述第一设置模块20可以具体用于根据预设的比例数值在所述视频编码数据中的所述多个帧间编码帧中随机选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;所选择出的帧间编码帧的数量与所述视频编码数据中的帧间编码帧的总数量的比值等于所述预设的比例数值。

所述第二设置模块30,用于将所述视频编码数据中的所述多个帧内编码帧中各帧内编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧内编码帧的第二随机接入点类型。

所述数量设置模块40,用于在所述各帧间随机接入点分别对应的NALU头信息中添加用于指示所述帧间随机接入点所需参考的帧内随机接入点数量的预设参考数量。

所述编码模块10、所述第一设置模块20、所述第二设置模块30以及所述数量设置模块40的具体功能实现方式可以参见上述图1对应实施例中的S101-S103,这里不再进行赘述。

进一步的,请一并参见图5,是本发明实施例提供的一种视频数据解码装置2的结构示意图,所述视频数据解码装置2可以包括:确定搜索模块50、第一解码模块60、第二解码模块70;

所述确定搜索模块50,用于确定视频编码数据中的起始播放帧,并从所述起始播放帧开始沿着与所述视频编码数据的解码顺序相反的方向,搜索距离所述起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点;

所述第一解码模块60,用于当所述目标随机接入点的所述随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据所述目标随机接入点所参考的帧内随机接入点,对所述目标随机接入点进行解码;所述帧内随机接入点是所述视频编码数据中的所述随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;

所述第二解码模块70,用于从解码后的目标随机接入点开始沿着与所述解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧;

具体的,所述第二解码模块70可以具体用于根据所述目标随机接入点到所述起始播放帧之间的各数据帧以及所述起始播放帧分别对应的第二参考帧,从所述第二位置开始沿着与所述解码顺序相同的方向逐一解码数据帧,并当解码完所述起始播放帧时播放所述起始播放帧对应的图像数据;其中,所述第二参考帧为位于所述目标随机接入点到所述起始播放帧之间的数据帧;或者,所述第二参考帧为所述第一参考帧;或者,所述第二参考帧为所述目标随机接入点。以所述目标随机接入点到所述起始播放帧之间的一个数据帧A为例,所述数据帧A对应的所述第二参考帧可以是位于所述目标随机接入点到所述起始播放帧之间,且处于所述数据帧A之前的数据帧,例如,所述第二参考帧是所述数据帧A的上一个数据帧,即解码完所述第二参考帧后,即可根据解码后的第二参考帧解码所述数据帧A。或者,所述第二参考帧为所述第一参考帧;或者,所述第二参考帧为所述目标随机接入点。通过对所述第二参考帧的范围的设定,可以保证所述视频接收端能够顺利解码所述起始播放帧。

进一步的,请一并参见图6,是本发明实施例提供的一种确定搜索模块50的结构示意图,所述确定搜索模块50可以包括:位置确定单元501、检测单元502、确定单元503;

所述位置确定单元501,用于确定起始播放帧在所属视频编码数据中的第一位置;

具体的,所述位置确定单元501可以具体用于获取对视频编码数据的播放操作指令,并根据所述播放操作指令所携带的起始播放时间信息在所述视频编码数据中查找处于起始播放位置的数据帧以作为起始播放帧,并将所述起始播放位置确定为所述起始播放帧在所述视频编码数据中的第一位置。

所述检测单元502,用于从所述第一位置开始沿着与所述视频编码数据的解码顺序相反的方向逐一检测数据帧的NALU头信息;所述NALU头信息包括数据帧的帧类型;

所述确定单元503,用于当检测到所述NALU头信息中的数据帧的帧类型为随机接入点类型时,将当前检测出的为所述随机接入点类型的数据帧确定为目标随机接入点;

所述NALU头信息中的所述随机接入点类型为:预设的基于帧间编码帧的第一随机接入点类型或基于帧内编码帧的第二随机接入点类型。

其中,所述位置确定单元501、所述检测单元502以及所述确定单元503的具体实现功能可以参见上述图2对应实施例中的S201,这里不再进行赘述。

进一步的,再请一并参见图7,是本发明实施例提供的一种第一解码模块60的结构示意图,所述第一解码模块60可以包括:确定获取单元601、参考帧查找单元602、参考解码单元603、目标解码单元604;

所述确定获取单元601,用于确定所述目标随机接入点在所述视频编码数据中的第二位置,并从所述目标随机接入点对应的NALU头信息中获取用于指示所述目标随机接入点所需参考的帧内随机接入点数量的预设参考数量;

所述参考帧查找单元602,用于根据所述预设参考数量从所述第二位置开始沿着与所述解码顺序相反的方向逐一查找所述目标随机接入点所需参考的帧内随机接入点;所查找出的所述目标随机接入点所需参考的帧内随机接入点的数量为所述预设参考数量;

所述参考解码单元603,用于对所查找出的所述目标随机接入点所需参考的帧内随机接入点进行解码以得到解码后的帧内随机接入点;

所述目标解码单元604,用于根据所述解码后的帧内随机接入点对所述目标随机接入点进行解码。

其中,所述确定获取单元601、所述参考帧查找单元602、所述参考解码单元603以及所述目标解码单元604的具体实现功能可以参见上述图2对应实施例中的S202,这里不再进行赘述。

本发明实施例通过搜索位于起始播放帧之前且距离最近的为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点,可以在目标随机接入点的随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据目标随机接入点所参考的帧内随机接入点,对目标随机接入点进行解码;帧内随机接入点是视频编码数据中的随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;之后,再从解码后的目标随机接入点开始沿着与解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧。由于不仅将帧内编码帧作为随机接入点,还可以将部分帧间编码帧也作为随机接入点,所以可以在不增加帧内编码帧的前提下,增加随机接入点的数量,从而可以在提高视频编码效率的同时,提高随机接入的访问效率。

请参见图8,是本发明实施例提供的另一种视频数据编码装置的结构示意图。如图8所示,所述视频数据编码装置1000可以包括处理器1001、通信接口1002和存储器1003(视频数据编码装置1000中的处理器1001的数量可以为一个或多个,图8中以一个处理器1001为例)。本发明的一些实施例中,处理器1001、通信接口1002和存储器1003可通过通信总线或其他方式连接,其中,图8以通过通信总线连接为例。

其中,所述通信接口1002,用于与解码器通信;

所述存储器1003用于存储程序;

所述处理器1001用于执行所述程序,以实现

对原始数据进行编码,得到视频编码数据;所述视频编码数据包括多个帧间编码帧和多个帧内编码帧;

在所述视频编码数据中的所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;

将所述视频编码数据中的所述多个帧内编码帧中各帧内编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧内编码帧的第二随机接入点类型。

其中,所述处理器1001在执行在所述视频编码数据中的所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型时,具体用于:

将所述视频编码数据中的第一个帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型,并从所述第一个帧间编码帧开始每间隔预设数量的帧,选择一个帧间编码帧,以将所选择的帧间编码帧对应的NALU头信息中的数据帧的帧类型设置为所述基于帧间编码帧的第一随机接入点类型。

其中,所述处理器1001在执行在所述视频编码数据中的所述多个帧间编码帧中选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型时,具体用于:

根据预设的比例数值在所述视频编码数据中的所述多个帧间编码帧中随机选择至少一个帧间编码帧,并将所选择的至少一个帧间编码帧中各帧间编码帧分别对应的NALU头信息中的数据帧的帧类型设置为基于帧间编码帧的第一随机接入点类型;所选择出的帧间编码帧的数量与所述视频编码数据中的帧间编码帧的总数量的比值等于所述预设的比例数值。

其中,所述处理器1001还用于:

在所述各帧间随机接入点分别对应的NALU头信息中添加用于指示所述帧间随机接入点所需参考的帧内随机接入点数量的预设参考数量。

本发明实施例通过在视频编码过程中,设置NALU头信息中的nal_unit_type的值,可以将某些P帧或B帧设置为基于帧间编码帧的随机接入点,使得在解码视频编码数据时,可以提供更多的随机接入点,以提高随机接入的访问效率。

请参见图9,是本发明实施例提供的另一种视频数据解码装置的结构示意图。如图9所示,所述视频数据解码装置2000可以包括处理器2001、通信接口2002和存储器2003(视频数据解码装置2000中的处理器2001的数量可以为一个或多个,图9中以一个处理器2001为例)。本发明的一些实施例中,处理器2001、通信接口2002和存储器2003可通过通信总线或其他方式连接,其中,图9以通过通信总线连接为例。

其中,所述通信接口2002,用于与编码器通信;

所述存储器2003用于存储程序;

所述处理器2001用于执行所述程序,以实现

确定视频编码数据中的起始播放帧,并从所述起始播放帧开始沿着与所述视频编码数据的解码顺序相反的方向,搜索距离所述起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点;

当所述目标随机接入点的所述随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据所述目标随机接入点所参考的帧内随机接入点,对所述目标随机接入点进行解码;所述帧内随机接入点是所述视频编码数据中的所述随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;

从解码后的目标随机接入点开始沿着与所述解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧。

其中,所述处理器2001在执行确定视频编码数据中的起始播放帧,并从所述起始播放帧开始沿着与所述视频编码数据的解码顺序相反的方向,搜索距离所述起始播放帧最近且为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点时,具体用于:

确定起始播放帧在所属视频编码数据中的第一位置;

从所述第一位置开始沿着与所述视频编码数据的解码顺序相反的方向逐一检测数据帧的网络抽象层单位NALU头信息;所述NALU头信息包括数据帧的帧类型;

当检测到所述NALU头信息中的数据帧的帧类型为随机接入点类型时,将当前检测出的为所述随机接入点类型的数据帧确定为目标随机接入点;

所述NALU头信息中的所述随机接入点类型为:预设的基于帧间编码帧的第一随机接入点类型或基于帧内编码帧的第二随机接入点类型。

其中,所述处理器2001在执行获取起始播放帧在所属视频编码数据中的第一位置时,具体用于:

获取对视频编码数据的播放操作指令,并根据所述播放操作指令所携带的起始播放时间信息在所述视频编码数据中查找处于起始播放位置的数据帧以作为起始播放帧,并将所述起始播放位置确定为所述起始播放帧在所述视频编码数据中的第一位置。

其中,所述处理器2001在执行根据所述目标随机接入点所参考的帧内随机接入点,对所述目标随机接入点进行解码时,具体用于:

确定所述目标随机接入点在所述视频编码数据中的第二位置,并从所述目标随机接入点对应的NALU头信息中获取用于指示所述目标随机接入点所需参考的帧内随机接入点数量的预设参考数量;

根据所述预设参考数量从所述第二位置开始沿着与所述解码顺序相反的方向逐一查找所述目标随机接入点所需参考的帧内随机接入点;所查找出的所述目标随机接入点所需参考的帧内随机接入点的数量为所述预设参考数量;

对所查找出的所述目标随机接入点所需参考的帧内随机接入点进行解码以得到解码后的帧内随机接入点;

根据所述解码后的帧内随机接入点对所述目标随机接入点进行解码。

其中,若所述目标随机接入点的解码规则与P帧解码规则相同,则所述预设参考数量为至少一个;

若所述目标随机接入点的解码规则与B帧解码规则相同,则所述预设参考数量为至少两个。

本发明实施例通过搜索位于起始播放帧之前且距离最近的为随机接入点类型的数据帧,并将搜索到的数据帧确定为目标随机接入点,可以在目标随机接入点的随机接入点类型为预设的基于帧间编码帧的第一随机接入点类型时,根据目标随机接入点所参考的帧内随机接入点,对目标随机接入点进行解码;帧内随机接入点是视频编码数据中的随机接入点类型为基于帧内编码帧的第二随机接入点类型的数据帧;之后,再从解码后的目标随机接入点开始沿着与解码顺序相同的方向逐一解码数据帧,直到解码完所述起始播放帧。由于不仅将帧内编码帧作为随机接入点,还可以将部分帧间编码帧也作为随机接入点,所以可以在不增加帧内编码帧的前提下,增加随机接入点的数量,从而可以在提高视频编码效率的同时,提高随机接入的访问效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1