视频解码、编码方法、装置及系统与流程

文档序号:14864427发布日期:2018-07-04 10:12阅读:313来源:国知局
视频解码、编码方法、装置及系统与流程

本发明涉及视频编解码技术领域,特别涉及一种视频解码、编码方法、装置及系统。



背景技术:

在视频编解码技术中,视频帧分为关键帧及非关键帧。关键帧是一幅画面的完整保留,在解码时只需本帧数据就可以完成一幅画面的解码显示。两个关键帧之间的视频帧为非关键帧,在解码时需要直接或间接参考关键帧中的数据才能解码得到图像。

实际应用中,为了减少数据量,对非关键帧进行编码时,通常是依赖于前一视频帧进行编码。由于非关键帧解码通常是依赖前一视频帧进行解码的,因此在一个非关键帧不能被成功解码的情况下,从该非关键帧后直至下一关键帧之前的非关键帧均不能被成功解码。但为了保证视频的显示,解码端通常会搜索下一关键帧继续解码,或者,解码端向编码端发起插入关键帧的请求,在接收到编码端发送的重新编码的关键帧码流数据后,继续对接收到的关键帧码流数据进行解码。

在按照上述方式进行解码时,当未被成功解码的非关键帧至下一关键帧之前的非关键帧较多或未被成功解码的非关键帧后面搜索不到关键帧时,会导致这些非关键帧所对应的较长一段时长内无法正常显示视频,从而造成较严重的视频卡顿现象;另外,由于解码端需要将请求插入关键帧完成之前编码得到的非关键帧丢弃,因此也会造成一段时间的卡顿问题。



技术实现要素:

为了解决相关技术中在对非关键帧解码失败时,若两个关键帧间隔过大,通过搜索下一关键帧继续解码,可能会造成较严重的视频卡顿的问题,本发明实施例提供了一种视频解码、编码方法、装置及系统。所述技术方案如下:

第一方面,提供了一种视频解码方法,所述方法包括:当对两个关键帧之间的第一非关键帧解码失败时,在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,所述符合解码条件的第二非关键帧为与所述第一非关键帧无参考依赖关系的非关键帧;获取所述第二非关键帧的参考视频帧,所述参考视频帧是所述第二非关键帧在编码时根据所述第二非关键帧的优先级确定的;利用所述第二非关键帧的所述参考视频帧对所述第二非关键帧进行解码。

可选的,所述在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,包括:在所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合所述解码条件的非关键帧;在搜索到的符合所述解码条件的非关键帧中,将与所述第一非关键帧时域位置最近的非关键帧确定为所述第二非关键帧。

可选的,所述在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,包括:依序对位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧的码流数据进行分析,每个所述非关键帧的码流数据包含用于表述所述非关键帧的参考依赖关系信息,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;根据当前分析的码流数据中的参考依赖关系信息判断当前分析的码流数据对应的非关键帧与所述第一非关键帧是否存在参考依赖关系;将判断出的第一个与所述第一非关键帧无参考依赖关系的非关键帧作为符合解码条件的第二非关键帧。

可选的,所述在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,包括:依序对位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含直接参考的参考视频帧标识;每分析一个码流数据后,检测分析出的所述参考视频帧标识所对应的参考视频帧是否已被成功解码;将检测出的第一个已被成功解码的参考视频帧所对应的非关键帧作为符合解码条件的第二非关键帧。

可选的,所述在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,包括:获取与编码端预先协商的参考依赖关系信息,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;根据所述参考依赖关系信息在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧。

第二方面,提供了一种视频编码方法,所述方法包括:在对相邻的两个关键帧之间的非关键帧进行编码时,确定需要编码的非关键帧的优先级;根据所述非关键帧的优先级确定所述非关键帧的参考视频帧;根据所述非关键帧的参考视频帧对所述非关键帧进行编码,得到所述非关键帧的码流数据。

可选的,所述根据所述非关键帧的优先级确定所述非关键帧的参考视频帧,包括:在所述两个关键帧之间且位于所述非关键帧之前的其他非关键帧中,将优先级不低于所述非关键帧的其他非关键帧作为所述非关键帧的参考视频帧;若所述非关键帧之前的其他非关键帧的优先级均低于所述非关键帧,则将所述两个关键帧中位于所述非关键帧之前的关键帧作为所述非关键帧的参考视频帧。

可选的,所述根据所述非关键帧的参考视频帧对所述非关键帧进行编码,包括:根据所述非关键帧的图像数据和所述非关键帧的参考视频帧的图像数据对所述非关键帧进行编码,得到所述非关键帧的码流数据;将所述参考视频帧的标识或参考依赖关系信息添加至所述非关键帧的码流数据中,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识。

