一种视频编码码流的播放控制方法及系统与流程

文档序号:11844795阅读:426来源:国知局
一种视频编码码流的播放控制方法及系统与流程

本发明属于视频监控技术领域,特别涉及一种视频编码码流的播放控制方法及系统。



背景技术:

视频编码是对动态图像的编码,将模拟图像信号数字化过程,该过程可以实现图像频带压缩,降低或消除数字图像之间的信息冗余度,使视频的传输信道容量小于模拟传输时的信道容量。

视频编码一般通过视频编码器来实现。传统视频编码器,一般将编码帧分为I帧、P帧和B帧三种。

在视频接收端通常会对接收到发送的视频编码码流,利用播放器将编码帧解码后显示相应的数据对应的对象,如利用通用播放器播放该码流编码帧所对应的视频图像等。通用播放器:是指市面上流行的,或者在广泛使用的播放器应用软件。如VLC多媒体播放器(简称VLC,Visible Light Communication),暴风影音,微软的media player等等。其都是按照时间戳对编码帧相应的数据进行播放。

现有技术中,上述传统编码器的解码方式是先解码I帧,再按照顺序依次解码,在编码帧数量较多的情况下进行解码时,尤其P帧和B帧的解码还需要参考其他帧,导致在随机访问时,需要解码的编码帧数量过多,解码消耗较大、且效率低。

因此,有必要基于现有的编码码流的播放控制方法提出一种新型的视频编码码流的播放控制方法,提高解码效率。



技术实现要素:

本发明的目的是为避免上述改进的视频编码码流在利用通用播放器播放时可能出现的I帧播放停留时间过长的缺陷,提供一种视频编码码流的播放控制方法及系统,解决改进的编码码流在播放时,显示解码的I帧数据期间可能出现的异常时间停留问题。

为解决上述问题,本发明的一个方面提供了一种编码码流的播放控制方法,包括:判断从所接收的视频编码码流中提取的编码帧是否为I帧;若提取的所述编码帧是I帧,则根据提取的所述I帧和/或其后相邻的编码帧的帧信息,对所述I帧进行显示控制。

本发明的又一个方面提供了一种编码码流的播放控制系统,包括:提取装置,用于提取所接收的视频编码码流中的编码帧;判断装置,用于判断从所接收的视频编码码流中提取的编码帧是否为I帧;当所述判断装置的判断结果为I帧时,向所述显示装置发送I帧信号;所述显示控制装置,用于根据所述I帧和/或其后相邻的编码帧的帧信息,对所述I帧进行显示控制。

有益效果:本发明通过在I帧对应的数据(如视频图像)显示前进行检测,确定当前I帧和I帧后的编码帧的信息来快速判断该I帧对应的数据是否被显示,从而克服I帧对应的数据可能在播放中出现的异常长时间停留的缺陷。并且,该播放方式并不限于适用于改进的编码码流的播放,也适用于传统的编码码流的播放。

附图说明

图1是根据现有技术的传统编码帧的参考关系的一实施例的示意图;

图2是根据本发明的视频编码码流中编码帧的参考关系的一实施例的示意图;

图3是根据本发明的视频编码码流中编码帧的快速随机访问的一实施例的示意图;

图4是根据本发明的视频编码码流的播放控制方法的一实施例的流程图;

图5是根据本发明的方法中基于时间戳差值的I帧显示控制的一实施例的流程图;

图6是根据本发明的方法中基于时间戳的I帧显示控制的另一实施例的流程图;

图7是根据本发明的方法中基于序号的I帧显示控制的一实施例的流程图;

图8是根据本发明的方法中基于时间戳差值和帧率信息的I帧显示控制的一实施例的流程图;

图9是根据本发明的方法中基于相关标记的I帧显示控制的一实施例的流程图;

图10是根据本发明的方法中基于指令的I帧显示控制的一实施例的流程图;

图11是根据本发明的方法中基于配置信息的I帧显示控制的一实施例的 流程图;

图12是根据本发明的视频编码码流的播放控制系统的一实施例的结构示意图;

图13是根据本发明的系统中基于时间戳差值的I帧显示控制的一实施例的结构示意图;

图14是根据本发明的系统中基于时间戳的I帧显示控制的另一实施例的结构示意图;

图15是根据本发明的系统中基于序号的I帧显示控制的一实施例的结构示意图;

图16是根据本发明的系统中基于时间戳差值和帧率信息的I帧显示控制的一实施例的结构示意图;

