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

文档序号:12498280阅读:223来源:国知局
一种视频编码方法、视频解码方法以及相关设备与流程

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



背景技术:

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

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

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



技术实现要素:

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

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

编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;多个帧间编码帧中除了虚拟随机接入帧以外的帧间编码帧均为普通帧;

为视频数据中的多个帧内编码帧和多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值;携带时序层次数值的多个帧间编码帧包括虚拟随机接入帧和普通帧;时序层次数值是指时序层次代码对应的数值;

将携带时序层次数值的视频数据发送到解码器,以使解码器在检测到对视频数据中的目标普通帧进行播放操作时,根据目标普通帧对应的时序层次数值以及处于目标普通帧的解码顺序之前且距离最近的虚拟随机接入帧对应的时序层次数值,从处于目标普通帧的解码顺序之前且距离最近的帧内编码帧开始选择跳过至少一个帧间编码帧,直到解码完目标普通帧。

由于通过编码器设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以相比于现有技术的随机接入方式可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。

在第一种可能的实施方式中,编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧,具有包括:

分别在每个画面组GOP中的多个帧间编码帧中,每间隔预设数量或每间隔随机数量的帧间编码帧,设置一个虚拟随机接入帧;

其中,将任意一个虚拟随机接入帧作为待编码虚拟随机接入帧,待编码虚拟随机接入帧的参考帧包括最近的帧内编码帧或待编码虚拟随机接入帧与最近的帧内编码帧之间的虚拟随机接入帧;最近的帧内编码帧是处于待编码虚拟随机接入帧的编码顺序之前且距离待编码虚拟随机接入帧最近的帧内编码帧;

其中,将任意一个普通帧作为待编码普通帧,待编码普通帧的参考帧包括最近的虚拟随机接入帧或待编码普通帧与最近的虚拟随机接入帧之间的普通帧;最近的虚拟随机接入帧是处于待编码普通帧的编码顺序之前且距离待编码普通帧最近的虚拟随机接入帧。

例如,某个GOP中的数据帧为IPPBPPPBPP(此处为解码顺序),其中,I为I帧(即第一个数据帧),P为P帧,B为B帧,若每间隔3个数据帧设置一个虚拟随机接入帧,则可以将第2个数据帧“P帧”、第6个数据帧“P帧”以及第10个数据帧“P帧”均设置为虚拟随机接入帧,即这3个虚拟随机接入帧的参考帧可以均为第一个数据帧“I帧”,或者第6个和第10个数据帧的参考帧均可以为各自的前一个虚拟随机接入帧(如第6个数据帧的参考帧为第2个数据帧)。为非虚拟随机接入帧的其余P帧(即普通帧)的参考帧可以为该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意一个数据帧(如第5个数据帧“P帧”的参考帧为第4个数据帧“B帧”),或者为位于该普通帧前面且最近的虚拟随机接入帧。B帧(即普通帧)的参考帧可以为该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意两个数据帧,或者为位于该普通帧前面且最近的虚拟随机接入帧以及该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意一个数据帧(如第4个数据帧“B帧”的参考帧包括第2个数据帧“P帧”和第3个数据帧“P帧”)。可选的,若某个虚拟随机接入帧为B帧,那么该B帧的参考帧可以包括位于该B帧之前且距离该B帧最近的I帧、以及位于该B帧之前且距离该B帧最近的虚拟随机接入帧。

结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,为视频数据中的多个帧内编码帧和多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值,包括:

分别在每个GOP中,将各普通帧分别对应的时序层次数值均设置为第一数值,并将各帧内编码帧以及各虚拟随机接入帧分别对应的时序层次数值均设置为第二数值;第一数值大于第二数值。

这种编码方式,可以在随机播放过程中,使解码器跳过解码后的I帧与目标虚拟随机接入帧之间的所有普通帧,从而可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率

结合第一方面,或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,为视频数据中的多个帧内编码帧和多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值,包括:

分别在每个GOP中,将虚拟随机接入帧和普通帧划分为至少两个帧组;每个帧组中的第一个帧为虚拟随机接入帧,且每个帧组分别包含各自帧组内的第一个帧到下一个虚拟随机接入帧之间的所有普通帧;

在每个GOP中,将位于GOP中最前的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值,并按照时序层次数值从大到小的顺序,逐一设置各帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值,直至将位于GOP中最后的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

将每个GOP中的帧内编码帧对应的时序层次数值均设置为所在GOP中的最小时序层次数值。

这种编码方式,可以使得解码器在解码I帧后,跳过目标虚拟随机接入帧之前的所有普通帧和所有虚拟随机接入帧,从而可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。

结合第一方面,或第一方面的第一种可能的实现方式,在第四种可能的实现方式中,为视频数据中的多个帧内编码帧和多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值,包括:

分别在每个GOP中,将所有普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值;

分别在每个GOP中,将所有虚拟随机接入帧划分为至少两个虚拟随机接入帧组;每个虚拟随机接入帧组均包含至少两个虚拟随机接入帧,且每个虚拟随机接入帧组中每相邻两个虚拟随机接入帧之间存在至少一个普通帧;

在每个GOP中,将位于GOP中最前的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的第二大时序层次数值,并按照时序层次数值从大到小的顺序,逐一设置各虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值,直至将位于GOP中最后的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值。

这种编码方式,可以使解码器在随机播放C1位置上的目标普通帧时,可以跳过C1位置之前且距离C1最近的I帧与C2位置上的目标虚拟随机接入帧之间的所有普通帧,并跳过该I帧与C2位置之间的时序层次数值大于目标虚拟随机接入帧的时序层次数值的虚拟随机接入帧,从而可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。

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

解码器接收编码器发送的携带时序层次数值的视频数据;视频数据中的多个帧间编码帧包括预先由编码器所选择出的虚拟随机接入帧,多个帧间编码帧中除了虚拟随机接入帧以外的帧间编码帧均为普通帧;视频数据中的多个帧内编码帧和多个帧间编码帧中各帧间编码帧分别具有对应的时序层次数值;时序层次数值是指时序层次代码对应的数值;

当检测到对视频数据中的目标普通帧进行播放操作时,查找与目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与目标普通帧相关联的帧内编码帧;

