视频编码码流的编码、索引存储和访问方法及相应装置的制造方法

文档序号:10492660阅读:464来源:国知局
视频编码码流的编码、索引存储和访问方法及相应装置的制造方法
【专利摘要】本发明公开了一种视频编码码流的编码、索引存储和访问方法及相应装置。其中各方法包括:基于预设的编码算法编码获取的视频数据,获得包含多个I帧、刷新P帧等编码帧的视频编码码流,为该码流添加码流标记和/或为该码流中每个编码帧添加包括编码帧的类型信息的帧标记;在索引存储时根据编码帧的类型将对应的I帧、刷新P帧的信息作为索引记录形成索引,进而能低消耗地完成对该码流的访问。本发明利用码流的编码帧的变化、码流和/或编码帧的标记、建立码流的索引存储等方式,使得访问视频编码码流时能通过索引和标记快速、直接地定位目标帧,仅提取目标帧及其参考的编码帧,很大程度降低解码消耗。
【专利说明】
视频编码码流的编码、索弓I存储和访问方法及相应装置
技术领域
[0001]本发明涉及视频监控技术领域,特别涉及一种视频编码码流的编码、索引存储和访问方法及相应装置。
【背景技术】
[0002]视频编码是对动态图像的编码,将模拟图像信号数字化过程,该过程可以实现图像频带压缩,降低或消除数字图像之间的信息冗余度,使视频的传输信道容量小于模拟传输时的信道容量。
[0003]视频编码一般通过视频编码器来实现。传统视频编码器,一般将编码帧分为I帧、P帧和B帧三种。
[0004]I帧是视频编、解码标准规定的一种帧类型,I帧采用帧内预测编码方式,将一帧图像的数据完整保留,是一种自带图像全部数据的独立帧,在解码时,I帧可以独立解码出一帧图像,解码过程不依赖于其他帧。
[0005]P帧为前向预测帧,P帧没有完整图像的数据,而是本帧跟之前的I帧或P帧的差另Ij,在解码时,将之前的I帧或P帧与本帧叠加,来生成最终图像。
[0006]B帧为双向差别帧,B帧记录了本帧与前、后帧的差别,在解码时,不仅要取得之前的图像,还要解码之后的图像,将前、后图像与本帧的差别数据叠加,才能取得最终的图像。
[0007]传统的I帧、P帧和B帧的参考关系如图1所示。其中,I表示I帧、B表示B帧、P表示P帧。I帧仅需自身就可以解码出一个完整图像,无需参考其他帧。P帧是前向预测帧,其参考前面的P帧或I帧帧是双向预测帧,它既参考前面的帧,也参考后面的帧,因此P帧和B帧都需要参考其他帧,与其他帧存在依赖关系,仅通过自身是无法解码出一个完整图像的。一般地,将I帧、以及与该I帧存在参考关系的P帧、B帧统称为一个图像组(Group of Pictures,简称 GOP)。
[0008]针对编码后的视频编码码流而言,可随机的访问码流中的一帧图像,为了实现可随机的访问,需要先定位目标帧所属GOP中的I帧,再顺序解码目标帧前面的所有I帧、P帧和B帧。但是,因为现有视频编码码流中的编码帧数量较多,尤其P帧和B帧的解码还需要参考其他帧,这样,导致在随机访问时,需要解码的编码帧数量过多,解码消耗较大、且效率低。

【发明内容】