图17是根据本发明的系统中基于相关标记的I帧显示控制的一实施例的结构示意图;

图18是根据本发明的系统中基于指令的I帧显示控制的一实施例的结构示意图;

图19是根据本发明系统中基于配置信息的I帧显示控制的一实施例的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结 构和技术的描述,以避免不必要地混淆本发明的概念。

下面先介绍为说明清楚本发明而描述的一实施例中用到的改进的视频编码码流的情形。

I帧是视频编、解码标准规定的一种帧类型,I帧采用帧内预测编码方式,将一帧图像的数据完整保留,是一种自带图像全部数据的独立帧,在解码时,I帧可以独立解码出一帧图像,解码过程不依赖于其他帧,即仅需自身就可以解码出一个完整图像,无需参考其他帧。

P帧为前向预测帧,P帧没有完整图像的数据,而是本帧跟之前的I帧或P帧的差别,在解码时,其参考前面的P帧或I帧,将之前的I帧或P帧与本帧叠加,来生成最终图像。

B帧为双向差别帧(双向预测帧),B帧记录了本帧与前、后帧的差别,在解码时,不仅要取得之前的图像,还要解码之后的图像,即其既参考前面的帧,也参考后面的帧,将前、后图像与本帧的差别数据叠加,才能取得最终的图像。P帧和B帧都需要参考其他帧,与其他帧存在依赖关系,仅通过自身是无法解码出一个完整图像的。

图1是根据现有技术的传统编码帧的参考关系的一实施例的示意图。

按照图1的传统编码帧的参考关系,码流播放时,先解码I帧再将其他P、B帧解码,进而播放对应的帧数据。一般地,将I帧、以及与该I帧存在参考关系的P帧、B帧统称为一个图像组或称图像集合(Group of Pictures,简称GOP)。

针对编码后的视频编码码流而言,可随机的访问码流中的一帧图像,为了实现可随机的访问,需要先定位目标帧所属GOP中的I帧,再顺序解码目 标帧前面的所有I帧、P帧和B帧。但是,传统的视频编码码流中的编码帧数量较多,尤其P帧和B帧的解码还需要参考其他帧,导致在随机访问时,需要解码的编码帧数量过多,解码消耗较大、且效率低。

对此,本发明的申请人对视频编码进行了改进。提出了一种降低码率和解码消耗的视频编码方法和编码码流。该改进的编码方法生成的编码码流中可以包含以下各类型的编码帧:I帧、刷新P帧、普通P帧。

图2是根据本发明的申请人改进后的视频编码码流中编码帧的参考关系的一实施例的示意图。

图1所示编码帧示意图中,由于参考关系复杂,如图2所示,改进后的码流的几种类型的编码帧和GOP的描述如下:

I帧:仍然是传统的一种内预测编码自带全部数据的独立帧,可以独立解码,解码过程不依赖于其他的图像。

刷新P帧:为前向预测参考帧,其解码参考帧为位于该刷新P帧前面、且距离最近的I帧,由于刷新P帧的帧间预测参考I帧而不参考前面的P帧,也能在随机访问或视频回放时快速检索和快速解码,减少解码等待时间。

普通P帧:为另一类前向预测参考帧,其参考帧为与该普通P帧相邻的前一帧,以及位于该普通P帧前面且位置最近的I帧。

该视频编码码流中包括多个图像组,在每个图像组中包括存在参考关系的多个编码帧,即一个I帧及其后与其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合,如图2所示。在图像组GOP中,与刷新P帧、普通P帧存在直接或间接参考关系的I帧被称作参考I帧。

图3是根据本发明的申请人改进后的视频编码码流中编码帧的快速随机 访问的一实施例的示意图。

如图3所示,针对改进后的视频编码码流的编码帧,能够实现快速随机访问,而不必如传统的先解码I帧再顺序解码P11、P12……Pn1、Pn2、Pn3的方式,而是对普通P帧Pn3访问时仅解码同一个GOP中的I帧、Pn1、Pn2和Pn3即可达到定位目的,省略解码很多中间帧(如省略了P11、P12一直到Pn1之前的帧等所有中间帧)。

由该改进的编码码流的编码帧参考关系来看,如图2所示,这类码流的特点是I帧间隔很大,可间隔几分钟出现一个I帧即低码率的码流。在两个I帧之间可以间隔性地出现刷新P帧、刷新P帧解码仅参考所在GOP的I帧。而刷新P帧中间又分布了普通P帧,普通P帧数据量小,进一步能降低码率。但由此,当视频编码码流是按照该改进的方式发送时、或者将这类码流存储下来,或者这类码流的发送端未将定位信息发送给接收端(解码端),很可能导致I帧和Pn1帧(刷新P帧)的时间戳相差太多,进而I帧对应的数据播放时停留时间过长,会使得用户产生视频播放卡死或异常的误解,影响用户良好的体验。