从解码后的帧内编码帧开始解码具有目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有目标普通帧对应的时序层次数值的普通帧,直到解码完目标普通帧。

由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

在第一种可能的实现方式中,当检测到对视频数据中的目标普通帧进行播放操作时,查找与目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与目标普通帧相关联的帧内编码帧,具体包括:

当检测到对视频数据中的目标普通帧进行播放操作时,将位于目标普通帧的解码顺序之前且距离目标普通帧最近的虚拟随机接入帧,作为目标虚拟随机接入帧,并解码位于目标普通帧的解码顺序之前且距离目标普通帧最近的帧内编码帧。

结合第二方面,或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,解码后的帧内编码帧与目标虚拟随机接入帧之间的各帧间编码帧分别对应的时序层次数值大于或等于目标虚拟随机接入帧对应的时序层次数值;

目标普通帧与目标虚拟随机接入帧之间的各普通帧的时序层次数值均等于目标普通帧对应的时序层次数值。

结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,从解码后的帧内编码帧开始解码具有目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有目标普通帧对应的时序层次数值的普通帧,直到解码完目标普通帧,包括:

将解码条件参数设置为目标虚拟随机接入帧对应的时序层次数值,生成第一解码条件;第一解码条件是解码时序层次数值小于或等于目标虚拟随机接入帧对应的时序层次数值的帧;

根据第一解码条件,从解码后的帧内编码帧开始按照解码顺序解码具有目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,并跳过时序层次数值大于目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧和/或普通帧,直到解码完目标虚拟随机接入帧;

将解码条件参数重新设置为目标普通帧对应的时序层次数值,生成第二解码条件;第二解码条件是解码时序层次数值小于或等于目标普通帧对应的时序层次数值的帧;

根据第二解码条件,从解码后的目标虚拟随机接入帧开始按照解码顺序逐一解码具有目标普通帧对应的时序层次数值的普通帧,直到解码完目标普通帧。

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

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

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

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

附图说明

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

图1是本发明实施例提供的一种视频编码方法的流程示意图;

图2a是本发明实施例提供的一种视频编解码方法的流程示意图;

图2b是本发明实施例提供的一种视频数据的帧结构示意图;

图3a是本发明实施例提供的另一种视频编解码方法的流程示意图;

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

图4a是本发明实施例提供的又一种视频编解码方法的流程示意图;

图4b是本发明实施例提供的又一种视频数据的帧结构示意图;

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

图6是本发明实施例提供的一种设置模块的结构示意图;

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

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

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

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

具体实施方式

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

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

S101,编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;

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

所述编码器在将所述视频数据编码为多个帧内编码帧和多个帧间编码帧的同时,可以在所述多个帧间编码帧中选择至少一个帧间编码帧,并将选择出的所述至少一个帧间编码帧以作为至少一个虚拟随机接入帧,所述多个帧间编码帧中除了所述虚拟随机接入帧以外的帧间编码帧均为普通帧。其中,选择所述虚拟随机接入帧的具体过程可以为:所述编码器分别在每个画面组GOP中的多个帧间编码帧中,每间隔预设数量或每间隔随机数量的帧间编码帧,设置一个虚拟随机接入帧。其中,将任意一个虚拟随机接入帧作为待编码虚拟随机接入帧,所述待编码虚拟随机接入帧的参考帧包括最近的帧内编码帧或所述待编码虚拟随机接入帧与所述最近的帧内编码帧之间的虚拟随机接入帧;所述最近的帧内编码帧是处于所述待编码虚拟随机接入帧的编码顺序之前且距离所述待编码虚拟随机接入帧最近的帧内编码帧(所述视频数据中的每个虚拟随机接入帧的参考帧均可以如此设置);其中,将任意一个普通帧作为待编码普通帧,所述待编码普通帧的参考帧包括最近的虚拟随机接入帧或所述待编码普通帧与所述最近的虚拟随机接入帧之间的普通帧;所述最近的虚拟随机接入帧是处于所述待编码普通帧的编码顺序之前且距离所述待编码普通帧最近的虚拟随机接入帧(所述视频数据中的每个普通帧的参考帧均可以如此设置)。因此,所述编码器在对视频数据进行编码时,可以根据预设的虚拟随机接入帧选择规则(如每间隔随机数量的帧间编码帧设置一个虚拟随机接入帧的规则)确定哪些帧要被编码为虚拟随机接入帧、哪些帧要被编码为普通帧,进而根据虚拟随机接入帧对应的参考帧选择规则(如选择最近的I帧作为参考帧的规则)选择对应的参考帧,并根据所选择的参考帧对要被设置为虚拟随机接入帧的帧进行编码,以保证S101所选择出的帧间编码帧所对应的参考帧可以符合虚拟随机接入点对应的参考帧。

例如,某个GOP中的数据帧为IPPBPPPBPP(此处为解码顺序),其中,I为I帧(即第一个数据帧),P为P帧,B为B帧,若每间隔3个数据帧设置一个虚拟随机接入帧,则可以将第2个数据帧“P帧”、第6个数据帧“P帧”以及第10个数据帧“P帧”均设置为虚拟随机接入帧,即这3个虚拟随机接入帧的参考帧可以均为第一个数据帧“I帧”,或者第6个和第10个数据帧的参考帧均可以为各自的前一个虚拟随机接入帧(如第6个数据帧的参考帧为第2个数据帧)。为非虚拟随机接入帧的其余P帧(即普通帧)的参考帧可以为该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意一个数据帧(如第5个数据帧“P帧”的参考帧为第4个数据帧“B帧”),或者为位于该普通帧前面且最近的虚拟随机接入帧。B帧(即普通帧)的参考帧可以为该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意两个数据帧,或者为位于该普通帧前面且最近的虚拟随机接入帧以及该普通帧与位于该普通帧前面且最近的虚拟随机接入帧之间的任意一个数据帧(如第4个数据帧“B帧”的参考帧包括第2个数据帧“P帧”和第3个数据帧“P帧”)。可选的,若某个虚拟随机接入帧为B帧,那么该B帧的参考帧可以包括位于该B帧之前且距离该B帧最近的I帧、以及位于该B帧之前且距离该B帧最近的虚拟随机接入帧。