第三方面,提供了一种视频解码装置,所述装置包括:搜索模块,用于当对两个关键帧之间的第一非关键帧解码失败时,在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,所述符合解码条件的第二非关键帧为与所述第一非关键帧无参考依赖关系的非关键帧;获取模块,用于获取所述搜索模块搜索到的所述第二非关键帧的参考视频帧,所述参考视频帧是所述第二非关键帧在编码时根据所述第二非关键帧的优先级确定的;解码模块,用于利用所述获取模块获取的所述第二非关键帧的参考视频帧对所述第二非关键帧进行解码。

可选的,所述搜索模块,包括:第一搜索单元,用于在所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合所述解码条件的非关键帧;第一确定单元,用于在所述第一搜索单元搜索到的符合所述解码条件的非关键帧中,将与所述第一非关键帧时域位置最近的非关键帧确定为所述第二非关键帧。

可选的,所述搜索模块,包括:第一分析单元,用于依序对位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧的码流数据进行分析,每个所述非关键帧的码流数据包含用于表述所述非关键帧的参考依赖关系信息,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;判断单元,用于根据当前分析的码流数据中的参考依赖关系信息判断当前分析的码流数据对应的非关键帧与所述第一非关键帧是否存在参考依赖关系;第二确定单元,用于将判断出的第一个与所述第一非关键帧无参考依赖关系的非关键帧作为符合解码条件的第二非关键帧。

可选的,所述搜索模块,包括:第二分析单元,用于依序对位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含直接参考的参考视频帧标识;检测单元,用于每分析一个码流数据后,检测分析出的所述参考视频帧标识所对应的参考视频帧是否已被成功解码;第三确定单元,用于将检测出的第一个已被成功解码的参考视频帧所对应的非关键帧作为符合解码条件的第二非关键帧。

可选的,所述搜索模块,包括:获取单元,用于获取与编码端预先协商的参考依赖关系信息,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;搜索单元,用于根据所述参考依赖关系信息在位于所述两个关键帧之间且位于所述第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧。

第四方面,提供了一种视频编码装置,所述装置包括:第一确定模块,用于在对相邻的两个关键帧之间的非关键帧进行编码时,确定需要编码的非关键帧的优先级;第二确定模块,用于根据所述非关键帧的优先级确定所述非关键帧的参考视频帧;编码模块,用于根据所述非关键帧的参考视频帧对所述非关键帧进行编码,得到所述非关键帧的码流数据。

可选的,所述第二确定模块,用于在所述两个关键帧之间且位于所述非关键帧之前的其他非关键帧中,将优先级不低于所述非关键帧的其他非关键帧作为所述非关键帧的参考视频帧;若所述非关键帧之前的其他非关键帧的优先级均低于所述非关键帧,则将所述两个关键帧中位于所述非关键帧之前的关键帧作为所述非关键帧的参考视频帧。

可选的,所述编码模块,用于根据所述非关键帧的图像数据和所述非关键帧的参考视频帧的图像数据对所述非关键帧进行编码,得到所述非关键帧的码流数据;将所述参考视频帧的标识或参考依赖关系信息添加至所述非关键帧的码流数据中,所述参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识。

第五方面,提供了一种视频编解码系统,所述系统包括:视频解码装置及视频编码装置;其中,所述视频解码装置如上述第三方面提供的装置;所述视频编码装置如上述第四方面提供的装置。

本发明实施例提供的技术方案带来的有益效果是:

当对第一非关键帧解码失败后,通过在位于两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,而该符合解码条件的第二非关键帧为与第一非关键帧无参考依赖关系的非关键帧,因而可以从第二非关键帧处进行解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频播放质量。

附图说明

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

图1是根据部分实施例示出的视频编解码所涉及的实施环境示意图;

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

图2b是本发明另一个实施例提供的视频编码的示意图;

图3a是本发明一个实施例提供的视频解码方法的方法流程图;

图3b是本发明另一个实施例提供的视频解码的示意图;

图4是本发明一个实施例提供的视频编码装置的结构方框图;

图5是本发明一个实施例提供的视频解码装置的结构方框图;

图6是本发明一个实施例提供的视频编解码系统的结构方框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

为了便于对本发明各实施例的理解,首先对相关名词进行解释:

帧:是视频中最小单位的单幅影像画面;

关键帧:在编码时不参考其他帧,在解码时只需本帧数据就可以完成一幅画面的解码显示,称这种帧为关键帧;

非关键帧:两个关键帧之间的帧称为非关键帧,一般可以称为过渡帧或者中间帧,记录预测信息的过渡帧也称为预测帧,根据预测帧记录的预测信息可以在解码过程中结合关键帧解码得到图像;

关键帧间隔:连续两个关键帧之间的非关键帧总数。

图1是根据部分实施例示出的视频编解码所涉及的实施环境示意图。如图1所示,该实施环境主要包括编码端110、解码端120和通信网络130。

编码端110接收由一系列视频帧组成的视频信号,编码端110按照接收的先后顺序将视频信号中的每一视频帧进行编码,得到码流数据,然后通过通信网络130将码流数据传输至解码端120。