图4是根据本发明的视频编码码流的播放控制方法的一实施例的流程图。

下面以上述改进的视频编码码流及其编码帧为例子,结合图4描述本发明的视频编码码流的播放控制方法的一实施例。本实施例虽然以改进的视频编码码流为例子进行描述,但传统的码流也可以采用本发明的播放控制方法以避免I帧对应的数据在播放时出现的长时间停留异常。

其中,将该改进的编码码流的编码帧中,I帧的时间戳计为Ti,刷新P帧如图3所示Pn1的时间戳计为Tpn1,那么时间戳的差Td=Tpn1–Ti。理论上来 说,Td最大可接近于一个GOP的持续时间,而该改进的编码码流中的GOP持续时间可能是几分钟,即两个I帧之间间隔很大。一般情况下,通用播放器都是按时间戳播放的,I帧对应的数据播放(即I帧播放)的停留时间较长,直接影响使用者体验,可能会给使用者造成软件卡死或者软件异常的误解。

如图4所示,本发明的视频编码码流的播放控制方法包括下述步骤:

步骤S110,提取所接收的视频编码码流中的编码帧。

在一个实施方式中,视频编码码流可以是上述改进的视频编码码流,其编码帧中两个I帧之间的间隔很大。如图2、3所示。在一个实施方式中,可以由发送端发送该视频编码码流到接收端或者说解码端。该解码端例如:通用播放器等。

进一步,发送端发送的该码流可以由接收端依次接收,如该码流的I帧、Pn1帧(刷新P帧)、Pn2帧、Pn3帧……。

步骤S120,判断从所接收的视频编码码流中提取的编码帧是否为I帧。

在一个实施方式中,接收端依次接收到该码流中的编码帧,可以一一将码流中的编码帧提取并进行检测,即I帧、Pn1(刷新)帧、Pn2、Pn3等,进而,还可以通过I帧和Pn1帧(即码流在实际存储时,I帧之后的相邻编码帧)的帧信息情况来判断编码帧的类型等。例如,编码帧的帧信息中有关于编码帧类型的标记,可以由此判断是否为I帧。当然,判断提取的编码帧的类型的依据也不限于此,例如还可以是其位置、序号、数据量大小,等等。

其中,所述帧信息包括但不限于时间戳、序号、相关标记、显示控制指令和显示配置信息等。其中,时间戳是一个字符序列,能够唯一的标识某一时刻的时间。每帧数据都有时间戳。序号是指编码帧的帧号。相关标记是指 在封装层或编码层上标识码流类型或者帧类型的标记。显示控制指令是指定位信息,定位信息是指目标帧时间戳,帧号等信息,用于标识定位的目标信息,这不会影响编码帧时间戳。显示配置信息是指应用层对I帧的显示控制操作。

进一步,该判断即为一检测过程,是对于接收来到的编码码流的一个个编码帧,依次获得并检测,确定是否为I帧。

步骤S130,若否,则显示提取的所述编码帧。

在一个实施方式中,在步骤S110对提取的编码帧判断后确实不是I帧(即若否),那么可以正常解码编码帧,并将该编码帧对应的解码后的数据(如视频图像)由播放器显示出来给请求码流访问的用户观看。

步骤S140,若是,则根据提取的所述I帧和其后相邻的编码帧的帧信息,对所述I帧进行显示控制。

在一个实施方式中,在步骤S120对提取的编码帧确定是I帧(即若是),可以先对该I帧进行播放预处理,即确定最终显示该I帧对应的数据(如:视频图像),还是不显示该I帧对应的数据。

具体地,可以根据该视频编码码流的码流信息、视频码流的编码帧的帧信息(包括编码帧相关标记)、配置条件(配置信息)和/或传输过程的相关指令,等等来确定(包括计算后确定)是否显示该I帧。

其中,编码码流的码流信息包括码流帧率信息,而码流甚至其编码帧还包括在封装的时候在编码层或封装层等设置的各种标记或者说相关标记等,编码帧还包括有各种对应各自的帧信息(时间戳、序号等)。