S102,为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值;携带所述时序层次数值的多个帧间编码帧包括所述虚拟随机接入帧和所述普通帧;

具体的,所述编码器可以为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值;所述时序层次数值是指时序层次(Temporal Layer)代码对应的数值。

其中,设置所述时序层次数值的具体过程可以为:分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值;所述第一数值大于所述第二数值。

或者,设置所述时序层次数值的具体过程可以为:分别在每个GOP中,将所述虚拟随机接入帧和所述普通帧划分为至少两个帧组;每个帧组中的第一个帧为所述虚拟随机接入帧,且每个帧组分别包含各自帧组内的所述第一个帧到下一个虚拟随机接入帧之间的所有普通帧;将位于最前的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值,直至将位于最后的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值。

或者,设置所述时序层次数值的具体过程可以为:分别在每个GOP中,将所有普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值;分别在每个GOP中,将所有虚拟随机接入帧划分为至少两个虚拟随机接入帧组;每个虚拟随机接入帧组均包含至少两个虚拟随机接入帧,且每个虚拟随机接入帧组中每相邻两个虚拟随机接入帧之间存在至少一个普通帧;将位于最前的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的第二大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值,直至将位于最后的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值。

S103,将携带所述时序层次数值的所述视频数据发送到解码器,以使所述解码器在检测到对所述视频数据中的目标普通帧进行播放操作时,根据所述目标普通帧对应的时序层次数值以及处于所述目标普通帧的解码顺序之前且距离最近的虚拟随机接入帧对应的时序层次数值,从处于所述目标普通帧的解码顺序之前且距离最近的帧内编码帧开始选择跳过至少一个帧间编码帧,直到解码完所述目标普通帧;

具体的,所述编码器将携带所述时序层次数值的所述视频数据发送到解码器,所述解码器可以对携带所述时序层次数值的所述视频数据进行高效的随机接入,所述解码器的具体解码过程可以参见如下图2a-图2b、图3a-图3b、图4a-图4b。

进一步的,再请参见图2a,是本发明实施例提供的一种视频编解码方法的流程示意图,图2a所示的方法为编码器与解码器的交互流程图,其中,S201-S203步骤描述的是编码器的编码过程,S204-S206步骤描述的是解码器的解码过程,所述方法可以包括:

S201,编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;

具体的,S201步骤的具体实现方式可以参见上述图1对应实施例中的S101,这里不再进行赘述。

S202,分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值;所述第一数值大于所述第二数值;

具体的,再请一并参见图2b,是本发明实施例提供的一种视频数据的帧结构示意图,图2b中的一个GOP包括I帧和P帧,图2b中数据帧从左到右的顺序为解码顺序,且每个箭头左侧的帧均为对应箭头右侧的帧的参考帧,在图2b中,可以将I帧的时序层次数值设置为0(即所述第二数值),并将为虚拟随机接入帧的P帧的时序层次数值设置为0,这些虚拟随机接入帧的参考帧均为处于这些虚拟随机接入帧之前且距离这些虚拟随机接入帧最近的I帧,同时还将为普通帧的P帧的时序层次数值均设置为1(即所述第一数值)。可选的,虚拟随机接入帧和普通帧中也可以存在B帧,为B帧的虚拟随机接入帧的参考帧可以为处于该虚拟随机接入帧之前且距离该虚拟随机接入帧最近的I帧以及最近的虚拟随机接入帧,为B帧的普通帧的参考帧可以为该普通帧的前两个帧。

S203,将携带所述时序层次数值的所述视频数据发送到解码器;

S204,解码器接收编码器发送的携带时序层次数值的视频数据;

S205,当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧;

具体的,当用户对所述视频数据进行随机播放操作,且点击到从某个普通帧开始播放时,所述解码器可以确定该普通帧为目标普通帧,即所述解码器可以检测到对所述视频数据中的目标普通帧进行随机播放操作。进一步的,所述解码器可以从所述视频数据的解码顺序的反方向搜索距离所述目标普通帧最近的虚拟随机接入帧,以作为目标虚拟随机接入帧,并从所述解码顺序的反方向搜索距离所述目标虚拟随机接入帧最近的帧内编码帧,并解码所搜索到的所述帧内编码帧。若所述目标虚拟随机接入帧的参考帧即为所搜索到的所述帧内编码帧,则所述目标虚拟随机接入帧可以根据解码后的帧内编码帧完成解码;若所述目标虚拟随机接入帧的参考帧至少包括所述目标虚拟随机接入帧与所搜索到的所述帧内编码帧之间的虚拟随机接入帧,则在解码出所搜索到的所述帧内编码帧后,可以通过以下S206步骤在解码所述目标虚拟随机接入帧之前,解码所述目标虚拟随机接入帧所参考的虚拟随机接入帧,进而可以根据解码后的参考帧完整解码所述目标虚拟随机接入帧。

S206,从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧;

具体的,所述解码器可以将解码条件参数设置为所述目标虚拟随机接入帧对应的时序层次数值(即所述第二数值),生成第一解码条件;所述第一解码条件是只解码时序层次数值小于或等于所述第二数值的帧。从图2b所示的视频数据的帧结构可知,所述解码后的帧内编码帧与所述目标虚拟随机接入帧之间的各帧间编码帧分别对应的时序层次数值大于或等于所述目标虚拟随机接入帧对应的时序层次数值,所以所述解码器可以根据所述第一解码条件,从解码后的帧内编码帧开始按照所述解码顺序解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,并跳过时序层次数值大于所述目标虚拟随机接入帧对应的时序层次数值的普通帧,直到解码完所述目标虚拟随机接入帧。所述解码器再将解码条件参数重新设置为所述目标普通帧对应的时序层次数值(即所述第一数值),生成第二解码条件;所述第二解码条件是解码时序层次数值小于或等于所述第一数值的帧;从图2b所示的视频数据的帧结构可知,所述目标普通帧与所述目标虚拟随机接入帧之间的各普通帧的时序层次数值均等于所述目标普通帧对应的时序层次数值,所以所述解码器可以根据所述第二解码条件,从解码后的目标虚拟随机接入帧开始按照所述解码顺序逐一解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧,再将解码后的目标普通帧发送给播放器以进行播放。