[0009]本发明的一个目的是提供一种视频编码码流的访问方法和装置,以解决传统视频编码的参考关系造成视频编码码流的码率较高,在访问时解码消耗较大、效率较低的技术问题。
[0010]为实现上述目的,本发明是通过以下技术方案来实现的。
[0011]本发明提供了一种视频编码码流的编码方法,包括:基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流;为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,所述码流标记中包括表征该码流中是否添加有所述标记的信息;在所述帧标记中包括编码帧的类型信息。
[0012]进一步,采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧;采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧;采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考位于所述普通P帧前面且距离最近的帧;所述普通P帧参考与所述普通P帧相邻的前一个编码帧和/或位于所述普通P帧前面且距离最近的I帧。
[0013]进一步,所述视频编码码流中包括多个图像组,每个图像组包括一个I帧与其后同其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合。
[0014]本发明还提供一种视频编码码流的索引存储方法,包括:获取待访问的视频编码码流,以判断该码流是否包含码流标记;如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有帧标记;如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I帧信息和刷新P帧信息;如果该码流未包含码流标记,或者包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息;根据获得的I帧信息和刷新P帧信息,建立索引以存储。
[0015]进一步,如果该码流未包含码流标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息,包括:根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧;基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P巾贞,获得相应的I帧信息和刷新P帧信息。
[0016]进一步,根据获得的I帧信息和刷新P帧信息,建立索引以存储,还包括:将获得的I帧信息和刷新P帧信息作为索引节点的索引记录,形成索引以存储。
[0017]进一步,所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号;所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。
[0018]本发明又提供一种视频编码码流的访问方法,包括:基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧;根据所述定位,在所述视频编码码流中,获取相应于所述定位确定的位置处的所述目标帧以及所述目标帧参考的编码帧;将获取的所述目标帧以及所述目标帧参考的编码巾贞返回。
[0019]进一步,所述视频编码码流还包括:为所述视频编码码流添加的码流标记、和/或为所述视频编码码流中每个编码帧添加的帧标记。
[0020]进一步,所述视频编码码流还包括:1帧是参考其自身进行编码后获得的帧;刷新P帧是参考位于其前面且距离最近的I帧进行编码后获得的帧;普通P帧是参考与其相邻的前一帧、以及位于所述普通P帧前面且距离最近的I帧进行编码后获得的帧。
[0021]进一步,所述索引,还包括:索引记录;所述索引记录中的索引节点包括I帧信息或刷新P帧信息;所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号;所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。
[0022]进一步,基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧,包括:所述目标帧信息至少包括以下之一:目标帧的位置、帧号和时间戳;在索引的索引记录中确定是否存与所述目标帧信息匹配的索引节点;若是,则定位所述索引节点,并且根据所述索引节点,定位所述目标帧参考的编码帧的索引节点;若否,则定位与所述目标帧的位置、和/或帧号、和/或时间戳最接近的前一个编码帧的索引节点。
[0023]进一步,根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧还包括:如果所述目标帧为I帧,则所述目标帧参考的编码帧为所述目标帧本身,根据索引中的索引记录,确定所述I帧在所述视频编码码流中的位置,在所述视频编码码流中,获取所述I帧;如果所述目标帧参考的编码帧仅包括I帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、以及位于所述目标帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧和所述I帧;如果所述目标帧参考的编码帧包括I帧和刷新P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、以及位于所述刷新P帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述刷新P帧和所述I帧;如果所述目标帧参考的编码帧包括I帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述I帧、以及位于所述I帧和所述目标帧之间的普通P帧;如果所述目标帧参考的编码帧包括I帧、刷新P帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、位于所述刷新P帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述刷新P帧、所述I帧、以及位于所述刷新P帧和所述目标帧之间的普通P帧。
[0024]进一步,将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回,还包括:获得从所述视频编码码流返回的目标帧以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧;根据所述目标帧以及所述目标帧参考的编码帧在视频编码码流中帧号或时间戳,顺次解码获得的所述目标帧参考的编码帧以及所述目标帧。
[0025]本发明另一方面提供一种视频编码码流的编码装置,包括:编码模块,用于基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流;标记模块,用于为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,所述码流标记中包括表征该码流中是否添加有所述标记的信息;在所述帧标记中包括编码帧的类型信息。
[0026]进一步,编码模块还包括:采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧;采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧;采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考与所述普通P帧相邻的前一个编码帧和/或位于所述普通P帧前面且距离最近的I帧。
[0027]进一步,编码模块还包括:所述视频编码码流中包括多个图像组,每个图像组包括一个I帧与其后同其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合。
[0028]本发明另一方面还提供一种视频编码码流的索引存储装置,包括:第一判断模块,用于获取待访问的视频编码码流,以判断该码流是否包含码流标记;第二判断模块,用于如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有帧标记;按标记获取模块,用于如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I帧信息和刷新P帧信息;按解析获取模块,如果该码流未包含码流标记,或者包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息;索引建立模块,用于根据获得的I帧信息和刷新P帧信息,建立索引以存储。
[0029]进一步,按解析获取模块还包括:如果该码流未包含码流标记,根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧;基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P帧,获得相应的I帧信息和刷新P帧信息。
[0030]进一步,索引建立模块还包括:将获得的I帧信息和刷新P帧信息作为索引节点的索引记录,形成索引以存储。
[0031]进一步,所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号;所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。
[0032]本发明另一方面又提供一种视频编码码流的访问装置,包括:定位模块,用于基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧;获取模块,用于根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、所述参考的编码帧与目标帧之间的所有编码帧;返回模块,用于将获取的所述目标帧、、所述目标帧参考的编码帧、目标帧参考的编码帧、所述参考的编码帧与目标帧之间的所有编码帧返回。
[0033]进一步,所述视频编码码流还包括:为所述视频编码码流添加的码流标记、和/或为所述视频编码码流中每个编码帧添加的帧标记。
[0034]进一步,所述视频编码码流还包括:1帧是参考其自身进行编码后获得的帧;刷新P帧是参考位于其前面且距离最近的I帧进行编码后获得的帧;普通P帧是参考与其相邻的前一帧、以及位于所述普通P帧前面且距离最近的I帧进行编码后获得的帧。
[0035]进一步,所述索引,还包括:索引记录;所述索引记录中的索引节点包括I帧信息或刷新P帧信息;所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号;所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。
[0036]进一步,定位模块还包括:所述目标帧信息至少包括以下之一:目标帧的位置、帧号和时间戳;在索引的索引记录中确定是否存与所述目标帧信息匹配的索引节点;若是,则定位所述索引节点,并且根据所述索引节点,定位所述目标帧参考的编码帧的索引节点;若否,则定位与所述目标帧的位置、和/或帧号、和/或时间戳最接近的前一个编码帧的索引节点。
[0037]进一步,获取模块还包括:如果所述目标帧为I帧,则所述目标帧参考的编码帧为所述目标帧本身,根据索引中的索引记录,确定所述I帧在所述视频编码码流中的位置,从而获取模块在所述视频编码码流中,获取所述I帧;如果所述目标帧参考的编码帧仅包括I帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、以及位于所述目标帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧和所述I帧;如果所述目标帧参考的编码帧包括I帧和刷新P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、以及位于所述刷新P帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述刷新P帧和所述I帧;如果所述目标帧参考的编码帧包括I帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述I帧、以及位于所述I帧和所述目标帧之间的普通P帧;如果所述目标帧参考的编码帧包括I帧、刷新P帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、位于所述刷新P帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述刷新P帧、所述I帧、以及位于所述刷新P帧和所述目标帧之间的普通P帧。
[0038]进一步,返回模块还包括:获得从所述视频编码码流返回的目标帧、所述目标帧参考的编码帧、参考帧与目标帧之间的所有编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧;根据所述目标帧以及所述目标帧参考的编码帧在视频编码码流中帧号或时间戳,顺次解码获得的所述目标帧参考的编码帧以及所述目标帧。
[0039]本发明的有益效果在于:
[0040]本发明预先建立视频编码码流的索引,通过索引以及视频编码码流封装时添加的辅助信息(标识用的标记)直接定位目标帧,根据定位到的索引中的记录获得该目标帧在该视频编码码流中的位置,由此位置在视频编码码流中仅获取目标帧以及该目标帧参考的编码帧,而无需获取目标帧未参考的编码帧,由此,大大降低了解码消耗。
[0041]进一步地,本发明视频编码码流中的编码帧采用I巾贞、普通P帧和刷新P巾贞,并在封装层为该码流增加码流类型标记、以及为其每个编码帧添加帧标记以便对该类型的码流能够快速区分不同类型的编码帧,实现快速随机访问,并能快速建立索引。同时,由于这些帧标记,还可以在不解析编码层数据的情况下迅速获得帧的类型,在快速随机访问过程、快速建立索引过程中提高效率、简化过程。而从存储数据的角度,这些区分帧类型的帧标记,将帧类型记录在了存储索引结构中,在访问(如视频回放)定位时根据帧参考关系快速获取在GOP的目标帧(如I帧)、最近目标帧的前一个刷新P帧,进一步加快了定位过程。
[0042]另外,从视频远程访问(如视频远程回放)时,可以根据带宽情况和回放速度在发送视频编码码流的一端可以根据每帧帧类型(由帧标记标识的),优先丢弃普通P帧、再丢弃刷新P帧等,从而还能降低带宽的符合。相应地,在接收该视频编码码流需要进行解码回放的一端,则可以根据这些帧标记区分的帧类型,优先丢弃普通P帧,进一步降低解码压力,快速播放视频。
【附图说明】
[0043]图1是根据现有技术的传统编码帧的参考关系的一实施例的示意图;
[0044]图2是根据本发明的视频编码码流的访问方法的一实施例的流程图;
[0045]图3是根据本发明的视频编码码流的编码方法的一实施例的流程图;
[0046]图4是根据本发明的视频编码码流的索引存储方法的一实施例的流程图;
[0047]图5是根据本发明的视频编码码流的访问方法的一更详细的实施例的流程图;
[0048]图6是根据本发明的视频编码码流的访问方法的编码返回步骤S530涉及的解码的一实施例的流程图;
[0049]图7是根据本发明的视频编码码流的编码方法的码流和编码巾贞一实施例的TJK意图;
[0050]图8是根据本发明的视频编码码流的编码装置的一实施例的结构图;
[0051]图9是根据本发明的视频编码码流的索引存储装置的一实施例的结构图;
[0052]图10是根据本发明的视频编码码流的访问装置的一实施例的结构图。
【具体实施方式】
[0053]本发明的主要思想在于,通过编码帧及其参考关系在视频数据编码的改变,获得具有I帧、普通P帧和刷新P帧的编码码流,进而进行码流和/或编码帧的标记,以便降低码率;预先为编码码流建立索引以存储,以便通过快速建立索引、直接定位目标帧。这样,快速地定位被访问的帧并且仅获取目标帧以及目标帧参考的编码帧,而不获取目标帧未参考的编码帧,能很大程度上降低解码消耗。进一步地,为编码改变后获得的视频编码码流及其中编码帧添加码流标记、帧标记,能更快速区分不同的编码帧,建立索引,从而提高快速随机访问和索引建立的效率、简化过程、加快定位速度,等等。
[0054]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0055]下面结合图2所示流程图,描述根据本发明的视频编码码流的访问方法的一实施例主要流程。其中,经编码算法生成的视频编码码流中可以包含以下各类型的帧:
[0056]I帧:是一种自带全部数据的独立帧。在编码过程中,采用帧内预测编码算法,可以独立解码,其解码过程不会依赖于其他的图像。
[0057]刷新P帧:为前向预测参考帧。在编码过程中,采用前向的第一帧间预测编码算法。刷新P帧的参考帧为位于该刷新P帧前面、且距离最近的I帧。因而,由于刷新P帧的帧间预测参考I帧而不参考前面的P帧,也能在随机访问或视频回放时快速检索和快速解码,减少解码等待时间。
[0058]普通P帧:为前向预测参考帧。在编码过程中,采用前向的第二帧间预测编码算法,普通P帧的参考帧为与该普通P帧相邻的前一帧,和/或位于该普通P帧前面且位置最近的I帧。
[0059]图像组:视频编码码流中包括多个图像组,在每个图像组中包括存在参考关系的多个编码帧,这里的一个图像组是一个I帧及其后与其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合,如图7所示依据本发明的方法的一视频编码码流的示意图。在图像组GOP中,与刷新P帧、普通P帧存在直接或间接参考关系的I帧被称作参考I帧。进一步地,一个GOP中至少包括一个I帧。
[0060]其中,由图7所示的依据本发明的方法生成的视频编码码流,由所示的码流参考帧关系,I帧与I帧之间间隔大,例如Il到12之间,在两个I帧之间可间隔性出现刷新P帧、且刷新P帧的解码仅需要参考所在GOP的I帧,刷新P帧中间分布普通P帧,而普通P帧数据量小。这样的码流,就可以间隔几分钟出现一个I巾贞,有利于降低码率(编码出现的频率)。
[0061]步骤S210,在预先为视频编码码流对应的索引中,定位目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧。
[0062]其中,所述目标帧参考的编码帧包括I帧、和/或I帧的刷新P帧、和/或普通P帧。
[0063]其中,该目标帧信息可以来自前端的访问请求。
[0064]其中,索引是为了能够在视频编码码流中快速定位请求访问的目标帧。由此,可以在访问视频编码码流以获得目标帧之前,通过对码流中的不同类型的帧进行解析、或者根据编码时预先为不同编码帧添加的标记等,为该视频编码码流建立索引,以便借助该索引,快速定位目标帧及其直接或间接参考的编码帧等,即找到其在索引中的索引记录(如图4),从索引记录中确定各帧处于该视频编码码流中的位置,以实现快速访问和提取编码帧,提闻定位和访问效率。
[0065]进一步,为了快速地实现视频编码码流的访问,在建立索引之前,还可以对视频数据的编码做特定的编码码流处理,比如,在采用编码算法对视频数据进行编码后,于视频封装层增加辅助信息,例如码流标记、类型标记(帧标记或称帧类型标记)等,以标识或区分视频编码码流、码流中的不同编码帧等(如图3)。这样,如果将被访问的视频编码码流、以及该码流中的各个不同类型的编码帧具有明确标识的标记,则能够更快地区分并记录这些编码帧,从而能实现快速判断/识别访问的编码帧、迅速建立索引,以达到进一步的简化流程、提高效率的目的。
[0066]本发明的视频数据的编码和索引的建立,将在后面的实施例中举例说明。
[0067]其中,目标帧即目标编码帧,是指被请求访问的编码帧。例如:获取一视频编码码流并对其发出访问请求或者说对该码流中的某帧(某图像数据)发出访问请求,常见的如回放、播放等请求。该目标帧的类型包括为I帧、刷新P帧或普通P帧。
[0068]其中,目标巾贞参考的编码巾贞包括:1巾贞、或者还包括刷新P巾贞和/或普通P巾贞。进一步地,如果目标帧为I帧,则目标帧参考的编码帧为I帧自身。
[0069]其中,索引中包括了各个帧的记录(索引记录),记录中的信息包含各个帧所处码流中的位置信息。进一步,可以根据各个帧的类型标记在索引中迅速找到相应记录,由该记录获得在码流中的位置信息,提升定位效率,进而提升在码流中获取相应帧的效率。例如,索引记录具有的各个I帧的相关信息(I帧信息),其包含该帧类型、时间戳、帧号等帧信息,甚至该I帧位置(帧在码流中的位置信息)、长度等信息,但并不包含I帧本身的内容或者说数据。又例如,索引记录具有的各个刷新P帧的相关信息(刷新P帧信息),其包含该帧类型、刷新P帧时间戳、帧号等帧信息,甚至该刷新P帧偏移I帧的位置(帧在码流中的位置信息)、长度、偏移I帧的位置、该I帧长度等信息,但同样不包含刷新P帧本身的内容和数据。等等。
[0070]其中,该定位可以采用常见的定位算法,如二分法、顺序查找法等。比如由访问请求中的目标帧信息所包含的诸如上述索引记录中的帧类型、帧位置、帧号、时间戳等,可以定位到最靠近的I帧或刷新P帧等。
[0071]步骤S220,根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码中贞。
[0072]其中,可以在数据存储端存储该码流(例如:服务器、云等)。
[0073]其中,由步骤S210的描述可知索引中相应各个帧的记录中,记录了能够反映出目标帧的位置和其参考的编码帧的在码流中的位置的信息。根据预先建立的索引,定位各帧在该索引的记录(即索引记录),由这些记录中的如上述的帧信息或其他与帧相关的信息,可以确定各帧在视频编码码流中的位置,如确定目标帧的位置、以及目标帧参考的编码帧的位置,并在该被访问的码流中从目标帧的位置获取目标帧以及从编码帧的位置获取编码帧。例如:请求的目标帧是I帧,定位到该目标帧信息的帧号、时间戳等指示的最接近的I帧的记录,可以由该记录中指示的该I帧的位置和其长度,在该码流相应位置处读取该I帧,并把该I帧长度范围内的后面的P帧也读取出来。
[0074]步骤S230,将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回。
[0075]其中,返回的该目标帧及其参考的编码帧,可以在请求访问的前端,根据所述目标帧以及目标帧参考的编码帧在视频编码码流中的顺序,顺次解码获取的目标帧参考的编码帧以及目标帧。
[0076]该顺次解码,如先解码获取的目标帧对应的I帧、再解码获取的目标帧(包括与该目标帧相关的其他类型的编码帧、目标帧本身)。具体例如:目标帧是I帧,先解码I帧,然后再解码后面的数据;或者,目标帧是刷新P帧,先读取其参考帧(最近的I帧)进行解码,然后再读取该刷新P帧和后面的数据即进行解码;等等。由此,可以获得解码后的目标帧,实现访问视频编码码流的目标帧的目的。
[0077]步骤S210涉及后端的编码、中间存储端的存储处理,步骤S220涉及中间存储端的存储访问,步骤S230涉及前端的读取和解码。实际上,本发明的访问方法的实施例中,各个步骤涉及的后端编码、中间端存储、前端访问,可以是三端/三方都在同一侧执行,例如编码和数据存储、访问端可以是都在服务器或都在终端上,也可以三方分别位于不同侧,或者其中两方位于同一侧而另外一方位于另一侧。也就是说,本发明的方法,可以是远程存储、本地存储、远程访问(如播放、回放)和/或本地访问(如播放、回放)、其他实时设备存取等等,并不受数据码流存储和处理设备的限制。下面为了描述方便,假定以对视频编码码流进行访问的访问端在终端侧(访问解码),而做编码的后端和完成索引存储的中间端是在服务器侧(数据生成和存储)的情形为一个实施方式进行说明。
[0078]下面通过几个个更加具体的实施例对本发明的编码方法、索引存储方法、访问方法做进一步的详细描述。
[0079]实施例一
[0080]如图3所示,为了快速地实现视频编码码流的访问,本实施例提供了依据本发明的视频编码码流的编码方法的一实施例。由该例子的描述,说明本发明的编码方法对视频数据编码(编码帧)和码流生成的改变,从而带来的降低待访问视频编码码流的码率和降低解码消耗。
[0081]步骤S310,基于预设的编码算法编码视频数据,以获得包含多个编码帧的视频编码码流。
[0082]具体的,在视频编码层,采用预设的编码算法,对视频数据进行编码,获得包含多个编码帧的视频编码码流。进一步地,所述视频编码码流中包括多个图像组,每个图像组包括一个I帧与其后同其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合。参见图7所示,在该视频编码码流中,可以包括多个图像组GOP ;而在每个图像组中,可以包括存在参考关系的多个编码帧;其中,编码帧的类型包括:1帧、普通P帧和刷新P帧。
[0083]采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧。
[0084]采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧。
[0085]采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考与该普通P帧相邻的前一个编码帧、和/或位于该普通P帧前面且距离最近的I帧。
[0086]因而生成的该码流包括:1帧,是参考其自身进行编码后获得的帧;刷新P帧,是参考位于其前面且距离最近的I帧进行编码后获得的帧;普通P帧是参考与其相邻的前一帧、以及位于所述普通P帧前面且距离最近的I帧进行编码后获得的帧。
[0087]帧内预测编码算法、第一帧间预测编码算法和第二帧间预测编码算法都为现有技术,只是在参考关系上,本实施例在经过视频数据编码算法而得到的视频数据编码码流中,刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧。
[0088]步骤S320,为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记。
[0089]在一个实施例中,可以在视频封装层,增加辅助数据信息,如:分别为视频编码码流添加码流标记、和/或为视频编码码流中每个编码帧添加帧标记。其中,在帧标记中可以包括编码帧的类型信息,以便当确定码流是具有标记的、且帧也具有标记时,在读取编码帧的帧标记后,能识别编码帧的类型。
[0090]例如:码流标记可以设置O来表示该视频码流为经过本实施例编码的视频编码码流;而帧标记设置I表示I帧,帧标记设置2表示普通P帧,帧标记设置3表示刷新P帧,等等,以区分编码帧的类型和要解码的码流是否为本实施例的方式编码生成。
[0091]进一步,该辅助信息还可以包括:在码流标记中包括表征该码流中是否添加有所述标记的信息。这样,在读取视频编码码流的封装层时,可以快速确定码流以及快速识别出编码帧的类型。进而有助于待访问的视频编码码流进行索引建立时更快、流程更简单。
[0092]实施例二
[0093]为了能够在视频编码码流中快速定位目标帧,在访问码流或者说访问获得其目标帧之前,为视频编码码流建立索引,以便借助索引来定位目标帧。这样更加能简化码流访问和加快访问速度甚至解码速度,进一步降低解码消耗提升解码效率等。如图4所示,为根据本发明的视频编码码流的索引存储方法的一实施例。
[0094]步骤S410,获取待访问的视频编码码流,以判断该码流是否包含码流标记。
[0095]其中,视频编码码流(也即将会被访问或待访问的视频编码码流)可以从远程或本地或实时设备取流获得或者其他访问请求(如:播放、回放等)获得。
[0096]其中,判断视频编码码流封装层是否包含码流标记,也即是判断该视频编码码流是否为经过本发明的视频编码码流的编码方法(实施例一)所生成的视频编码。如果包含码流标记,则表示该视频编码码流为实施例一编码方式生成的码流。由此,该码流中应当包含按照实施例一的编码方法所产生的编码帧:1帧、刷新P帧、普通P帧。
[0097]例如:如果在视频的封装层存在码流标记、且码流标记为0,则表示视频编码码流经过实施例一的视频编码;如果在封装层不存在码流标记,则表示视频编码码流未经过实施例一的视频编码,为现有技术的视频编码码流。
[0098]步骤S410’,如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有中贞标记。
[0099]如果该码流包含码流标记,说明是采用本发明的编码方法产生的码流,进而,需要进一步判断,以便确定这些编码帧是否按照实施例一描述的情形,添加了帧标记。
[0100]步骤S420,如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I巾贞息和刷新P巾贞息。
[0101]其中,如果确定码流包含码流标记,进一步的判断确认在视频编码码流的封装层还包含帧标记即为编码帧添加的带有类型信息的标记,则可以快速地识别出每个编码帧的类型。
[0102]也就是说,当所述视频编码码流包含码流标记、并且该码流中还具有帧标记时,即该码流由本发明的编码方法产生,同时,其编码帧还具备相应的包含该编码帧的类型信息的帧标记。因而,可以通过直接读取视频编码码流封装层的帧标记,识别视频编码码流中每个编码帧的类型,获得视频编码码流中的I帧信息和刷新P帧信息(如步骤S210所述的与各个帧相关的放在索引记录中的相关信息)。
[0103]步骤S430,如果该码流未包含码流标记,或者包含码流标记但不具有巾贞标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息。
[0104]其中,如果不包含码流标记,则表示视频编码码流为其他方式(例如现有技术其他已知)的视频编码码流,非本发明的编码方法产生的码流,从而不能直接识别出每个编码帧的类型。
[0105]在一个事实方式中,如果该码流未包含码流标记,则解析该码流,确定该码流中每个编码帧的类型,获得I帧信息或者、获得I帧信息和刷新P帧信息:根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考位于其所属GOP中的I帧,以及前面且距离最近的帧;基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P帧,获得相应的I帧信息和刷新P帧信息。比如,在解析视频编码码流时,可以按照实施例一中I帧、刷新I帧和普通I帧的参考关系来确定编码帧的类型。即可以根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与该普通P帧相邻的前一个编码帧、和/或位于该普通P帧前面且距离最近的I帧,然后,基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P帧,获得相应的I帧信息和刷新P帧信息。
[0106]在一个实施方式中,如果该码流包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,获得I帧信息和刷新P帧信息的一个实施方式可以是:根据包含码流标记的该码流中每个编码帧所具有确定的类型,从编码帧中对应的I帧和刷新P帧获取相应的I帧信息和刷新P帧信息。这种码流包含码流标记但不具有帧标记的情形,说明码流采用的是本发明的编码方法生成,因而,视频编码码流中存在I帧、刷新P帧和普通P帧,只是在编码过程中只添加了码流标记,而未添加帧标记,由于这些编码帧的类型是明确确定的,按照类型即可找到相应的编码帧(I帧、刷新P帧等),并提取其相应的I帧信息、刷新P帧信息等。这时,解析效率也相应提高,因而通过解析视频编码码流,获得I帧信息和刷新P帧信息。
[0107]步骤S440,根据获得的I帧信息和刷新P帧信息,建立索引以存储。
[0108]具体地,可以将前述步骤获得的各个编码帧的索引节点信息的记录,作为索引记录,将所有索引记录以已有的数据结构和存储访问,建立索引。比如,将获得的I帧信息和刷新P帧信息作为索引节点的索引记录,形成索引以存储。
[0109]在一个实施方式中,记录各个不同类型的编码帧相关信息,建立索引节点信息即索引记录。例如,记录I帧索引节点信息、记录刷新P帧索引节点信息等以形成索引记录。
[0110]其中,索引记录中,记录的I帧索引节点信息或者说I帧信息包括但不限于:编码帧类型(I帧)、I帧位置、时间戳、帧号。
[0111]其中,记录的刷新P帧索引节点信息或者说刷新P帧信息包括但不限于:编码帧类型(刷新P帧)、刷新P帧位置、时间戳、帧号、参考的I帧位置、参考的I帧的长度。参考的I帧为位于该刷新P帧前面且距离最近的I帧。
[0112]进而,记录各种类型帧索引节点信息,以形成索引记录,建立索引(如索引表等)并存储。
[0113]另外,为了提高解析效率在这种情形,在步骤S430的解析视频编码码流过程中,还可以仅获得I帧信息,将其作为索引节点信息即可。
[0114]其中,由于该索引的各个索引节点信息或者说索引记录中包含各个帧的位置、时间戳、帧号信息,从而其可以用于快速定位视频编码码流中编码帧的位置。比如:1帧和刷新P帧的位置可以在索引中直接确定,普通P帧的位置通过其相邻的I帧和/或刷新P帧来间接确定。
[0115]其中,该索引可以与视频编码码流一同存储在服务器测或终端侧。
[0116]在本实施例中,无论视频编码码流是否经历过实施例一的视频编码过程,都可以建立索引。包含码流标记和帧标记的视频编码码流则更加容易获得I帧信息和刷新P帧信息,更快地建立索引以及更快地确定I帧、刷新P帧在码流中的位置。
[0117]实施例三
[0118]在建立索引后,如果接收到访问视频编码码流中目标帧的请求,则在该索引中,根据该目标帧信息(帧的相关信息)查询目标帧以及该目标帧参考的编码帧的节点信息。为了更清楚地描述本发明的视频编码码流的访问方法,在一个实施方式中,将以视频编码码流和索引一起存储在服务器侧、而终端作为数据解码端可以访问服务器为例。
[0119]如图5所示根据本发明的视频编码码流的访问方法的一更具体的实施例的流程。
[0120]步骤S510,基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧。其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧。具体如步骤S210所述,其访问的码流可以是本发明的编码方法产生的(实施例一),能够有效降低解码消耗,其索引可以是本发明的索引存储方法产生的(实施例二),能够简化定位过程快速实现随机访问。
[0121 ] 进一步地,比如,服务器接收终端发送的访问请求中具有请求访问的目标帧信息。所述目标帧信息至少包括以下之一:帧类型、帧位置、帧号、时间戳。
[0122]服务器根据该目标帧信息,在索引中,定位目标帧、以及目标帧参考的编码帧的索引记录,即找到请求访问的目标帧以及该目标帧参考的编码帧在索引中对应的节点信息/记录,直接或间接获得记录中关于帧的相关信息,如位置信息。
[0123]在索引的索引记录中确定是否存在与目标帧信息匹配的索引节点,比如目标帧的位置、和/或帧号、和/或时间戳匹配的索引节点等;若存在匹配的索引节点,则定位该索引节点,从而实现对目标帧的定位。并且根据索引节点,定位目标帧参考的编码帧的索引节点。若不存在匹配的索引节点,则定位与该目标帧的位置、和/或帧号、和/或时间戳最接近的前一个编码帧的索引节点。
[0124]进一步地,如果目标帧信息中,帧类型指示了目标帧为I帧或刷新P帧,则在索引中可以更快更直接地找到索引记录(索引节点信息)以确定目标帧的位置,以及目标帧参考的编码帧的位置。例如刷新P帧索引节点记录的刷新P帧参考的I帧的位置和长度,来定位刷新P帧参考的I帧的索引节点。如果目标帧为普通P帧,则在索引中找到与目标帧相邻的前一个编码帧的索引记录中的位置和后一个编码帧的索引记录中的位置,用前一个编码帧的位置和后一个编码帧的位置确定目标帧的位置。例如目标帧的类型为普通P帧,其在索引中没有记录,但是根据其位置、帧号、时间戳,可以确定与其邻近的刷新P帧和I帧,进而可以间接实现定位普通P帧和普通P帧参考的编码帧。
[0125]在索引中定位时采用的定位算法例如可以是二分法、顺序查找法等。
[0126]步骤S520,根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧;(如步骤S220)。
[0127]具体地,服务器可以根据在索弓丨中确定的目标帧、编码帧的位置,即被定位的目标帧、以及目标帧参考的编码帧所处码流中的位置或相关位置信息,在对应该索引的视频编码码流中,提取(获得)该目标帧以及目标帧参考的编码帧。
[0128]如果目标帧本身类型为I帧,则目标帧参考的编码帧为目标帧本身,可以根据索引中的记录,确定该I帧在视频编码码流中的位置,直接在视频编码码流中,获取该目标帧(I 帧)。
[0129]如果目标帧参考的编码帧仅包括I帧,则可以根据索引中的记录,确定目标帧在视频编码码流中的位置、以及位于该目标帧前面且距离最近的I帧的位置,在视频编码码流中,获取目标帧、以及位于该目标帧前面且距离最近的I帧。
[0130]如果目标帧参考的编码帧包括I帧和刷新P巾贞,则可以根据索引中的记录,确定目标帧在视频编码码流中的位置、位于该目标帧前面且距离最近的刷新P帧的位置、以及位于该刷新P帧前面且距离最近的I帧的位置,在视频编码码流中,获取目标帧、位于该目标帧前面且距离最近的刷新P帧、以及位于该刷新P帧前面且距离最近的I帧。
[0131]如果目标帧参考的编码帧包括I帧和普通P帧,则可以根据索引中的记录,确定目标帧在视频编码码流中的位置、位于该目标帧前面且距离最近的I帧的位置,在视频编码码流中,获取目标帧、位于目标帧前面且距离最近的I帧、以及位于I帧和所述目标帧之间的普通P帧。
[0132]如果目标帧参考的编码帧包括I帧、刷新P帧和普通P帧,则可以根据索引中的记录,确定目标帧帧在视频编码码流中的位置、位于该目标帧前面且距离最近的刷新P帧的位置、位于该刷新P帧前面且距离最近的I帧的位置,在视频编码码流中,获取位于目标帧前面且距离最近的刷新P帧、位于刷新P帧前面且距离最近的I帧、以及位于刷新P帧和目标帧之间的普通P帧。
[0133]这样,若目标帧是普通P帧,其最近的前方的I帧与刷新P帧以及参考的这些I帧和刷新P帧与该普通P帧之间的编码帧都能够在码流中获取到。
[0134]步骤S530,将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回(如步骤S230)。
[0135]具体的,服务器将获取的目标帧以及目标帧参考的编码,返回给终端。
[0136]若服务器只将目标帧直接参考和间接参考的编码帧向终端发送,而不发送目标帧未参考过的编码帧,因而,在传输过程中,码率较低,这样就弥补了传输过程中带宽不足的缺点。
[0137]而如果为了进一步降低码率,还可以根据待传输的编码帧的类型,优先舍弃发送普通P帧,再次可以舍弃发送刷新P帧,进一步地减少待传输的编码帧的数量。
[0138]下面结合图6的描述根据本发明的访问方法的返回编码帧步骤S530的解码过程的一【具体实施方式】。
[0139]步骤S610,获得从所述视频编码码流返回的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧。
[0140]具体的,终端获得服务器返回的目标帧以及所述目标帧参考的编码帧。其中,所述目标巾贞参考的编码巾贞包括I巾贞、和/或还包括刷新P巾贞和/或普通P中贞。
[0141]步骤S620,根据所述目标帧以及所述目标帧参考的编码帧在视频编码码流中的顺序(帧号或时间戳),顺次解码获得的所述目标帧参考的编码帧以及所述目标帧。
[0142]由此,终端可以基于所述目标帧及该目标帧参考的编码帧进行顺次解码,比如:先解码获取的目标帧对应的I帧、再解码获取的目标帧对应的其他类型的编码帧(包括目标帧本身),类似步骤S230所述解码方式,低消耗地解码快速获得相应的视频数据(如:解码后的目标帧的内容/数据)。进而,可以逐一对获得请求访问的目标帧进行解码以获得被访问的视频编码码流相应的视频数据。
[0143]具体地,服务器将获取到的目标帧、以及目标帧参考的编码帧,向请求访问目标帧的终端发送,即返回访问请求的结果(如请求的视频编码码流中对应的目标帧等)。
[0144]进一步,终端可以接收其请求访问服务器中视频编码码流而获得的目标帧以及目标帧参考的编码帧。并且,终端还可以根据目标帧和编码帧的帧号或时间戳,顺次解码编码帧和目标帧,最终获得解码后的目标帧。
[0145]因为终端只获得了目标帧直接参考和间接参考的编码帧,因此,终端获得的编码帧的数量较少,解码消耗较低。进一步地,如果为了进一步降低解码消耗,终端可以只解码I帧和刷新P帧,再次终端可以只解码I帧,以使得能耗更低。
[0146]例如:图7所不的视频编码码流不意图。I I和I 2表不I巾贞、Pnl、Pml和Pjl为刷新P帧,其他为普通P帧。普通P帧前面且距离最近的帧的类型为I帧、刷新P帧或普通P帧。在建立索引时,在索引中只记录I帧、Pnl帧和Pml帧的信息。当访问Pn3帧时,则先定位Pn3,再定位Pnl,然后定位Il ;定位后,从视频编码码流中获取Il、Pnl、Pn2和Pn3 ;因为Il可以独立解码,Pnl、Pn2和Pn3都为图像差别信息,不能独立解码,需要借助其前面的帧才能解码,所以,顺次解码Il、Pnl、Pn2和Pn3,才能解码出Pn3。相比于现有的视频编码码流的访问方式,本实施例,无需获取P11、P12、以及P12和Pnl之间的普通P帧,就可以解码Pn3,有效降低了解码消耗。
[0147]下面将结合附图依次描述本发明的视频编码码流的编码、索引存储、访问装置的实施例。本发明的编码装置、索引存储装置、访问装置的与本发明的编码方法、索引存储方法、访问方法分别对应。
[0148]如图8所示,为根据本发明的视频编码码流的编码装置的一实施例的结构示意图。该装置至少包括:
[0149]编码模块810,用于基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流。
[0150]比如,采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧;采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧;采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考位于所述普通P帧前面且距离最近的帧;所述普通P帧参考与所述普通P帧相邻的前一个编码帧和/或位于所述普通P帧前面且距离最近的I帧。
[0151]比如,所述视频编码码流中包括多个图像组,每个图像组包括一个I帧与其后同其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合。
[0152]该模块的具体处理和功能可以参见对步骤S310的具体描述。
[0153]标记模块820,用于为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,所述码流标记中包括表征该码流中是否添加有所述标记的信息;在所述帧标记中包括编码帧的类型信息。
[0154]该模块的具体处理和功能可以参见对步骤S320的具体描述。
[0155]如图9所示,为根据本发明的视频编码码流的索引存储装置的一实施例的结构示意图。该装置至少包括:
[0156]第一判断模块910,用于获取待访问的视频编码码流,以判断该码流是否包含码流标记。该模块的具体处理和功能可以参见对步骤S410的具体描述。
[0157]第二判断模块910’,用于如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有帧标记。该模块的具体处理和功能可以参见对步骤S410’的具体描述。
[0158]按标记获取模块920,用于如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I帧信息和刷新P帧信息。该模块的具体处理和功能可以参见对步骤S420的具体描述。
[0159]按解析获取模块930,如果该码流未包含码流标记,或者包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息。
[0160]其中,如果该码流未包含码流标记,根据该码流中每个编码帧的参考关系来确定编码帧的类型;该参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧;基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P巾贞,获得相应的I帧信息和刷新P帧信息。
[0161]其中,如果该码流包含码流标记但不具有帧标记,根据包含码流标记的该码流中每个编码帧所具有确定的类型,从编码帧中对应的I帧和刷新P帧获取相应的I帧信息和刷新P帧信息。
[0162]其中,所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号;所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。
[0163]该模块的具体处理和功能可以参见对步骤S430的具体描述。
[0164]索引建立模块940,用于根据获得的I帧信息和刷新P帧信息,建立索引以存储。
[0165]如,将获得的I帧信息和刷新P帧信息作为索引节点的索引记录,形成索引以存储。
[0166]该模块的具体处理和功能可以参见对步骤S440的具体描述。
[0167]如图10所示,为根据本发明的视频编码码流的访问装置的一实施例的结构示意图。该装置至少包括:
[0168]定位模块1001,用于基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧。
[0169]在一个例子中,该码流可以采用本发明的编码装置(图8)所用的编码方法(图3)获得。
[0170]比如,采用预设的编码算法编码视频数据,以获得包含多个编码帧的所述视频编码码流,包括:采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧;采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧;采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧。(如编码模块810和步骤S310)。
[0171]进一步,为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,在所述帧标记中包括编码帧的类型信息(如标记模块820和步骤S320)。该码流中还包括多个图像组,在每个图像组中包括存在参考关系的多个编码帧,如图7所示。
[0172]在一个例子中,定位用的索引,可以通过本发明的索引存储装置(图9)和索引存储方法(图4)建立产生。
[0173]比如,先判断获取的待访问的视频编码码流中是否包含码流标记(如第一判断模块910和步骤S410)。
[0174]若是,则判断所述码流中的各个编码帧是否具有帧标记(如第二判断模块910’和步骤 S410’ )。
[0175]若具有帧标记则读取该码流中每个编码帧的帧标记以获得该码流中的I帧信息和刷新P帧信息(如按标记获取模块920和步骤S420)。
[0176]若否或者若是但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,获得I帧信息和刷新P帧信息(如按解析获取模块930和步骤S430)。
[0177]其中,若否,解析码流时,可以根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧;基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P巾贞,获得相应的I帧信息和刷新P帧信息。
[0178]其中,若是但不具有帧标记,解析码流时,可以根据包含码流标记的该码流中每个编码帧所具有确定的类型,从编码帧中对应的I帧和刷新P帧获取相应的I帧信息和刷新P帧信息。
[0179]最后,将获得的I帧信息和刷新P帧信息作为索引中的索引记录,建立索引以存储(如索引建立模块940和步骤S440)。
[0180]具体的比如,目标帧信息至少包括以下之一:目标帧的位置、帧号和时间戳;在索引的索引记录中确定是否存与所述目标帧信息匹配的索引节点;若是,则定位所述索引节点,并且根据所述索引节点,定位所述目标帧参考的编码帧的索引节点;若否,则定位与所述目标帧的位置、和/或帧号、和/或时间戳最接近的前一个编码帧的索引节点(如步骤S510)。
[0181]该定位模块1001的具体处理和功能可以参见对步骤S210和更具体的步骤S510的描述。
[0182]获取模块1002,用于根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧。
[0183]
[0184]具体地,如果所述目标帧为I帧,则所述目标帧参考的编码帧为所述目标帧本身,根据索引中的索引记录,确定所述I帧在所述视频编码码流中的位置,从而获取模块在所述视频编码码流中,获取所述I帧;
[0185]如果所述目标帧参考的编码帧仅包括I帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、以及位于所述目标帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧和所述I帧;
[0186]如果所述目标帧参考的编码帧包括I帧和刷新P巾贞,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、以及位于所述刷新P帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述刷新P帧和所述I帧;
[0187]如果所述目标帧参考的编码帧包括I帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述I帧、以及位于所述I帧和所述目标帧之间的普通P帧;
[0188]如果所述目标帧参考的编码帧包括I帧、刷新P帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、位于所述刷新P帧前面且距离最近的I帧的位置,从而获取模块在所述视频编码码流中,获取所述目标帧、所述刷新P帧、所述I帧、以及位于所述刷新P帧和所述目标帧之间的普通P帧。
[0189]该模块1002的具体处理和功能可以参见对步骤S220和更具体的步骤S520的描述。
[0190]返回模块1003,用于将将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回。
[0191]在一个实施例中,该返回获得访问帧并解码的过程如图6所示:获得从所述视频编码码流返回的目标帧以及所述目标帧参考的编码帧以及二者之间的所有编码帧等,其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧(如步骤S610所述)。根据所述目标帧以及所述目标帧参考的编码帧在视频编码码流中帧号或时间戳,顺次解码获得的所述目标帧参考的编码帧以及所述目标帧(如步骤S620所述)。
[0192]该模块1003的具体处理和功能可以参见对步骤S230和更具体的步骤S530的描述。
[0193]由于本发明各装置对应的实施例中所涉及模块和结构实现的处理及功能基本相应于前述的各方法相关的实施例,参见图2-7,故各装置的实施例的描述中未详尽之处,可以参见前述方法相关的实施例中的相关说明,在此不做赘述。
[0194]本发明具有以下优点:
[0195]本发明在码流的封装层增加码流标记,码流标记用于区别该码流跟其他码流在定位时采取不同的方法。在实时流预览,存储回放,本地文件定位,倒放等功能中快速识别所述码流。
[0196]视频帧类型一般是解析码流编码的信息,为了能够更快速的解析帧类型,避免解析更多编码层的信息,本发明在封装层为码流中每个编码帧增加帧标记,以区分I帧,刷新P帧,普通P帧。
[0197]本发明的码流中数据长度最大的I帧,单位时间出现的频率下降,可大大降低码率,同等分辨率和图像质量的情况下对带宽、存储等要求降低。
[0198]在存储数据时,将帧类型记录在存储索引结构中,在回放定位时,根据帧参考关系,按照快速随机访问的原理,可以加快定位过程。
[0199]本发明的码流在远程数据回放时,可根据带宽情况和快放的速度,在发送端根据帧类型优先丢弃普通P帧,再丢弃刷新P帧,降低带宽负荷。
[0200]本发明在解码端可根据帧类型,优先丢弃普通P帧降低解码压力,达到快速播放,或者更大路数播放的目的。
[0201]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【主权项】
1.一种视频编码码流的编码方法,其特征在于,包括: 基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流; 为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,所述码流标记中包括表征该码流中是否添加有所述标记的信息;在所述帧标记中包括编码帧的类型信息。2.根据权利要求1所述的方法,其特征在于,基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流,包括: 采用帧内预测编码算法,编码视频数据中的图像数据,获得I帧; 采用第一帧间预测编码算法,编码视频数据中的图像数据,获得刷新P帧;其中,刷新P帧参考位于所述刷新P帧前面且距离最近的I帧; 采用第二帧间预测编码算法,编码视频数据中的图像数据,获得普通P帧;其中,普通P帧参考与所述普通P帧相邻的前一个编码帧和/或位于所述普通P帧前面且距离最近的I帧。3.根据权利要求1或2所述的方法,其特征在于,还包括: 所述视频编码码流中包括多个图像组,每个图像组包括一个I帧与其后同其存在直接或间接参考关系的刷新P帧、普通P帧组成的图像集合。4.一种视频编码码流的索引存储方法,其特征在于,包括: 获取待访问的视频编码码流,以判断该码流是否包含码流标记(S410); 如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有帧标记(S410,); 如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I帧信息和刷新P帧信息(S420); 如果该码流未包含码流标记,或者包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息(S430); 根据获得的I帧信息和刷新P帧信息,建立索引以存储(S440)。5.根据权利要求4所述的方法,其特征在于,如果该码流未包含码流标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息,包括: 根据该码流中每个编码帧的参考关系来确定编码帧的类型;其中,所述参考关系为:刷新P帧参考位于其前面且距离最近的I帧,普通P帧参考与其相邻的前一个编码帧、和/或位于其前面且距离最近的I帧; 基于确定的编码帧的类型,从编码帧中对应的I帧和刷新P帧,获得相应的I帧信息和刷新P帧信息。6.根据权利要求5所述的方法,其特征在于,根据获得的I帧信息和刷新P帧信息,建立索引以存储,还包括: 将获得的I帧信息和刷新P帧信息作为索引节点的索引记录,形成索引以存储。7.根据权利要求4-6之一所述的方法,其特征在于, 所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号; 所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。8.一种视频编码码流的访问方法,其特征在于,包括: 基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧; 根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧; 将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回。9.根据权利要求8所述的方法,其特征在于,所述视频编码码流还包括:为所述视频编码码流添加的码流标记、和/或为所述视频编码码流中每个编码帧添加的帧标记。10.根据权利要求8所述的方法,其特征在于,所述视频编码码流还包括: I帧是参考其自身进行编码后获得的帧; 刷新P帧是参考位于其前面且距离最近的I帧进行编码后获得的帧; 普通P帧是参考与其相邻的前一帧、和/或位于所述普通P帧前面且距离最近的I帧进行编码后获得的帧。11.根据权利要求8-10之一所述的方法,其特征在于,所述索引,包括:索引记录;所述索引记录中的索引节点包括I帧信息或刷新P帧信息; 所述I帧信息至少包括以下之一:1帧位置、I帧时间戳、I帧帧号; 所述刷新P帧信息至少包括以下之一:刷新P帧位置、刷新P帧时间戳、刷新P帧帧号、刷新P帧参考的I帧位置、刷新P帧参考的I帧的长度。12.根据权利要求11所述的方法,其特征在于,基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标中贞参考的编码巾贞,包括: 所述目标帧信息至少包括以下之一:目标帧的位置、帧号和时间戳; 在索引的索引记录中确定是否存与所述目标帧信息匹配的索引节点; 若是,则定位所述索引节点,并且根据所述索引节点,定位所述目标帧参考的编码帧的索引节点; 若否,则定位与所述目标帧的位置、和/或帧号、和/或时间戳最接近的前一个编码帧的索引节点。13.根据权利要求12所述的方法,其特征在于,根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧,还包括: 如果所述目标帧为I帧,则所述目标帧参考的编码帧为所述目标帧本身,根据索引中的索引记录,确定所述I帧在所述视频编码码流中的位置,在所述视频编码码流中,获取所述I帧; 如果所述目标帧参考的编码帧仅包括I帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、以及位于所述目标帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧和所述I帧; 如果所述目标帧参考的编码帧包括I帧和刷新P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、以及位于所述刷新P帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述刷新P帧和所述I帧; 如果所述目标帧参考的编码帧包括I帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述I帧、以及位于所述I帧和所述目标帧之间的普通P帧; 如果所述目标帧参考的编码帧包括I帧、刷新P帧和普通P帧,则根据索引中的索引记录,确定所述目标帧在所述视频编码码流中的位置、位于所述目标帧前面且距离最近的刷新P帧的位置、位于所述刷新P帧前面且距离最近的I帧的位置,在所述视频编码码流中,获取所述目标帧、所述刷新P帧、所述I帧、以及位于所述刷新P帧和所述目标帧之间的普通P帧。14.根据权利要求8-13之一所述的方法,其特征在于,将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回,还包括: 获得从所述视频编码码流返回的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧; 根据所述目标帧以及所述目标帧参考的编码帧在视频编码码流中帧号或时间戳,顺次解码获得的所述目标帧参考的编码帧以及所述目标帧。15.一种视频编码码流的编码装置,其特征在于,包括: 编码模块,用于基于预设的编码算法编码获取的视频数据,以获得包含多个编码帧的所述视频编码码流; 标记模块,用于为所述视频编码码流添加码流标记、和/或为所述视频编码码流中每个编码帧添加帧标记;其中,所述码流标记中包括表征该码流中是否添加有所述标记的信息在所述帧标记中包括编码帧的类型信息。16.一种视频编码码流的索引存储装置,其特征在于,包括: 第一判断模块,用于获取待访问的视频编码码流,以判断该码流是否包含码流标记; 第二判断模块,用于如果该码流包含码流标记,则判断所述码流中的各个编码帧是否具有巾贞标记; 按标记获取模块,用于如果该码流中具有帧标记,则读取该码流中每个编码帧的帧标记,以获得该码流中的I帧信息和刷新P帧信息; 按解析获取模块,如果该码流未包含码流标记,或者包含码流标记但不具有帧标记,则解析该码流,确定该码流中每个编码帧的类型,至少获得I帧信息; 索引建立模块,用于根据获得的I帧信息和刷新P帧信息,建立索引以存储。17.—种视频编码码流的访问装置,其特征在于,包括: 定位模块,用于基于接收的访问请求中的目标帧信息,在预先为视频编码码流对应的索引中,定位所述目标帧信息中指示的目标帧、以及所述目标帧参考的编码帧;其中,所述目标帧参考的编码帧包括I帧、和/或刷新P帧、和/或普通P帧; 获取模块,用于根据所述定位,在所述视频编码码流中,至少获取相应于所述定位确定的位置处的所述目标帧、所述目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码巾贞; 返回模块,用于将所述获取的目标帧、目标帧参考的编码帧、目标帧参考的编码帧与目标帧之间的所有编码帧返回。
【文档编号】H04N19/105GK105847825SQ201510023066
【公开日】2016年8月10日
【申请日】2015年1月16日
【发明人】陈杰, 浦世亮, 俞海
【申请人】杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1