其中,可以通过比较(I帧和其后相邻的编码帧的)时间戳差值与预设阈值的大小、比较(I帧和其后相邻的编码帧的)时间戳的大小、比较时间戳差值是否超出允许时间戳差值的误差范围,以及获得编码帧显示与否的相关标记和相关指令等等来确定最终是否显示该I帧。

另外,该传输过程中,发送端也可以提供对每个编码帧如对于I帧是否播放的相关指令,控制相应的编码帧是否显示。

进而,还可以在检测编码帧时,对于检测到或提取并判断为I帧的编码帧,预先设置配置信息,给出是否显示的指示。比如接收端提供有配置信息,在获得码流准备播放的过程中,指示检测或判断为I帧的编码帧是该码流的第一个I帧时不显示。当然,也可以指示其他的某特定I帧,如单数序号的I帧不显示,检测或判断一个编码帧是I帧且其帧信息中序号为单号1、3、5等,则不显示。

下面结合图5-11描述步骤S140中显示控制的几种具体实现过程或者说几种显示控制的条件。

图5是根据本发明的方法中基于时间戳差值的I帧显示控制的一实施例的流程图。如图5所示描述基于时间戳差值的I帧显示处理过程。

在本实施例中,可选的,以采用基于所述I帧时间戳和其后相邻的数据帧的时间戳作为是否播放I帧的参考因素为例子进行描述。

步骤S210,获取所述I帧的时间戳和其后相邻的编码帧的时间戳。

其中,I帧的帧信息中包含其时间戳,可以为Ti。其后相邻编码帧即刷新帧Pn1的帧信息中包含其时间戳,可以为Tpn1。

步骤S220,判断所述I帧的时间戳和其后相邻的编码帧的时间戳的差值 是否超过预设的阈值。

基于所述I帧的时间戳(如:Ti)和其后相邻的编码帧(如:Tpn1)的时间戳的差值(如:Td),计算得出所述I帧的时间戳和其后相邻的编码帧的时间戳的差值(如Td=Tpn1-Ti),判断所述差值是否超过预设的阈值。

其中,可以根据统计分析的方式、用户的体验好感度等需求,预先设置一个阈值。将该差值与该预设的阈值进行比较,确定该差值是否超过阈值或者大于等于阈值。例如,预设该阈值为2秒,判断Td是否大于或大于等于2秒。这里的例子中,超过可以根据需要设为大于或者大于等于等情形。

步骤S230,若确定为超过阈值时,不显示所述I帧,步骤S240,若确定为未超过阈值时,则显示所述I帧。

其中,根据判断的结果来控制是否显示所述I帧,可以是例如当差值Td大于或大于等于阈值2秒时,不显示该I帧;而当该Td未超过阈值,即小于等于该阈值2秒或者小于该阈值2秒时,显示所述I帧。由此,在I帧播放前进行检测,以控制该I帧是否显示,避免了I帧播放时异常长时间停留的情形的出现。

图6是根据本发明的方法中基于时间戳的I帧显示控制的另一实施例的流程图。下面结合图6所示描述基于时间戳的I帧显示处理过程。

在本实施例中,可选的,以采用基于所述I帧时间戳和其后相邻的数据帧的时间戳作为是否播放I帧的参考因素为例子进行描述。

步骤S310,获取所述I帧的时间戳和其后相邻的编码帧的时间戳。

具体例子可以参见步骤S210。

步骤S320,判断所述I帧的时间戳是否大于其后相邻的编码帧的时间戳。

比较所述I帧的时间戳与其后相邻的编码帧的时间戳,以确定所述I帧的时间戳是否大于其后相邻的编码帧的时间戳。

比如,承前述例子,判断I帧的Ti是否大于等于其后相邻的Pn1帧的Tpn1。

步骤S330,若确定为该I帧的时间戳超过其后相邻的编码帧的时间戳时则不显示所述I帧,步骤S340,若确定为未超过时则显示所述I帧。

一般情况下,所述I帧的时间戳比其所在GOP的数据帧的时间戳要小,如果I帧的时间戳大,可能是异常情况。另外,如果不想显示某个I帧,可以通过修改其时间戳来实现。

在一个实施方式中,根据判断的结果来控制是否显示所述I帧,可以是例如当Ti大于等于Tpn1时,不显示该I帧;而当该Ti小于Tpn1时,显示所述I帧。由此,在I帧播放前进行检测,以控制该I帧是否显示,避免了I帧播放时异常长时间停留的情形的出现。

图7是根据本发明的方法中基于序号的I帧显示控制的一实施例的流程图。下面结合图7所示描述基于序号的I帧显示处理过程。