例如,若所述解码器可以将所述解码条件参数设置为3,那么根据HEVC(High Efficiency Video Coding,视频压缩标准)的规定所述解码器就会仅解码时序层次数值小于或等于3的数据帧,即可以跳过时序层次数值大于3的数据帧。再以上述图2b为例,在图2b中,若假设A1位置上的普通帧(P帧)是目标普通帧,则所述解码器可以从A1位置开始往左边的方向逐一解析各数据帧的NALU(Network Abstraction Layer-unit,网络抽象层单元)头信息,当根据NALU头信息检测出对应的数据帧的时序层次数值为0时,将该数据帧确定为目标虚拟随机接入帧(P帧),并记录该目标虚拟随机接入帧的位置为A2,同时所述解码器继续解析A2位置左边的数据帧的NALU头信息,直到根据NALU头信息检测出对应的数据帧为I帧时,停止解析下一个NALU头信息,并将所述解码条件参数设置为0,进而可以解码该I帧(该I帧为目标虚拟随机接入帧的参考帧),并从该I帧开始按照解码顺序逐一解码时序层次数值为0的虚拟随机接入帧,直到解码出所记录的A2位置上的目标虚拟随机接入帧时,将所述解码条件参数重新设置为1(也可以为大于1的数值),进而可以从A2位置上的目标虚拟随机接入帧开始按照解码顺序逐一解码时序层次数值为1的普通帧,直到解码出A1位置上的目标普通帧,即可开始播放目标普通帧对应的图像数据。由此可见,在随机播放A1位置上的P帧时,可以跳过左端的I帧与A2位置上的P帧之间的所有普通帧,从而可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。

本发明实施例通过在所编码的多个帧间编码帧中选择至少一个帧间编码帧以作为虚拟随机接入帧,并对多个帧内编码帧、各虚拟随机接入帧以及各普通帧分别设置对应的时序层次数值,可以在检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧,再从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

再请参见图3a,是本发明实施例提供的另一种视频编解码方法的流程示意图,图3a所示的方法为编码器与解码器的交互流程图,其中,S301-S304步骤描述的是编码器的编码过程,S305-S307步骤描述的是解码器的解码过程,所述方法可以包括:

S301,编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;

其中,S301步骤的具体实现方式可以参见上述图1对应实施例中的S101,这里不再进行赘述。

S302,分别在每个GOP中,将所述虚拟随机接入帧和所述普通帧划分为至少两个帧组;每个帧组中的第一个帧为所述虚拟随机接入帧,且每个帧组分别包含各自帧组内的第一个帧到下一个虚拟随机接入帧之间的所有普通帧;

S303,在每个GOP中,将位于GOP中最前的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值,直至将位于GOP中最后的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

S304,将每个GOP中的帧内编码帧对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

具体的,请一并参见图3b,是本发明实施例提供的另一种视频数据的帧结构示意图,在图3b中的一个GOP包括I帧、P帧以及B帧,图3b中数据帧从左到右的顺序为解码顺序,且每个箭头左侧的帧均为对应箭头右侧的帧的参考帧,在图3b中,可以将一个GOP中除了I帧以外的所有数据帧划分为7个帧组,每个帧组中的数据帧数量可以相同,也可以不相同,且每个帧组中的数据帧均为连续的数据帧;且每相邻两个帧组中,靠前的帧组中的最后一个帧为另一个帧组中的第一个帧的上一个帧。在图3b中,所述编码器可以将每个帧组中的第一个帧作为虚拟随机接入帧,并将每个帧组中除了第一个帧以外的帧作为普通帧,这些虚拟随机接入帧的参考帧均为位于这些虚拟随机接入帧之前且距离这些虚拟随机接入帧最近的I帧,该GOP中为非虚拟随机接入帧的P帧和B帧均为普通帧,为P帧的普通帧的参考帧为该普通帧的前一个帧,为B帧的普通帧的参考帧为该普通帧的前两个帧。所述编码器进一步将最靠前的帧组中的各帧的时序层次数值均设置为6(6是该GOP中最大的时序层次数值;若只有5个帧组,那么该GOP中最大的时序层次数值可以为4,即分别为4、3、2、1、0五种时序层次数值),并将第二靠前的帧组中的各帧的时序层次数值均设置为5,以此类推,越靠后的帧组中的各帧的时序层次数值越低,直到将最靠后的帧组中的各帧的时序层次数值均设置为0(该GOP中最小的时序层次数值),同时还将I帧的时序层次数值也设置为0。由于现有标准中的时序层次数值最多只有7种,分别为6、5、4、3、2、1、0,因此,在本实施例中,一个GOP中最多只能划分出7个帧组。

S305,解码器接收编码器发送的携带时序层次数值的视频数据;

S306,当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧;

其中,S306步骤的具体实现方式可以参见上述图2a对应实施例中的S205,这里不再进行赘述。

S307,从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧;

具体的,所述解码器可以将解码条件参数设置为所述目标虚拟随机接入帧对应的时序层次数值,生成第一解码条件;所述第一解码条件是只解码时序层次数值小于或等于所述目标虚拟随机接入帧对应的时序层次数值的帧。从图3b 所示的视频数据的帧结构可知,所述解码后的帧内编码帧与所述目标虚拟随机接入帧之间的各帧间编码帧分别对应的时序层次数值均大于所述目标虚拟随机接入帧对应的时序层次数值,所以所述解码器可以根据所述第一解码条件,从解码后的帧内编码帧开始按照所述解码顺序解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧(所解码的第一个虚拟随机接入帧即为所述目标虚拟随机接入帧),并跳过时序层次数值大于所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧和普通帧,直到解码完所述目标虚拟随机接入帧。所述解码器再将解码条件参数重新设置为所述目标普通帧对应的时序层次数值,生成第二解码条件;所述第二解码条件是解码时序层次数值小于或等于所述目标普通帧对应的时序层次数值的帧;从图3b所示的视频数据的帧结构可知,所述目标普通帧与所述目标虚拟随机接入帧之间的各普通帧的时序层次数值均等于所述目标普通帧对应的时序层次数值,所以所述解码器可以根据所述第二解码条件,从解码后的目标虚拟随机接入帧开始按照所述解码顺序逐一解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧,再将解码后的目标普通帧发送给播放器以进行播放。