编码端110对于关键帧的编码,不需要参考其他帧,对于非关键帧的编码,需要参考该非关键帧前面至少一个视频帧进行编码。编码端110编码得到的码流数据中至少包含视频帧的图片数据和控制数据。对于非关键帧,其码流数据中的控制数据可包含非关键帧在编码时的参考视频帧的标识或参考依赖关系信息,该参考依赖关系信息用于表述该非关键帧直接和间接参考依赖关系。由于相邻的非关键帧的相似度比较高,因此在参考在前非关键帧对在后非关键帧进行编码时得到的码流数据比较小,在编码之后,通常非关键帧的压缩率要高于关键帧的压缩率。

解码端120在接收到码流数据之后,按照视频帧的先后顺序依次解码,对关键帧的解码只需要该关键帧记录的数据就可以完成。对非关键帧的解码,由于编码端110编码得到的码流数据中的控制数据可包含非关键帧在编码时的参考视频帧的标识或参考依赖关系信息,因此,解码端120可根据非关键帧的码流数据中的控制数据识别非关键帧在编码时的参考视频帧,结合非关键帧记录的数据和该非关键帧的参考视频帧进行解码。

通信网络130可以为有线通信网络,也可以是无线通信网络。本实施例中不对通信网络130的物理实现方式进行限定。日常生活中,用户通过视频应用程序在线观看视频时,通过通信网络130传输的都是码流数据。

在一种实现方式中,通信网络130对数据的传输状况较好,编码端110与解码端120可以实现实时的数据传输,编码端110将编码后的码流数据实时传输给解码端120,解码端120实时对码流数据进行解码显示。

在另一种实现方式中,通信网络130对数据的传输状况较差,解码端120可能会先缓存一定的码流数据,缓存的数据多少可以根据通信网络130的情况来决定,一般通信网络130越差,缓存的数据越多。然后解码端120对缓存的码流数据进行解码。

可选的,该实施环境还可能包括第三方应用程序的服务器,编码端110可能将码流数据传输给服务器,当解码端120向服务器请求码流数据时,服务器将码流数据传输给解码端120。

可选的,该实施环境中的编码端110和解码端120可以被集成到同一个设备中,该设备不仅可以进行视频编码,也可以进行视频解码。

由于视频信号包含的数据量很大,为了便于视频信号的网络传输和存储,通常在发送侧会对视频信号进行编码压缩得到码流数据,然后在接收侧对接收到的码流数据进行解码。现有技术中,在对非关键帧进行编码时,通常是依赖前一视频帧进行编码,因此在解码过程中当一个非关键帧不能被成功解码时,解码端通常会搜索下一关键帧继续解码,若解码失败的非关键帧与下一关键帧之间存在较多非关键帧,这些非关键帧均不能被解码,则导致较严重的视频卡顿问题。

本方案在编码时至少有一个非关键帧的参考视频帧不是该非关键帧的前一视频帧,具体请参见图2a所示的视频编码方法。与图2a中的视频编码方法相对应的,在通过如图2a的视频编码方法编码得到的码流数据进行解码时,当一个非关键帧解码失败时,在该解码失败的非关键帧后面搜索一个不依赖该解码失败的非关键帧进行编码且距离该非关键帧最近的非关键帧,即搜索到的非关键帧的参考视频帧在解码失败的非关键帧之前且已被成功解码,则通过对搜索到的非关键帧进行解码,能够使该解码失败的非关键帧后面的非关键帧正常解码,减少了视频卡顿的时间,具体请参见如图3a所示的视频解码方法。

图2a是本发明一个实施例提供的视频编码方法的方法流程图,该视频编码方法应用于图1所示的编码端110中。如图2a所示,该视频编码方法可以包括以下步骤:

步骤201,在对相邻的两个关键帧之间的非关键帧进行编码时,确定需要编码的非关键帧的优先级。

实际实施时,相邻的两个关键帧之间的非关键帧可以被划分为至少两个不同的优先级。关于优先级的划分方式,具体可依据实际需求进行设定。各个相同优先级的非关键帧在编码时可以使用相同的编码策略,不同优先级的非关键帧使用的编码策略可以不同。

为了能够更好的理解非关键帧的优先级,请参见图2b所示的视频编码的码流示意图。图2b中,i1和i2是关键帧,关键帧之间的非关键帧被划分为3个优先级。其中,p2~p4、p6~p8、p10~p12、p14~p16、p18~p20、p22~p24、p26~p28、p30~p32等被划为第1优先级,p5、p9、p13、p21、p25、p29等被划分为第2优先级,p17、p33被划分为第3优先级。第1优先级的非关键帧间隔为0,第2优先级的非关键帧间隔为3,第3优先级的非关键帧间隔为15。

可选的,在实际应用中,还可以根据需求调整非关键帧的优先级划分,比如将3个优先级调整成4个优先级,也可以调整相同优先级的非关键帧间隔。

步骤202,根据非关键帧的优先级确定非关键帧的参考视频帧。