在本实施例中,可选的,以采用基于所述I帧序号和其后相邻的编码帧的帧信息中的序号作为是否播放I帧的参考因素为例子进行描述。

步骤S410,获取所述I帧的序号和其后相邻的编码帧的序号。

其中,每个编码帧的帧信息中都包含有表明其在编码码流中顺序的序号。该I帧的帧信息中包含序号。而存储码流时,每个GOP中的I帧其后相邻的编码帧应当为刷新P帧,刷新P帧信息中也包含该刷新P帧的序号。

例如:所述I帧的序号为1,按照自然数的顺序设置,其后相邻的编码 帧即为刷新帧Pn1,其序号应当为2。

当然,也可以是按10为顺序间隔设置相邻编号的序号,如一个GOP中,I帧序号为100,其后相邻的编码帧即刷新P帧的序号为110,该刷新P帧后的相邻编码帧序号为120,……等等。根据需要编码帧的序号在编码帧存储时是设定好的即可。即可以预先设定好序号连续的规则。

前后两个例子中序号为:1、2、3……为连续的;序号为:110、120、130……也为连续的。

步骤S420,根据预先设定好的序号连续的规则,确定所述I帧的序号与其后相邻的编码帧的序号是否连续。

在本实施例中,所述I帧的序号与获得的其后的编码帧即一刷新P帧,二者应当为相邻的编码帧,二者的序号在正常情形下应当是连续的,由此作为判断依据。即按照I帧1、Pn1帧(刷新P帧)2、Pn2帧3……的形式。

步骤S430,当根据所述预先设定好的规则确定所述I帧的序号和其后相邻的编码帧的序号为连续时,显示所述I帧。步骤S430,当根据所述规则确定所述I帧的序号和其后相邻的编码帧的序号为不连续时,则不显示所述I帧。

一个实施方式中,当前的I帧的帧信息中其序号为1,但接收到的其后续最近的编码帧对应的帧信息中序号为5,则明显二者并不是实际上在编码码流中相邻的两个编码帧,该编码帧并不是该I帧同在的GOP中的刷新P帧,即与该I帧不相连。因而,当前的I帧可能出现了异常长时间停留,则不显示该I帧。

承上述例子,该I帧序号为1,而获得的其后最近的编码帧的序号是2,表示该I帧后获得的相邻的编码帧就是应当位于该I帧后的刷新P帧:Pn1帧。二 者实际相邻,位于同一GOP,该I帧后就应当是该刷新P帧即Pn1帧。此时,显示所述I帧。

图8是根据本发明的方法中基于时间戳差值和帧率信息的I帧显示控制的一实施例的流程图。

下面结合图8所示描述基于时间戳差值和码流帧率信息的I帧显示控制过程。

在本实施例中,可选的,以采用基于所述I帧和其后相邻的编码帧的时间戳以及码流帧率信息作为是否播放I帧的参考因素为例子进行描述。其中,帧率(即Frame rate)是用于测量显示帧数的量度,表示每秒显示的帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。

步骤S510,获取所述I帧的时间戳和其后相邻的编码帧的时间戳。

具体例子可以参见步骤S210。如I帧的帧信息包含时间戳Ti,其后相邻的刷新帧Pn1的帧信息包含时间戳Tpn1。

步骤S520,根据所述获取的时间戳计算所述I帧的时间戳和其后相邻的编码帧的时间戳的差值。具体例子可以参见步骤S220。如,根据所述获取的时间戳得到时间戳的差值Td=Tpn1-Ti,等等。

步骤S530,获取所述视频编码码流的码流帧率信息。

在一个实施方式中,视频编码码流的码流信息中包括了码流帧率信息,该码流帧率信息是用于测量显示帧数的量度,即每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。

步骤S540,根据所述获取的码流帧率信息,计算允许时间戳差值。

假如,码流帧率信息为f=25,则计算出的两帧(I帧和其后相邻的编码 帧即刷新帧Pn1)之间的允许时间戳差值应该为Tf=40毫秒(ms),该40毫秒即为允许时间戳差值。

根据码流帧率信息计算允许时间戳差值的一个例子,如:按照25帧帧率为例,则邻近2帧的时间戳差值为40ms,即1000ms(1秒)/25(帧率)=40ms(每帧持续时间)。

进一步,还可以设置允许时间戳差值有一个正负误差10%的浮动:承上述例子,是指在上述允许时间戳差值40毫秒的基础上,允许正负误差10%的浮动,即表示指36~44都是合理范围。其中,所述正负允许误差可由用户自定义设置。