例如,所述解码器可以将所述解码条件参数设置为3,那么根据HEVC的规定所述解码器就会仅解码时序层次数值小于或等于3的数据帧,即可以跳过时序层次数值大于3的数据帧。再以上述图3b为例,在图3b中,若假设B1位置上的普通帧(P帧)是目标普通帧,则解码器可以从B1位置开始向左逐一解析数据帧的NALU头信息,当根据NALU头信息检测出对应的数据帧为I帧时,所述解码器将所述解码条件参数设置为0,进而可以解码该I帧;进一步的,所述解码器再将所述解码条件参数设置为5,进而可以从所述目标普通帧所在的帧组开始解码,即I帧解码后,跳过了时序层次数值为6的数据帧,并直接解码B2位置上的目标虚拟随机接入帧,并继续解码B2位置右侧的普通帧,所解码的普通帧也均处于所述目标普通帧所在的帧组中,当解码到B1位置,且解码完B1位置上的所述目标普通帧时,即可播放所述目标普通帧对应的图像数据。在解码B1位置上的所述目标普通帧的过程中,可以跳过所有时序层次数值为6的帧(即跳过整个最靠前的帧组中的所有帧),所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。上述图2a对应实施例中的随机接入过程中,可以在解码I帧后,跳过所述目标虚拟随机接入帧之前的所有普通帧,但仍然需要解码所述目标虚拟随机接入帧之前的虚拟随机接入帧;而图3a对应实施例的随机接入过程中,可以在解码I帧后,跳过所述目标虚拟随机接入帧之前的所有普通帧和所有虚拟随机接入帧,由此可见,若图2a对应实施例中的每相邻两个虚拟随机接入帧之间的普通帧的数量与图3a对应实施例中的每相邻两个虚拟随机接入帧之间的普通帧的数量相同,则图3a对应实施例的随机接入方法可以比图2a对应实施例的随机接入方法具备更高的随机接入的访问效率。

本发明实施例通过在所编码的多个帧间编码帧中选择至少一个帧间编码帧以作为虚拟随机接入帧,并对多个帧内编码帧、各虚拟随机接入帧以及各普通帧分别设置对应的时序层次数值,可以在检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧,再从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

再请参见图4a,是本发明实施例提供的又一种视频编解码方法的流程示意图,图4a所示的方法为编码器与解码器的交互流程图,其中,S401-S405步骤描述的是编码器的编码过程,S406-S408步骤描述的是解码器的解码过程,所述方法可以包括:

S401,编码器在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;

其中,S401步骤的具体实现方式可以参见上述图1对应实施例中的S101,这里不再进行赘述。

S402,分别在每个GOP中,将所有普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值;

S403,分别在每个GOP中,将所有虚拟随机接入帧划分为至少两个虚拟随机接入帧组;每个虚拟随机接入帧组均包含至少两个虚拟随机接入帧,且每个虚拟随机接入帧组中每相邻两个虚拟随机接入帧之间存在至少一个普通帧;

S404,在每个GOP中,将位于GOP中最前的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的第二大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值,直至将位于GOP中最后的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

S405,将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值;

具体的,请一并参见图4b,是本发明实施例提供的又一种视频数据的帧结构示意图,在图4b中的一个GOP包括I帧、P帧以及B帧,图4b中数据帧从左到右的顺序为解码顺序,且每个箭头左侧的帧均为对应箭头右侧的帧的参考帧,在图4b中,编码器将所有普通帧的时序层次数值设置为6(6是该GOP中最大的时序层次数值;若只有4个虚拟随机接入帧组,那么该GOP中最大的时序层次数值可以为4,即分别为4、3、2、1、0五种时序层次数值),为P帧的普通帧的参考帧均为该普通帧的前一帧,为B帧的普通帧的参考帧均为该普通帧的前两帧。所述编码器将该GOP中的所有虚拟随机接入帧划分为6个虚拟随机接入帧组,每个虚拟随机接入帧组中的虚拟随机接入帧数量为2(可选的,在其他实施例中也可以将虚拟随机接入帧组中的虚拟随机接入帧数量设置为2个以上),且每个虚拟随机接入帧组中的两个虚拟随机接入帧为相邻的虚拟随机接入帧,每个虚拟随机接入帧的参考帧均为处于对应虚拟随机接入帧之前且距离对应虚拟随机接入帧最近的I帧。所述编码器进一步将最靠前的虚拟随机接入帧组中的各虚拟随机接入帧的时序层次数值均设置为5(即该GOP中的第二大值的时序层次数值),并将第二靠前的虚拟随机接入帧组中的各虚拟随机接入帧的时序层次数值均设置为4,以此类推,越靠后的虚拟随机接入帧组中的各虚拟随机接入帧的时序层次数值越小,直到将最靠后的虚拟随机接入帧组中的各虚拟随机接入帧的时序层次数值均设置为0(该GOP中最小的时序层次数值),同时还可以将I帧的时序层次数值设置为0。由于现有标准中的时序层次数值最多只有7种,分别为6、5、4、3、2、1、0,因此,在本实施例中,一个GOP中最多只能划分出6个虚拟随机接入帧组。

S406,解码器接收编码器发送的携带时序层次数值的视频数据;

S407,当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧;

其中,S407步骤的具体实现方式可以参见上述图2a对应实施例中的S205,这里不再进行赘述。

S408,从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧;