该步骤在具体实施时,在两个关键帧之间且位于该非关键帧之前的其他非关键帧中,将优先级不低于该非关键帧的其他非关键帧作为该非关键帧的参考视频帧;若该非关键帧之前的其他非关键帧的优先级均低于该非关键帧,则将两个关键帧中位于该非关键帧之前的关键帧作为该非关键帧的参考视频帧。

仍以图2b所示的码流进行举例说明,如图2b所示,关键帧i1和关键帧i2是相邻的两个关键帧,p2到p33是非关键帧,箭头所指向的位置是非关键帧在编码时的参考视频帧的位置。其中,非关键帧p5的优先级为第2优先级,在两个关键帧之间且位于该非关键帧p5之前没有优先级高于非关键帧p5或与非关键帧p5优先级相同的非关键帧,因而非关键帧p5的参考视频帧是关键帧i1。同理,非关键帧p17的参考视频帧是关键帧i1。另外,由于非关键帧p9的优先级为第2优先级,非关键帧p9可以参考前面优先级高于非关键帧p9的视频帧进行编码,因此非关键帧p9的参考视频帧可以配置成关键帧i1。同理,非关键帧p13的参考视频帧可以配置成关键帧i1,非关键帧p21的参考视频帧可以配置成非关键帧p17,非关键帧p25的参考视频帧可以配置成非关键帧p17,非关键帧p29的参考视频帧可以配置成非关键帧p17。另外,非关键帧p33的优先级为第3优先级,非关键帧p33的参考视频帧是相同优先级的非关键帧p17。可选的,尽管图中未示出,非关键帧p9的参考视频帧还可以配置成相同优先级的非关键帧p5,非关键帧p13的参考视频帧还可以配置成相同优先级的非关键帧p9,非关键帧p25的参考视频帧还可以配置成相同优先级的非关键帧p21,非关键帧p29的参考视频帧还可以配置成相同优先级的非关键帧p25。

步骤203,根据该非关键帧的参考视频帧对该非关键帧进行编码,得到非关键帧的码流数据。

在实际应用中,编码端110在对各个视频帧进行编码时,可以确定该视频帧的数据与该视频帧是否参考其他视频帧进行编码、以及参考的是哪一个或哪几个视频帧编成与该视频帧对应的码流数据。比如,对关键帧的编码,需要根据该关键帧来实现,不参考其他视频帧;对非关键帧的编码,根据非关键帧与该非关键帧的参考视频帧来实现,还需要将该非关键帧与参考视频帧之间的参考关系编进码流数据。此外,一个非关键帧依赖另一个视频帧(以下称该视频帧)进行编码,有两种可能的情况:一种是非关键帧直接参考该视频帧,即该非关键帧的参考视频帧为该视频帧;另一种是非关键帧间接参考该视频帧,即该非关键帧的参考视频帧在编码时的参考视频帧为该视频帧,以此类推。若一个非关键帧参考另一个视频帧进行编码,则表明该非关键帧的参考视频帧为该视频帧。

该步骤在具体实施时,根据非关键帧的图像数据和非关键帧的参考视频帧的图像数据对非关键帧进行编码,得到非关键帧的码流数据;

将参考视频帧的标识或参考依赖关系信息添加至非关键帧的码流数据中。参考依赖关系信息包括非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识。

其中,参考视频帧的标识用于标识非关键帧的参考视频帧具体为哪一视频帧。参考依赖关系信息包括所述非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识,具体可以包括直接参考的参考视频帧的标识、间接参考的参考视频帧的标识、直接参考的参考视频帧与非关键帧之间的参考关系标识、直接参考的参考视频帧和间接参考的参考视频帧之间的参考关系标识,举例说明,有三个视频帧a、b、c,视频帧a不参考其他视频帧编码,视频帧b参考视频帧a编码,视频帧c参考视频帧b编码,则视频帧b直接参考视频帧a,视频帧c直接参考视频帧b,视频帧c间接参考视频帧a。以视频帧c为例,视频帧c的码流数据中记录的参考依赖关系信息可以包括:作为视频帧c的直接参考的参考视频帧b的标识b和作为视频帧c的间接参考的参考视频帧a的标识a,或者还可以包括直接参考的参考视频帧b与非关键帧之间的参考关系标识(例如为c-b)、参考视频帧b和参考视频帧a之间的参考关系标识(例如为b-a)。

对于视频帧是否能成功解码,通常情况下只依赖于其直接参考的参考视频帧是否成功解码,如果直接参考的参考视频帧能够成功解码,该视频帧即可成功解码,该参考视频帧可以为一帧或多帧视频帧,本实施例中的码流数据中包括的参考关系标识或者是间接参考的参考视频帧标识可以更方便的判断哪些视频帧解码成功或者失败、存在那些参考依赖关系,以便确定第二非关键帧。

本实施例不对参考依赖关系信息的具体内容及形式进行限定,可以包括与非关键帧具有参考关系的所有视频帧的标识。可选的,视频帧的标识可以是视频帧的编号,如p1、p5、i2等,也可以是视频帧的位置,还可以是视频帧对应的时刻信息,本实施例不对视频帧的标识的具体实现进行限定。