这里,步骤S510和步骤S530的执行顺序不唯一,可以先后执行包括步骤S510在前、步骤S530在后,或者步骤S530在前、步骤S510在后,也可以两个步骤同时执行,即步骤S510和步骤S530同时执行。

步骤S530,判断所述时间戳差值是否在所述允许时间戳差值的误差范围之内。

比较所述时间戳差值与所述允许时间戳差值,确定所述时间戳差值是否在所述允许时间戳差值的误差之内。

其中,根据所述I帧和其后相邻编码帧的时间戳差值与根据码流帧率信息计算得出的允许时间戳差值的误差范围进行比较,如Td是否在Tf的误差范围之内。

步骤S540,当所述时间戳差值在所述允许时间戳差值的误差范围之内时,显示所述I帧,当所述时间戳差值在所述允许时间戳差值的误差范围之外时,不显示所述I帧。

例如,如果I帧和刷新帧Pn1的时间戳差值Td在允许时间戳差值40ms(允许正负误差10%)之内即Td≤Tf,显示所述I帧。如果I帧和刷新帧Pn1的时间戳差值Td在允许时间戳差值40ms(允许正负误差10%)之外即Td>Tf,则不显示所述I帧。

图9是根据本发明的方法中基于相关标记的I帧显示控制的一实施例的流程图。下面结合图9所示描述基于相关标记的I帧显示处理过程。

在本实施例中,可选的,以采用基于所述I帧的相关标记作为是否播放I帧的参考因素为例子进行描述。

步骤S610,获取所述I帧在封装层或编码层的相关标记。

其中,视频编码码流在完成编码后需要进行封装。而对于编码码流来说,可以在其封装层或编码层为码流或者其中的每个编码帧等添加相关标记,在一个具体实施例中,该相关标记优选的是显示标记,用于标识某编码帧类型或者标识某编码帧显示/不显示等等。

步骤S620,在封装层或编码层,若所述I帧的相关标记指示为不需要显示,则不显示所述I帧。步骤S630,若所述I帧的相关标记指示为需要显示,则显示所述I帧。其中,若所述I帧在封装层或编码层中有一处为不显示标记,则不显示所述I帧。

图10是根据本发明方法中基于指令的I帧显示控制的一实施例的流程图。下面结合图10所示描述基于指令的I帧显示处理过程。

在本实施例中,可选的,以采用基于指令作为是否播放I帧的参考因素为例子进行描述。该指令可以是传输过程中,视频编码码流的发送端给出的与编码帧相关的指令,由指令来控制是否显示对应的编码帧。

步骤S710,根据所述视频编码码流的码流帧率信息获取发送端的指令。

发送端发送码流给接收端(解码端)例如:通用播放器时,码流中携带相应的码流帧率信息,所述码流帧率信息中有发送端的指令,以用于接收端对该码流完成接收、存储、解码、播放等处理。

步骤S720,根据所述发送端的指令获取显示控制指令。

在一个具体实施方式中,该发送端的指令优选的是显示控制指令,用于控制或者标识某编码帧显示/不显示等等。

步骤S730,若所述显示控制指令中存在控制要求不显示所述I帧的指令时,则不显示所述I帧。步骤S730,否则显示所述I帧。

其中,发送端在发送视频编码码流时,其码流帧率信息中会有相应的发送端指令,所述发送端指令中有相应的显示控制指令。根据显示控制指令,可以实时控制该码流中某个I帧显示或不显示。例如,在码流的传输过程中,发送端可以同步针对该码流发送显示控制指令,则所述显示控制指令实时控制I帧进行显示。

图11是根据本发明方法中基于配置信息的I帧显示控制的一实施例的流程图。下面结合图11所示描述基于配置信息的I帧显示处理过程。

在本实施例中,可选的,以采用基于所述I帧的配置信息作为是否播放I帧的参考因素为例子进行描述。

步骤S810,获取所述I帧的显示配置信息。

这里,显示配置信息是预先在系统中设置的I帧的显示配置信息,用于控制第一个I帧或者指定的I帧不显示。

步骤S820,根据所述显示配置信息,确定所述I帧是否为第一个I帧或 者是否为所述显示配置信息指定的I帧。

本步骤中,根据预设的显示配置信息,对所述I帧进行不显示控制。例如在检测或者判断来到的码流中提取出的编码帧是否为I帧之前,预先设置该显示配置信息为:来到的码流第一个I帧不显示,或者,指定特定的I帧不显示(例:来到的码流的其序号为单数的I帧不予显示),等等。