具体的,所述解码器可以将解码条件参数设置为所述目标虚拟随机接入帧对应的时序层次数值,生成第一解码条件;所述第一解码条件是只解码时序层次数值小于或等于所述目标虚拟随机接入帧对应的时序层次数值的帧。从图4b所示的视频数据的帧结构可知,所述解码后的帧内编码帧与所述目标虚拟随机接入帧之间的各帧间编码帧分别对应的时序层次数值大于或等于所述目标虚拟随机接入帧对应的时序层次数值,所以所述解码器可以根据所述第一解码条件,从解码后的帧内编码帧开始按照所述解码顺序解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,并跳过时序层次数值大于所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧和普通帧,直到解码完所述目标虚拟随机接入帧。所述解码器再将解码条件参数重新设置为所述目标普通帧对应的时序层次数值,生成第二解码条件;所述第二解码条件是解码时序层次数值小于或等于所述目标普通帧对应的时序层次数值的帧;从图4b所示的视频数据的帧结构可知,所述目标普通帧与所述目标虚拟随机接入帧之间的各普通帧的时序层次数值均等于所述目标普通帧对应的时序层次数值,所以所述解码器可以根据所述第二解码条件,从解码后的目标虚拟随机接入帧开始按照所述解码顺序逐一解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧,再将解码后的目标普通帧发送给播放器以进行播放。

例如,所述解码器可以将所述解码条件参数设置为3,那么根据HEVC的规定所述解码器就会仅解码时序层次数值小于或等于3的数据帧,即可以跳过时序层次数值大于3的数据帧。再以上述图4b为例,在图4b中,若假设C1位置上的普通帧(P帧)是目标普通帧,则所述解码器可以从C1位置开始往左边的方向逐一解析各数据帧的NALU头信息,当根据NALU头信息检测出对应的数据帧的时序层次数值不为6时,将该数据帧确定为目标虚拟随机接入帧(P帧),并记录该目标虚拟随机接入帧的位置为C2,同时所述解码器继续解析C2位置左边的数据帧的NALU头信息,直到根据NALU头信息检测出对应的数据帧为I帧时,停止解析下一个NALU头信息,并将所述解码条件参数设置为0,进而可以解码该I帧(该I帧为目标虚拟随机接入帧的参考帧);再将所述解码条件参数重新设置为5,并从该I帧开始按照解码顺序逐一解码时序层次数值为5的虚拟随机接入帧,并跳过时序层次数值为6的普通帧,直到解码出所记录的C2位置上的目标虚拟随机接入帧时,将所述解码条件参数重新设置为6,进而可以从C2位置上的目标虚拟随机接入帧开始按照解码顺序逐一解码时序层次数值为6的普通帧,直到解码出C1位置上的目标普通帧,即可开始播放目标普通帧对应的图像数据。由此可见,在随机播放C1位置上的P帧时,可以跳过左端的I帧与C2位置上的P帧之间的所有普通帧,从而可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且本发明实施例并不需要增加帧内编码帧的数量,所以不会影响视频编码效率。

由于最多只有7个相互不同的时序层次数值,所以当一个GOP中的数据帧的数量很大时,上述图3a对应实施例中的随机接入方法中的每个帧组(最多只能划分出7个帧组)中的数据帧的数量依然很多,因此,当所述目标普通帧为某个帧组中最后一个帧时,依然需要解码大量的数据帧。而图4a对应实施例中的随机接入方法可以将虚拟随机接入帧划分为多个虚拟随机接入帧组,每个虚拟随机接入帧组可以包括多个虚拟随机接入帧,因此,可以减少每相邻两个虚拟随机接入帧之间的普通帧数量,进而可以避免图3a对应实施例所出现的问题,即可以进一步减少需要解码的数据帧;而且图4a对应实施例中的随机接入方法也可以避免需要解码I帧与目标虚拟随机接入帧之间所有的虚拟随机接入帧,即只需解码与所述目标虚拟随机接入帧的时序层次数值相同的虚拟随机接入帧即可,因此,图4a对应实施例的随机接入方法是图2a和图3a对应实施例的随机接入方法的折中方式。

本发明实施例通过在所编码的多个帧间编码帧中选择至少一个帧间编码帧以作为虚拟随机接入帧,并对多个帧内编码帧、各虚拟随机接入帧以及各普通帧分别设置对应的时序层次数值,可以在检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧,再从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

请参见图5,是本发明实施例提供的一种视频编码装置1的结构示意图,所述视频编码装置1可以包括:选择模块10、设置模块20、发送模块30;

所述选择模块10,用于在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;所述多个帧间编码帧中除了所述虚拟随机接入帧以外的帧间编码帧均为普通帧;

具体的,所述选择模块10,具体用于分别在每个画面组GOP中的多个帧间编码帧中,每间隔预设数量或每间隔随机数量的帧间编码帧,设置一个虚拟随机接入帧;其中,将任意一个虚拟随机接入帧作为待编码虚拟随机接入帧,所述待编码虚拟随机接入帧的参考帧包括最近的帧内编码帧或所述待编码虚拟随机接入帧与所述最近的帧内编码帧之间的虚拟随机接入帧;所述最近的帧内编码帧是处于所述待编码虚拟随机接入帧的编码顺序之前且距离所述待编码虚拟随机接入帧最近的帧内编码帧;其中,将任意一个普通帧作为待编码普通帧,所述待编码普通帧的参考帧包括最近的虚拟随机接入帧或所述待编码普通帧与所述最近的虚拟随机接入帧之间的普通帧;所述最近的虚拟随机接入帧是处于所述待编码普通帧的编码顺序之前且距离所述待编码普通帧最近的虚拟随机接入帧。

所述设置模块20,用于为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值;携带所述时序层次数值的多个帧间编码帧包括所述虚拟随机接入帧和所述普通帧;所述时序层次数值是指时序层次代码对应的数值;

所述发送模块30,用于将携带所述时序层次数值的所述视频数据发送到解码器,以使所述解码器在检测到对所述视频数据中的目标普通帧进行播放操作时,根据所述目标普通帧对应的时序层次数值以及处于所述目标普通帧的解码顺序之前且距离最近的虚拟随机接入帧对应的时序层次数值,从处于所述目标普通帧的解码顺序之前且距离最近的帧内编码帧开始选择跳过至少一个帧间编码帧,直到解码完所述目标普通帧;

其中,所述选择模块10、所述设置模块20以及所述发送模块30的具体功能实现方式可以参见上述图1对应实施例中的S101-S103,这里不再进行赘述。

进一步的,所述设置模块20,可以具体用于分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值;所述第一数值大于所述第二数值。此时,所述设置模块20的具体功能实现方式可以参见上述图2a对应实施例中的S202,这里不再进行赘述。