仍以图2b为例,针对非关键帧p12,其参考视频帧为非关键帧p11,而非关键帧p11的参考视频帧为非关键帧p10,非关键帧p10的参考视频帧为非关键帧p9,非关键帧p9的参考视频帧为关键帧i1。也就是说,非关键帧p12与非关键帧p11具有直接的参考依赖关系,而与非关键帧p10、p9以及关键帧i1具有间接的参考依赖关系。因此,非关键帧p12对应的参考依赖关系信息可以按顺序包括非关键帧p11、p10、p9以及关键帧i1等视频帧的标识。

作为一种可选方式,除了在码流数据中添加参考视频帧的标识或参考依赖关系信息以使解码端获知参考关系外,还可以通过预先协商的方式使解码端获知参考依赖关系信息。关于具体的协商方式,本实施例不做具体限定,例如,可以在发送编码数据时,将参考依赖关系信息发送至解码端。

无论采用哪种方式使解码端获知参考依赖关系,由于非关键帧的编码是基于参考视频帧进行的,因此能够将视频帧通过编码进行压缩,使得数据量变小。一般的,当视频中的场景静止时,表明相邻的视频帧之间的变化很小,对这种情况下的非关键帧进行编码压缩,通常可以将视频帧压缩的很小。

此外,通常存在间隔的两个视频帧之间的变化要比相邻的两个视频帧之间的变化要大,因此,在编码时对参考视频帧不为相邻的前一视频帧的非关键帧的编码压缩率要小于对参考视频帧为相邻的前一视频帧的非关键帧的编码压缩率。考虑到网络传输和存储空间的问题,参考视频帧不为相邻的前一视频帧的非关键帧的数量与参考视频帧为相邻的前一视频帧的非关键帧的数量需要合理分配,或根据实际环境进行设置,以达到综合性能最佳的效果。

可选的,编码端110可以根据实际需求对编码方式进行调整,但需要从下一关键帧起进行调整,在需要调整时也可以人为插入一个关键帧进行调整,不需要等关键帧间隔中的非关键帧全部编码完毕。

综上所述,本发明实施例提供的视频编码方法,通过在编码时,将不同级别的非关键帧按不同的规律跳帧参考编码,使得在对非关键帧解码失败后,通过在位于解码失败的非关键帧之后的非关键帧中搜索符合解码条件的非关键帧,而该符合解码条件的非关键帧为与解码失败的非关键帧无参考依赖关系的非关键帧,因而可以从符合解码条件的非关键帧处恢复解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频播放质量。

在实际应用中,在对视频信号进行编码压缩之后,为了能够尽可能地恢复视频信号的正常显示,一般需要对编码压缩后的数据进行解码,与图2a对应的,视频解码的方法可以参见如图3a所示的步骤。

图3a是本发明一个实施例提供的视频解码方法的方法流程图,该视频解码方法应用于图1所示的解码端120中。如图3a所示,该视频解码方法可以包括以下步骤:

步骤301,当对两个关键帧之间的第一非关键帧解码失败时,在位于两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,符合解码条件的第二非关键帧为与第一非关键帧无参考依赖关系的非关键帧。

在实际应用中,码流数据在传输过程中可能会由于网络原因导致一部分数据丢失,从而使得解码端120在对码流数据解码时发生解码失败的情况。又由于本实施例中解码端120接收到的码流数据是由编码端110按照图2a所示的方法进行编码得到的,相邻的两个关键帧之间至少有一个非关键帧的参考视频帧不为相邻的前一视频帧,因此在第一非关键帧解码失败时,为了能够快速恢复解码,可以向后搜索是否有符合解码条件的第二非关键帧。

符合解码条件的第二非关键帧的参考视频帧在第一非关键帧之前且已被成功解码,因此第二非关键帧不依赖第一非关键帧进行编码,即第二非关键帧与第一非关键帧无参考依赖关系。另外,为了能够尽快恢复码流数据的正常解码,符合解码条件的第二非关键帧为第一非关键帧之后能够被成功解码的第一个非关键帧,即距离第一非关键帧最近的能够被成功解码的非关键帧。也就是说,符合解码条件的第二非关键帧为与第一非关键帧无参考依赖关系的非关键帧中与第一非关键帧时域位置最近的非关键帧。由于与第一非关键帧无参考依赖关系的非关键帧可能不止一个,将这些与第一非关键帧无参考依赖关系的非关键帧中与第一非关键帧时域位置最近的非关键帧确定为第二非关键帧,从而使得视频的卡顿时间尽量缩短,视频的容错效果达到最好。

可选的,解码端120通过解析接收到的码流数据,可以准确识别出码流数据中的视频帧是关键帧还是非关键帧,以及各个非关键帧的参考视频帧是哪一帧。因此,在位于两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧,包括但不限于如下三种方式中的任一种方式:

方式一:依序对位于两个关键帧之间且位于第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含用于表述非关键帧的直接和间接参考依赖关系的参考依赖关系信息;根据当前分析的码流数据中的参考依赖关系信息判断当前分析的码流数据对应的非关键帧与第一非关键帧是否存在参考依赖关系;将判断出的第一个与第一非关键帧无参考依赖关系的非关键帧作为符合解码条件的第二非关键帧。

该种方式是以视频编码时,将非关键帧的直接和间接参考依赖关系以参考依赖关系信息的方式添加在该非关键帧的码流数据中的情况为前提,该参考依赖关系信息可以包括非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识。因而该种方式在具体实施时,可以通过将解码失败的非关键帧的标识与参考依赖关系信息中包括的视频帧的标识进行比对,如果参考依赖关系信息中包括解码失败的非关键帧的标识,则说明与该解码失败的非关键帧之间存在参考依赖关系,这样的非关键帧不满足解码条件。

以图2b所示的编码码流为例,在对图2b所示的非关键帧进行编码时,各个非关键帧的参考依赖关系可如图3b所示。以解码失败的第一非关键帧为p13为例,两个关键帧i1和i2之间且位于第一非关键帧之后的非关键帧包括非关键帧p14至非关键帧p33等,依序先对非关键帧p14的码流数据进行分析,从图3b可知,非关键帧p14依赖于非关键帧p13进行编码,因而非关键帧p14不是符合解码条件的非关键帧。而非关键帧p15和非关键帧p16同非关键帧p14一样,均与非关键帧p13存在间接依赖关系,因而非关键帧p15和非关键帧p16也不是符合解码条件的非关键帧。接下来,依序对非关键帧p17的码流数据进行分析,由于非关键帧p17的参考视频帧为关键帧i1,即非关键帧p17与第一非关键帧p13不存在参考依赖关系,且是非关键帧p13之后与非关键帧p13不存在参考依赖关系的非关键帧中离非关键帧p13最近的非关键帧,因而非关键帧p17为搜索到的第二非关键帧。

方式二:依序对位于两个关键帧之间且位于第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含直接参考的参考视频帧标识;每分析一个码流数据后,检测分析出的参考视频帧标识所对应的参考视频帧是否已被成功解码;将检测出的第一个已被成功解码的参考视频帧所对应的非关键帧作为符合解码条件的第二非关键帧。

该种方式是以视频编码时,将非关键帧直接参考的参考视频帧标识添加在该非关键帧的码流数据中的情况为前提。具体实施时,通过解析码流数据可以获取到编码时添加进码流数据中的该非关键帧直接参考的参考视频帧标识。在每分析出一个参考视频帧标识时,检测该参考视频帧标识对应的参考视频帧是否已被成功解码,若参考视频帧已被成功解码,则参考该参考视频帧的非关键帧可以成功解码,也说明该非关键帧是与第一非关键帧无参考依赖关系的非关键帧,则将该视频帧确定为符合解码条件的第二非关键帧,若参考视频帧尚未被成功解码,则继续对该视频帧之后的下一个视频帧的码流数据进行分析。直到找到符合解码条件的第二非关键帧。

以图2b所示的编码码流为例,在对图2b所示的非关键帧进行编码时,各个非关键帧的参考依赖关系可如图3b所示。以解码失败的第一非关键帧为p21为例,两个关键帧i1和i2之间且位于第一非关键帧p21之后的非关键帧包括非关键帧p22至非关键帧p33等,依序先对非关键帧p22的码流数据进行分析。从图3b可知,非关键帧p22的参考视频帧为非关键帧p21,即非关键帧p22对应的码流数据中包括的参考视频帧的标识为非关键帧p21的标识,由于非关键帧p21解码失败,即非关键帧p22的参考视频帧解码失败,因而非关键帧p22不是符合解码条件的非关键帧。而非关键帧p23和非关键帧p24同非关键帧p22一样,均间接参考非关键帧p21,其各自的参考视频帧均解码失败,因而非关键帧p23和非关键帧p24也不是符合解码条件的非关键帧。接下来,依序对非关键帧p25的码流数据进行分析,由于非关键帧p25的参考视频帧为非关键帧p17。若非关键帧p17已经成功解码,则非关键帧p25与第一非关键帧p21不存在参考依赖关系,且非关键帧p17是检测出的第一个被成功解码的参考视频帧,也就是说,非关键帧p17对应的非关键帧p25是与非关键帧p21不存在参考依赖关系的非关键帧中离非关键帧p21最近的非关键帧,因而非关键帧p25为搜索到的第二非关键帧。

方式三:获取与编码端预先协商的参考依赖关系信息,参考依赖关系信息包括非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;根据参考依赖关系信息在位于两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧。

该种方式三与上述方式一均是根据参考依赖关系信息搜索第二非关键帧,区别在于方式一是对码流数据一一进行分析得到参考依赖关系信息,而方式三是与编码端预先协商得到。由于方式三与方式一的搜索过程原理相同,此处不再对方式三进行赘述,具体详见上述方式一。