进一步,显示配置信息可以与I帧的相关信息如帧信息、码流的相关信息如帧率信息、层信息、等等有关。

进一步,I帧是否为所述显示配置信息指定的I帧,可以根据该I帧的帧信息中的序号、时间戳、等等来与显示配置信息中指定的条件进行对比。

步骤S830,若所述I帧是第一个I帧或者是所述显示配置信息指定的I帧,则不显示所述I帧,否则显示所述I帧。

例如,可配置第一个I帧或者指定I帧不显示。

图5-11中已经具体描述,关于步骤S140对I帧显示控制的若干执行条件,可以单独将图5-11中的一个执行条件作为控制显示所述I帧的条件,也可以将图5-11中的执行条件进行任意组合,作为控制显示所述I帧的条件。具体例如:将图5所述基于时间戳差值的例子和图7所述基于序号的例子组合,作为确定是否播放I帧的条件,(1)先基于序号确定是否连续,若序号连续则根据时间戳差值确定是否在阈值内,若在阈值外即便是连续的也不能播放;(2)若序号不连续则不能播放。等等。

下面将结合附图描述本发明的视频编码码流的播放控制系统的实施例。本发明的系统与本发明的方法相对应。

图12是根据本发明的视频编码码流的播放控制系统的一实施例的结构 示意图。

如图12所示,该系统至少包括:提取装置110、判断装置120、显示装置130和显示控制装置140。

提取装置110用于提取所接收的视频编码码流中的编码帧。该装置的具体处理和功能可以参见对步骤S110的具体描述。

判断装置120与所述提取装置110连接,用于判断提取的所述编码帧是否为I帧。该装置的具体处理和功能可以参见对步骤S120的具体描述。

显示装置130与所述判断装置120连接,用于若提取的所述编码帧不是I帧时,显示提取的所述编码帧。该装置的具体处理和功能可以参见对步骤S130的具体描述。

显示控制装置140与所述所述判断装置120连接,用于若提取的所述编码帧是I帧时,根据提取的所述I帧和/或其后相邻的编码帧的帧信息,对所述I帧进行显示控制。该装置的具体处理和功能可以参见对步骤S140的具体描述以及图5-11所示的几种具体的I帧显示控制的例子。

进一步,结合图13-19,描述显示控制装置140还可以包括以下部分:第一时间戳装置200、第二时间戳装置300、序号装置400、帧率时间戳装置500、相关标记装置600、显示控制指令装置700、显示配置信息装置800。

第一时间戳装置200的具体处理和功能可以参见对步骤S140的具体描述以及图5所示的例子。在一个实施方式中,还包括:

获取模块210,用于获取所述I帧的时间戳和其后相邻的编码帧的时间戳,具体处理和功能可以参见对步骤S210的具体描述。

第一判断模块220,用于判断所述I帧的时间戳和其后相邻的编码帧的 时间戳的差值是否超过预设的阈值。

基于所述I帧的时间戳(如:Ti)和其后相邻的编码帧(如:Tpn1),计算所述时间戳的差值(如:Td=Tpn1-Ti,),判断所述时间戳的差值(Td)是否超过阈值,具体处理和功能可以参见对步骤S220的具体描述。

第一控制模块230,用于若所述第一判断模块220的判断结果为超过阈值,不显示所述I帧,若所述第一判断模块220的判断结果为未超过阈值,则显示所述I帧。具体处理和功能可以参见对步骤S230和步骤S240的具体描述。

第二时间戳装置300,的具体处理和功能可以参见对步骤S140的具体描述以及图6所示的例子。在一个实施方式中,还包括:

第二判断模块320与所述获取模块210连接,用于判断所述获取模块210获取的所述I帧的时间戳是否大于其后相邻的编码帧的时间戳。具体处理和功能可以参见对步骤S320的具体描述。

第二控制模块330,用于若所述第二判断模块320的判断结果为所述I帧的时间戳超过其后相邻的编码帧的时间戳,则不显示所述I帧,若所述第二判断模块320的判断结果为未超过,则显示所述I帧。具体处理和功能可以参见对步骤S330和步骤340的具体描述。

序号装置400的具体处理和功能可以参见对步骤S140的具体描述以及图7所示的例子。在一个实施方式中,还包括:

序号获取模块410,用于获取所述I帧的序号和其后相邻的编码帧的序号。具体处理和功能可以参见对步骤S410的具体描述。