进一步的,再请参见图6,是本发明实施例提供的一种设置模块20的结构示意图,所述设置模块20可以包括:第一帧组划分单元201、第一编码设置单元202、第二编码设置单元203、第二帧组划分单元204;

所述第一帧组划分单元201,用于分别在每个GOP中,将所述虚拟随机接入帧和所述普通帧划分为至少两个帧组;每个帧组中的第一个帧为所述虚拟随机接入帧,且每个帧组分别包含各自帧组内的第一个帧到下一个虚拟随机接入帧之间的所有普通帧;

所述第一编码设置单元202,用于在每个GOP中,将位于GOP中最前的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值,直至将位于GOP中最后的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

所述第一编码设置单元202,还用于将每个GOP中的帧内编码帧对应的时序层次数值均设置为所在GOP中的最小时序层次数值。

所述第二编码设置单元203,用于分别在每个GOP中,将所有普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值;

所述第二帧组划分单元204,用于分别在每个GOP中,将所有虚拟随机接入帧划分为至少两个虚拟随机接入帧组;每个虚拟随机接入帧组均包含至少两个虚拟随机接入帧,且每个虚拟随机接入帧组中每相邻两个虚拟随机接入帧之间存在至少一个普通帧;

所述第二编码设置单元203,还用于在每个GOP中,将位于GOP中最前的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的第二大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值,直至将位于GOP中最后的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

所述第二编码设置单元203,还用于将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值。

其中,所述第一帧组划分单元201和所述第一编码设置单元202的具体功能实现方式可以参见上述图3a对应实施例中的S302-S304,这里不再进行赘述;所述第二编码设置单元203和所述第二帧组划分单元204的具体功能实现方式可以参见上述图4a对应实施例中的S402-S405,这里不再进行赘述。

其中,当所述第一帧组划分单元201和所述第一编码设置单元202执行响应操作时,所述第二编码设置单元203和所述第二帧组划分单元204停止执行响应操作,且所述设置模块20也停止执行所述分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值的步骤。

其中,当所述第二编码设置单元203和所述第二帧组划分单元204执行响应操作时,所述第一帧组划分单元201和所述第一编码设置单元202停止执行响应操作,且所述设置模块20也停止执行所述分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值的步骤。

其中,若所述设置模块20执行所述分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值的步骤,则所述第二编码设置单元203、所述第二帧组划分单元204、所述第一帧组划分单元201以及所述第一编码设置单元202均停止执行响应操作。

再请参见图7,是本发明实施例提供的一种视频解码装置2的结构示意图,所述视频解码装置2可以包括:接收模块40、第一解码模块50、第二解码模块60;

所述接收模块40,用于接收编码器发送的携带时序层次数值的视频数据;所述视频数据中的多个帧间编码帧包括预先由所述编码器所选择出的虚拟随机接入帧,所述多个帧间编码帧中除了所述虚拟随机接入帧以外的帧间编码帧均为普通帧;所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别具有对应的时序层次数值;所述时序层次数值是指时序层次代码对应的数值;

所述第一解码模块50,用于当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧;

具体的,所述第一解码模块50可以具体用于当检测到对所述视频数据中的目标普通帧进行播放操作时,将位于所述目标普通帧的解码顺序之前且距离所述目标普通帧最近的虚拟随机接入帧,作为目标虚拟随机接入帧,并解码位于所述目标普通帧的解码顺序之前且距离所述目标普通帧最近的帧内编码帧。

其中,所述接收模块40和所述第一解码模块50的具体功能实现方式可以参见上述图2a对应实施例中的S204-S205,这里不再进行赘述。

所述第二解码模块60,用于从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧;

具体的,请一并参见图8,是本发明实施例提供的一种第二解码模块60的结构示意图,所述第二解码模块60可以包括:设置生成单元601、目标解码单元602;

所述设置生成单元601,用于将解码条件参数设置为所述目标虚拟随机接入帧对应的时序层次数值,生成第一解码条件;所述第一解码条件是解码时序层次数值小于或等于所述目标虚拟随机接入帧对应的时序层次数值的帧;

所述目标解码单元602,用于根据所述第一解码条件,从解码后的帧内编码帧开始按照所述解码顺序解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,并跳过时序层次数值大于所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧和/或普通帧,直到解码完所述目标虚拟随机接入帧;

所述设置生成单元601,还用于将解码条件参数重新设置为所述目标普通帧对应的时序层次数值,生成第二解码条件;所述第二解码条件是解码时序层次数值小于或等于所述目标普通帧对应的时序层次数值的帧;

所述目标解码单元602,还用于根据所述第二解码条件,从解码后的目标虚拟随机接入帧开始按照所述解码顺序逐一解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。

其中,所述设置生成单元601和所述目标解码单元602的具体功能实现方式可以参见上述图2a对应实施例中的S206,或上述图3a对应实施例中的S307,或上述图4a对应实施例中的S408,这里不再进行赘述。

本发明实施例通过在所编码的多个帧间编码帧中选择至少一个帧间编码帧以作为虚拟随机接入帧,并对多个帧内编码帧、各虚拟随机接入帧以及各普通帧分别设置对应的时序层次数值,可以在检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧,再从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

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

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

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

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

在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧;所述多个帧间编码帧中除了所述虚拟随机接入帧以外的帧间编码帧均为普通帧;

为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值;携带所述时序层次数值的多个帧间编码帧包括所述虚拟随机接入帧和所述普通帧;所述时序层次数值是指时序层次代码对应的数值;

将携带所述时序层次数值的所述视频数据发送到解码器,以使所述解码器在检测到对所述视频数据中的目标普通帧进行播放操作时,根据所述目标普通帧对应的时序层次数值以及处于所述目标普通帧的解码顺序之前且距离最近的虚拟随机接入帧对应的时序层次数值,从处于所述目标普通帧的解码顺序之前且距离最近的帧内编码帧开始选择跳过至少一个帧间编码帧,直到解码完所述目标普通帧。

其中,所述处理器1001在执行在视频数据的多个帧间编码帧中选择至少一个帧间编码帧,以作为虚拟随机接入帧时,具有用于:

分别在每个画面组GOP中的多个帧间编码帧中,每间隔预设数量或每间隔随机数量的帧间编码帧,设置一个虚拟随机接入帧;

其中,将任意一个虚拟随机接入帧作为待编码虚拟随机接入帧,所述待编码虚拟随机接入帧的参考帧包括最近的帧内编码帧或所述待编码虚拟随机接入帧与所述最近的帧内编码帧之间的虚拟随机接入帧;所述最近的帧内编码帧是处于所述待编码虚拟随机接入帧的编码顺序之前且距离所述待编码虚拟随机接入帧最近的帧内编码帧;

其中,将任意一个普通帧作为待编码普通帧,所述待编码普通帧的参考帧包括最近的虚拟随机接入帧或所述待编码普通帧与所述最近的虚拟随机接入帧之间的普通帧;所述最近的虚拟随机接入帧是处于所述待编码普通帧的编码顺序之前且距离所述待编码普通帧最近的虚拟随机接入帧。

其中,所述处理器1001在执行为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值时,具体用于:

分别在每个GOP中,将各所述普通帧分别对应的时序层次数值均设置为第一数值,并将各所述帧内编码帧以及各所述虚拟随机接入帧分别对应的时序层次数值均设置为第二数值;所述第一数值大于所述第二数值。

其中,所述处理器1001在执行为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值时,具体用于:

分别在每个GOP中,将所述虚拟随机接入帧和所述普通帧划分为至少两个帧组;每个帧组中的第一个帧为所述虚拟随机接入帧,且每个帧组分别包含各自帧组内的第一个帧到下一个虚拟随机接入帧之间的所有普通帧;

在每个GOP中,将位于GOP中最前的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值,直至将位于GOP中最后的帧组中的虚拟随机接入帧和各普通帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

将每个GOP中的帧内编码帧对应的时序层次数值均设置为所在GOP中的最小时序层次数值。

其中,所述处理器1001在执行为所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别设置对应的时序层次数值时,具体用于:

分别在每个GOP中,将所有普通帧分别对应的时序层次数值均设置为所在GOP中的最大时序层次数值;

分别在每个GOP中,将所有虚拟随机接入帧划分为至少两个虚拟随机接入帧组;每个虚拟随机接入帧组均包含至少两个虚拟随机接入帧,且每个虚拟随机接入帧组中每相邻两个虚拟随机接入帧之间存在至少一个普通帧;

在每个GOP中,将位于GOP中最前的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的第二大时序层次数值,并按照所述时序层次数值从大到小的顺序,逐一设置各虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值,直至将位于GOP中最后的虚拟随机接入帧组中的各虚拟随机接入帧分别对应的时序层次数值均设置为所在GOP中的最小时序层次数值;

将每个GOP中的帧内编码帧对应的时序层次数值设置为所在GOP中的最小时序层次数值。

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

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

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

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

接收编码器发送的携带时序层次数值的视频数据;所述视频数据中的多个帧间编码帧包括预先由所述编码器所选择出的虚拟随机接入帧,所述多个帧间编码帧中除了所述虚拟随机接入帧以外的帧间编码帧均为普通帧;所述视频数据中的多个帧内编码帧和所述多个帧间编码帧中各帧间编码帧分别具有对应的时序层次数值;所述时序层次数值是指时序层次代码对应的数值;

当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧;

从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。

其中,所述处理器2001在执行当检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧时,具体用于:

当检测到对所述视频数据中的目标普通帧进行播放操作时,将位于所述目标普通帧的解码顺序之前且距离所述目标普通帧最近的虚拟随机接入帧,作为目标虚拟随机接入帧,并解码位于所述目标普通帧的解码顺序之前且距离所述目标普通帧最近的帧内编码帧。

其中,所述解码后的帧内编码帧与所述目标虚拟随机接入帧之间的各帧间编码帧分别对应的时序层次数值大于或等于所述目标虚拟随机接入帧对应的时序层次数值;

所述目标普通帧与所述目标虚拟随机接入帧之间的各普通帧的时序层次数值均等于所述目标普通帧对应的时序层次数值。

其中,所述处理器2001在执行从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧时,具体用于:

将解码条件参数设置为所述目标虚拟随机接入帧对应的时序层次数值,生成第一解码条件;所述第一解码条件是解码时序层次数值小于或等于所述目标虚拟随机接入帧对应的时序层次数值的帧;

根据所述第一解码条件,从解码后的帧内编码帧开始按照所述解码顺序解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,并跳过时序层次数值大于所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧和/或普通帧,直到解码完所述目标虚拟随机接入帧;

将解码条件参数重新设置为所述目标普通帧对应的时序层次数值,生成第二解码条件;所述第二解码条件是解码时序层次数值小于或等于所述目标普通帧对应的时序层次数值的帧;

根据所述第二解码条件,从解码后的目标虚拟随机接入帧开始按照所述解码顺序逐一解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。

本发明实施例通过在所编码的多个帧间编码帧中选择至少一个帧间编码帧以作为虚拟随机接入帧,并对多个帧内编码帧、各虚拟随机接入帧以及各普通帧分别设置对应的时序层次数值,可以在检测到对所述视频数据中的目标普通帧进行播放操作时,查找与所述目标普通帧相关联的目标虚拟随机接入帧和帧内编码帧,并解码与所述目标普通帧相关联的帧内编码帧,再从解码后的帧内编码帧开始解码具有所述目标虚拟随机接入帧对应的时序层次数值的虚拟随机接入帧,直到解码完所述目标虚拟随机接入帧,则从解码后的目标虚拟随机接入帧开始解码具有所述目标普通帧对应的时序层次数值的普通帧,直到解码完所述目标普通帧。由于通过设置虚拟随机接入帧以及分配不同的时序层次数值,可以使解码器从帧内编码帧解码到目标虚拟随机接入帧的过程中跳过大量的普通帧和/或虚拟随机接入帧,所以可以有效减少需要解码的帧数量,从而可以有效提高随机接入的访问效率,而且也无需增加额外的帧内编码帧,从而可以同时提高视频编码效率。

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

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

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