无论采用上述哪种方式搜索第二非关键帧,为了能够更好的理解搜索第二非关键帧的过程,请参见图3b所示的视频解码的码流示意图。图3b中示出的解码码流与图2b中示出的编码码流是相对应的。解码顺序为:对应的第1优先级的非关键帧无法成功解码时,继续解码下一优先级高于1且没有依赖该非关键帧编码的非关键帧或者下一关键帧;对应的第2优先级的非关键帧无法成功解码时,继续解码下一优先级不低于2且没有依赖该非关键帧编码的非关键帧或者下一关键帧;对应的第3优先级的非关键帧无法成功解码时,继续解码下一优先级不低于3且没有依赖该非关键帧的的非关键帧或者下一关键帧。在解码过程中,当第1优先级的非关键帧p2或p3或p4解码失败时,解码端可以跳到距离最近的第2优先级的非关键帧p5继续解码;当第2优先级的非关键帧p13解码失败时,解码端可以跳到距离最近的第3优先级的非关键帧p17继续解码;当第2优先级的非关键帧p21解码失败时,解码端继续解码第2优先级的非关键帧p25;当第3优先级的非关键帧p33解码失败时,由于后面没有符合解码条件的第二非关键帧,解码端继续解码第二关键帧i2,即继续解码下一关键帧。

步骤302,获取第二非关键帧的参考视频帧,参考视频帧是第二非关键帧在编码时根据第二非关键帧的优先级确定的。

解码端通过分析第二非关键帧的码流数据,可以确定出第二非关键帧的参考视频帧是哪一帧。由于对第二非关键帧进行解码时,需要结合第二非关键帧的参考视频帧和第二非关键帧的码流数据,因此解码端需要获取第二非关键帧的参考视频帧。

步骤303,利用第二非关键帧的参考视频帧对第二非关键帧进行解码。

由于非关键帧在编码时基于参考视频帧实现,因此在将非关键帧恢复成视频图像时,需要结合参考视频帧的数据和非关键帧码流数据来对非关键帧的视频图像数据进行恢复。

当第二非关键帧的参考视频帧已经被成功解码时,则利用解码后的参考视频帧的数据以及第二非关键帧的码流数据对第二非关键帧进行解码。

当没有搜索到符合解码条件的第二非关键帧时,解码端120会对下一关键帧进行解码,即对相邻的两个关键帧中在后的关键帧进行解码。

在正常解码的情况下,解码端结合非关键帧码流数据以及对应的参考视频帧就可以完成解码。但在实际应用中,由于通信网络的信号较差,码流数据在传输过程中可能会产生数据丢包的情况,或者在解码过程中发生解码失败的情况,针对这些情况,与图2b中的视频编码对应的,图3b中举例说明了部分非关键帧解码失败后的容错措施。

如图3b所示,在解码过程中,当非关键帧p2或非关键帧p3或非关键帧p4解码出错时,由于非关键帧p5不直接或间接参考非关键帧p2或非关键帧p3或非关键帧p4进行编码,解码端可以跳到非关键帧p5继续解码;当非关键帧p13解码出错时,由于非关键帧p14直接参考非关键帧p13进行编码,非关键帧p15和非关键帧p16间接参考非关键帧p13进行编码,非关键帧p17不直接或间接参考非关键帧p13进行编码,因此解码端可以跳到非关键帧p17继续解码;当非关键帧p21解码出错时,由于非关键帧p22直接参考非关键帧p21进行编码,非关键帧p23和非关键帧p24间接参考非关键帧p21进行编码,非关键帧p25不直接或间接参考非关键帧p21进行编码,因此解码端继续解码非关键帧p25;当非关键帧p33解码出错时,解码端继续解码第二关键帧i2,即继续解码下一关键帧。

很显然,符合解码条件的第二非关键帧必须同时满足第二非关键帧的参考视频帧在解码失败的第一非关键帧之前,并且第二非关键帧的参考视频帧已被成功解码。在从解码失败的第一非关键帧向后搜索符合解码条件的第二非关键帧时,为了尽快确定出能够被成功解码的第二非关键帧,因此被符合解码条件的第二非关键帧是距离第一非关键帧时域最近的能够被成功解码的非关键帧。

因此,在非关键帧解码失败时,向后搜索符合解码条件的第二非关键帧继续解码,可以尽快恢复由于中间不能解码的非关键帧造成的卡顿问题。

可选的,在实际应用中,可以将本发明实施例中的视频解码方法与请求插入关键帧的方法结合以达到更好的视频播放效果。比如,在第一非关键帧解码失败时,通过本发明实施例所提供的视频解码方法在已接收到的码流数据中搜索符合解码条件的第二非关键帧或关键帧,若搜索到符合解码条件的第二非关键帧或关键帧,则继续解码,若没有搜索到符合解码条件的第二非关键帧或关键帧,则向编码端发起插入关键帧的请求,在接收到编码端发送的重新编码的关键帧码流数据后,继续对接收到的关键帧码流数据进行解码。