第三判断模块420,用于根据预设的序号连续的规则,判断所述I帧的 序号与获得的其后相邻的编码帧的序号是否连续。具体处理和功能可以参见对步骤S420的具体描述。

第三控制模块430,用于若所述第三判断模块(420)的判断结果为所述I帧的序号和其后相邻的编码帧的序号为不连续,不显示所述I帧,若所述第三判断模块420的判断结果为连续,则显示所述I帧。具体处理和功能可以参见对步骤S430和步骤S440的具体描述。

帧率时间戳装置500的具体处理和功能可以参见对步骤S140的具体描述以及图8所示的例子。在一个实施方式中,还包括:

时间戳差值计算模块520与所述获取模块210连接,用于计算所述获取模块210获取的所述I帧的时间戳和其后相邻的编码帧的时间戳,以计算所述I帧的时间戳和其后相邻的编码帧的时间戳差值。具体处理和功能可以参见对步骤S520的具体描述。

帧率信息获取模块530,用于获取所述视频编码码流的码流帧率信息。具体处理和功能可以参见对步骤S530的具体描述。

允许值计算模块540,用于根据所述获取的码流帧率信息计算允许时间戳差值。具体处理和功能可以参见对步骤S540的具体描述。

第四判断模块550,用于判断所述时间戳差值是否在所述允许时间戳差值的误差范围之内。具体处理和功能可以参见对步骤S550的具体描述。

第四控制模块560,用于当所述时间戳差值在所述允许时间戳差值的误差范围之内时,显示所述I帧,当所述差值在所述允许时间戳差值的误差范围之外时,不显示所述I帧。具体处理和功能可以参见对步骤S560和步骤S570的具体描述。

相关标记装置600的具体处理和功能可以参见对步骤S140的具体描述以及图9所示的例子。在一个实施方式中,还包括:

相关标记获取模块610,用于获取所述I帧的在封装层或编码层的相关标记。具体处理和功能可以参见对步骤S610的具体描述。

第五控制模块620,用于在封装层或编码层,若所述I帧的相关标记指示为不需要显示,则不显示所述I帧,若所述I帧的相关标记指示为需要显示,则显示所述I帧。具体处理和功能可以参见对步骤S620和步骤S630的具体描述。

显示控制指令装置700的具体处理和功能可以参见对步骤S140的具体描述以及图10所示的例子。在一个实施方式中,还包括:

发送端指令获取模块710,用于根据所述视频编码码流的码流帧率信息获取发送端的指令。具体处理和功能可以参见对步骤S710的具体描述。

显示控制指令分析模块720,用于根据所述发送端的指令,分析以获得与所述I帧相关的指令。具体处理和功能可以参见对步骤S720的具体描述。

第六控制模块730,用于若所述I帧的显示控制指令中控制要求不显示所述I帧的指令,则不显示所述I帧,否则显示所述I帧。具体处理和功能可以参见对步骤S730和步骤S740的具体描述。

显示配置信息装置800的具体处理和功能可以参见对步骤S140的具体描述以及图11所示的例子。在一个实施方式中,还包括:

显示配置信息获取模块810,用于获取所述I帧的显示配置信息。具体处理和功能可以参见对步骤S810的具体描述。

第七判断模块820,用于根据预设的显示配置信息,判断所述I帧是否 为第一个I帧或者是否为所述配置信息指定的I帧。具体处理和功能可以参见对步骤S820的具体描述。

第七控制模块830,用于若所述I帧是第一个I帧或者是所述显示配置信息指定的I帧,不显示所述I帧,否则显示所述I帧。具体处理和功能可以参见对步骤S830和所述步骤S840的具体描述。

由于本发明的系统对应的实施例中所涉及模块和结构实现的处理及功能基本相应于前述的各方法相关的实施例,参见图1-11,故系统包括其模块的实施例的描述中未详尽之处,可以参见前述方法相关的实施例中的相关说明,在此不做赘述。

通过本发明的方案,能够在实现快速随机定位解码帧的时候,预先检测提取出的码流中的编码帧,以便当提取到I帧时,在该I帧对应的数据(如视频图像)显示前,进行显示控制处理以快速判断确定该I帧对应的数据是否需要被显示,从而克服I帧对应的数据可能在播放中出现的异常长时间停留的缺陷。

总的来说,本发明的视频编码码流的播放控制方法和系统,在降低解码消耗快速随记访问解码帧,提高解码效率的同时,保证了编码帧播放中不会出现帧播放的顺畅无停滞感。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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