综上所述,本发明实施例提供的视频解码方法,通过在对非关键帧解码失败后,在位于解码失败的非关键帧之后的非关键帧中搜索符合解码条件的非关键帧,而该符合解码条件的非关键帧为与解码失败的非关键帧无参考依赖关系的非关键帧,因而可以从符合解码条件的非关键帧处恢复解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频播放质量。

图4是本发明一个实施例提供的视频编码装置的结构方框图,该视频编码装置应用在图1所示的编码端110中。该视频编码装置可以包括:第一确定模块401、第二确定模块402和编码模块403。

第一确定模块401,用于执行上述步骤201;

第二确定模块402,用于执行上述步骤202;

编码模块403,用于执行上述步骤203。

综上所述,本发明实施例提供的视频编码装置,通过在编码时,将不同级别的非关键帧按不同的规律跳帧参考编码,使得在对非关键帧解码失败后,通过在位于解码失败的非关键帧之后的非关键帧中搜索符合解码条件的非关键帧,而该符合解码条件的非关键帧为与解码失败的非关键帧无参考依赖关系的非关键帧,因而可以从符合解码条件的非关键帧处恢复解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频播放质量。

需要说明的是:上述实施例中提供的视频编码装置在进行编码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将编码端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频编码装置与视频编码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5是本发明一个实施例提供的视频解码装置的结构方框图,该视频解码装置应用在图1所示的解码端120中。该视频解码装置可以包括:搜索模块501、获取模块502和解码模块503。

搜索模块501,用于实现上述步骤301的功能。

获取模块502,用于实现上述步骤302的功能。

解码模块503,用于实现上述步骤303的功能。

在一种可能的实现方式中,搜索模块501,包括:

第一搜索单元,用于在两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的非关键帧。

第一确定单元,用于在第一搜索单元搜索到的符合解码条件的非关键帧中,将与第一非关键帧时域位置最近的非关键帧确定为第二非关键帧。

在一种可能的实现方式中,搜索模块501,包括:

第一分析单元,用于依序对位于两个关键帧之间且位于第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含用于表述非关键帧的参考依赖关系信息,参考依赖关系信息包括非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;

判断单元,用于根据当前分析的码流数据中的参考依赖关系信息判断当前分析的码流数据对应的非关键帧与第一非关键帧是否存在参考依赖关系;

第二确定单元,用于将判断出的第一个与第一非关键帧无参考依赖关系的非关键帧作为符合解码条件的第二非关键帧。

在另一种可能的实现方式中,搜索模块501,包括:

第二分析单元,用于依序对位于两个关键帧之间且位于第一非关键帧之后的非关键帧的码流数据进行分析,每个非关键帧的码流数据包含直接参考的参考视频帧标识;

检测单元,用于每分析一个码流数据后,检测分析出的参考视频帧的标识所对应的参考视频帧是否已被成功解码;

第三确定单元,用于将检测出的第一个已被成功解码的参考视频帧所对应的非关键帧作为符合解码条件的第二非关键帧。

在另一种可能的实现方式中,搜索模块501,包括:

获取单元,用于获取与编码端预先协商的参考依赖关系信息,参考依赖关系信息包括非关键帧在编码时直接和间接参考的参考视频帧标识和/或参考关系标识;

第二搜索单元,用于根据参考依赖关系信息在位于两个关键帧之间且位于第一非关键帧之后的非关键帧中搜索符合解码条件的第二非关键帧。

综上所述,本发明实施例中提供的视频解码装置,由于在编码时,将不同级别的非关键帧按不同的规律跳帧参考编码,因而在对非关键帧解码失败后,通过在位于解码失败的非关键帧之后的非关键帧中搜索符合解码条件的非关键帧,而该符合解码条件的非关键帧为与解码失败的非关键帧无参考依赖关系的非关键帧,因而可以从符合解码条件的非关键帧处恢复解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频播放质量。

需要说明的是:上述实施例中提供的视频解码装置在进行解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将解码端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频解码装置与视频解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明一个实施例提供的视频编解码系统的结构方框图,该系统包括视频编码装置601及视频解码装置602;

其中,视频编码装置601如上述图4所示实施例提供的视频编码装置,视频解码装置602如上述图5所示实施例提供的视频解码装置。

本实施例提供的系统,通过视频编码装置在编码时,将不同级别的非关键帧按不同的规律跳帧参考编码,使得在视频解码装置对非关键帧解码失败后,通过在位于解码失败的非关键帧之后的非关键帧中搜索符合解码条件的非关键帧,而该符合解码条件的非关键帧为与解码失败的非关键帧无参考依赖关系的非关键帧,因而可以从符合解码条件的非关键帧处恢复解码,从而减少了无法被成功解码的非关键帧的数量,缩短了视频卡顿的时间,进而提高视频质量。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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