一种视频存储方法和装置、读取方法和装置以及存取系统的制作方法

文档序号:10492568阅读:381来源:国知局
一种视频存储方法和装置、读取方法和装置以及存取系统的制作方法
【专利摘要】本发明公开了一种视频存储方法和装置、读取方法和装置以及存取系统。该视频存储方法包括:采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧。本发明中的方案在视频数据的存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,通过本方法存储的视频数据,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。
【专利说明】
一种视频存储方法和装置、读取方法和装置以及存取系统
技术领域
[0001]本发明涉及视频监控技术领域,尤其涉及一种视频存储方法和装置、读取方法和装置以及存取系统。
【背景技术】
[0002]目前,视频监控几乎遍布于现代生活之中,为人们的居住安全、交通安全、卫生安全、社会安全和生产安全服务,大量的监控视频无论是从节约存储成本,还是适应低码率传输的需求,都希望编码器在保证视频质量的前提下进一步降低码率。
[0003]对于传统编码器,一般将编码帧分为I帧、P帧、B帧三种,这三种帧的参考关系如图1所示。其中,I帧是内部编码帧,与其他帧不存在依赖关系,不需要参考其他帧,仅需自身就可以完全解码的一个完整画面,在视频数据中,I帧是实现视频读取时解码的关键帧。P帧是前向预测帧,只可以参考前面的帧,编码过程中既可以采用帧内预测方式,也可以参考其前面的P帧或者I帧进行帧间预测,即考虑运动的特性对时间域的冗余信息进行帧间压缩。B帧是双向预测帧,它既可以参考前面的帧,也可以参考后面的帧,因此P帧和B帧都需要参考其他帧,与其他帧存在依赖关系,仅通过自身是无法解码出一个完整画面的。一般地,将一个I帧及其与之存在参考关系的P帧、B帧统称为一个图像组(Group of Pictures,即 GOP)ο
[0004]若需要对编码后的码流(录像文件)进行随机访问或视频回放,假设想要访问或回放的开始时刻为T,T时刻所对应的帧记为F,要访问或回放F帧,必须从与F帧最接近的I帧开始解码,从这个I帧到F帧的解码时间称为等待时间。由此可以看出,如果GOP长度过长,那么随机访问或视频回放时所耗费的平均等待时间就会过长,影响随机访问的效率。因此,传统编码器的GOP往往较短,如25帧、50帧等,一般不会超过100帧。
[0005]目前在监控行业广泛采用DVR作为录像存储设备。DVR是一种可以通过数据硬盘记录视频和音频数据的监控设备,分为普通型数字硬盘录像机(只能接入模拟摄像机)、混合型数字硬盘录像机(Hybrid DVR)和网络硬盘录像机(NVR)。为了满足监控视频需要保存较长时间的需求,这些存储设备往往具有大容量的存储空间。为了方便存储和访问,这些大容量的存储空间又被进一步划分为一个个大小近似的子存储空间,称之为“片”,视频数据存储于这些不同的片当中。图2是将一个大容量存储空间划分为一个个“片”的示意图。
[0006]图3是现有技术中视频数据存储过程的流程图,如图所示,在视频数据的存储过程中,存储设备会开辟一个数据缓冲区,用于暂时存放最新的一段视频编码数据。在接收到开始录像命令以后,检查当前缓冲区内是否有I帧,没有则强制I帧,等待I帧的出现,然后从I帧开始位置,缓冲区中数据积累到一定程度,比如512K字节,就写入一次硬盘。在将缓冲区的视频数据真正存入当前“片”之前,存储设备会判断当前“片”中已经存在的数据量加上缓冲区中的数据量是否超过“片”大小的阈值,如果还未超过,则将数据缓冲区中的视频编码数据存入当前“片”;否则,就会开辟一个新的“片”,把数据缓冲区中的视频编码数据存入这个新的“片”当中。
[0007]为了方便日后对视频数据的随机访问及视频回放,应该尽量避免视频数据的跨“片”参考,也就是要防止不同“片”当中的编码帧存在参考关系。因此,必须保证每一个“片”中的数据都是以I帧数据开头,这样,紧随其后的P帧、B帧仅与当前“片”中的I帧存在参考关系,而与上一个“片”中的视频数据无关。但需要将缓冲区数据存入一个新的“片”之时,并不能保证当前缓冲区中的数据刚好存在I帧,或者当前缓冲区中的数据并不是以I帧开头的,这时候将缓冲区数据存入新的“片”当中就无法保证新的“片”以I帧数据开头,目前的做法是将这部分码流丢弃,然后向编码器发送一个命令强制编码一个I帧,再将以这个I帧开头的数据存入新的“片”当中。这样虽然保证了新的“片”是以I帧开头,但是还是造成了一段时间内的码流丢失。
[0008]这种视频数据的存储方案对于传统编码器输出的码流是适用而且有效的,因为传统编码器输出的码流I帧间隔时间不会太长,帧数不会太多。但如果编码器输出的码流I帧间隔很长(如几十分钟,甚至是几小时),一个GOP视频帧数非常多,这意味着一个GOP的数据量也非常大,而且缓冲区中出现I帧的比例非常低。如果一旦发现缓冲区中数据需要存入新的“片”,而此时缓冲区中又没有I帧或不以I帧开头,就选择将缓冲区数据丢弃,并且强制编码一个I帧的话,就会打破长GOP编码的码流结构。而且,并不是每个编码器都支持强制编码I帧的功能。显然,目前的视频监控数据存储方法只适用于GOP长度较短的场合,但并不能很好地满足GOP长度较长时的视频监控数据存储需求。

【发明内容】

[0009]本发明的目的是提供一种视频存储方法和装置、读取方法和装置以及存取系统,其以I帧或R帧及与其存在参考关系的非关键帧作为缓冲区数据的基本单位,在存储时将缓冲区数据存入存储区域的片中,并且保证每个片中存储的第一帧为I帧;存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。
[0010]为实现上述目的,具体采用以下技术方案:
[0011]第一方面采用一种视频存储方法,包括:
[0012]采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;
[0013]将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0014]其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。
[0015]其中,所述将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧,包括:
[0016]判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否不大于存储片的存储阈值;
[0017]若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否贝1J,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧;
[0018]若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,所述第一帧为R帧,则在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0019]其中,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0020]其中,所述将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧,具体为:
[0021]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或,
[0022]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0023]其中,所述采集视频生成缓冲区数据之前,还包括:
[0024]接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。
[0025]第二方面采用一种视频存储装置,包括:
[0026]缓冲区数据采集单元,用于采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;
[0027]数据存入单元,用于将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0028]其中,所述缓冲区数据中R帧为仅参考I帧的图像帧。
[0029]其中,所述数据存入单元,包括:
[0030]数据大小判断模块,用于判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否小于存储片的存储阈值;
[0031]第一存入模块,用于若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否则,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧;
[0032]第二存入模块,用于若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,所述第一帧为R帧,则在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0033]其中,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0034]其中,所述数据存入单元,具体用于:
[0035]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或,
[0036]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0037]其中,还包括:
[0038]编码单元,用于所述采集视频生成缓冲区数据之前,接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。
[0039]第三方面采用一种视频读取方法,包括:
[0040]确认与被选中的时标信息对应的对应帧;
[0041]若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧;
[0042]若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧;
[0043]通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列;
[0044]其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0045]其中,所述若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧,具体为:
[0046]若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧;
[0047]所述若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧,具体为:
[0048]若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧;
[0049]其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。
[0050]第四方面采用一种视频读取装置,包括:
[0051]对应帧处理单元,用于确认与被选中的时标信息对应的对应帧;
[0052]第一定位单元,用于若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧;
[0053]第二定位单元,用于若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧;
[0054]视频序列读取单元,用于通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列;
[0055]其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0056]其中,所述第一定位单元,具体用于:
[0057]若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧;
[0058]所述第二定位单元,具体用于:
[0059]若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧;
[0060]其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。
[0061]第五方面采用一种视频存取系统,包括上述任意一项所述的视频存储装置和上述任意一项所述的视频读取装置。
[0062]本发明的有益效果在于:通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始,到预设时间间隔的与所述I帧或R帧存在参考关系的非关键帧结束;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。
【附图说明】
[0063]图1是现有技术中编码器的帧间的参考关系示意图;
[0064]图2是现有技术中存储结构不意图;
[0065]图3是现有技术中视频数据存储过程的流程图;
[0066]图4是本发明【具体实施方式】中提供的一种视频存储方法的第一实施例的方法流程图;
[0067]图5是本发明【具体实施方式】中提供的一种视频存储方法的第一实施例中编码器的帧间的参考关系的不意图;
[0068]图6是本发明【具体实施方式】中提供的一种视频存储方法的第二实施例的方法流程图;
[0069]图7是本发明【具体实施方式】中提供的一种视频存储方法的第二实施例中存储区域的存储结构示意图;
[0070]图8是本发明【具体实施方式】中提供的一种视频存储方法的第二实施例中快速检索信息列表的结构示意图;
[0071]图9是本发明【具体实施方式】中提供的一种视频存储方法的第二实施例中一种数据缓冲区的数据存储的过程示意图;
[0072]图10是本发明【具体实施方式】中提供的一种视频存储装置的第一实施例的结构方框图;
[0073]图11是本发明【具体实施方式】中提供的一种视频存储装置的第二实施例的结构方框图;
[0074]图12是本发明【具体实施方式】中提供的一种视频读取方法的第一实施例的方法流程图;
[0075]图13是本发明【具体实施方式】中提供的一种视频读取装置的第一实施例的结构方框图;
[0076]图14是本发明【具体实施方式】中提供的额一种视频存取系统的第一实施例的结构方框图。
【具体实施方式】
[0077]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0078]请参考图4,其是本发明【具体实施方式】中提供的一种视频存储方法的第一实施例的方法流程图。本实施例中的视频存储方法,主要用于各种对监控视频进行保存的场合,例如社区、工厂、大厦、军事要地、道路等为人们的居住安全、交通安全、卫生安全、社会安全和生产安全服务的场合,特别适用于需要长时间甚至不间断提供监控视频采集和存储的场合。如图所示,该视频存储方法,包括:
[0079]步骤SlOl:采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始。
[0080]与现有技术中的视频存储方法相比,本实施例中首先采用与其不同的帧编码方式。在视频存储过程中,特别是大量的监控视频存储过程中,无论是从节约存储成本,还是从节约传输成本(低码率传输)的角度考虑,都希望在保证视频质量的前提下进一步降低码率。一般而言,在相同的场景下,不同帧类型按数据大小从大到小排列依次为I帧、P帧和B帧。帧的总量几乎不会有变化,如果减少I帧的比例,拉大I帧的间隔,使GOP长度增加,在相同的帧率下,能降低码率。
[0081]但是现有的随机访问和视频回放方法无法适用于长G0P。假设拉大I帧间的间隔,也就是将GOP拉长,例如拉长到I个小时,那么解码器需要解码回放时刻对应帧的前面最近的I帧开始的所有帧数据,才能正常解码出回放时刻对应帧,进而给用户提供视频数据。若帧率为25帧/S,在极端情况下,则解码器从I帧开始可能需要解码90000帧左右,用户才能开始正常的访问和回放视频数据。这样一来,一方面,增加了解码器的运算量,如针对任一个随机访问请求,都必须解码回放时刻对应帧前面的所有帧;另一方面,增加了用户的等待时间,造成用户体验差,因为用户必须等待足够的时间用以解码器解码运算。而根据监控场景的稳定性不同,GOP甚至拉长到几天,那么随机访问时的解码效率就更低了 ;且若帧率为30帧、60帧或更高的帧率,则现有的随机访问和视频回放方法势必极大地影响用户体验。
[0082]针对这种情况,在如图5所示,另设一种R帧,同时优选地为了简化参考关系,便于说明,此处不提及B帧;R帧本质上也是一种特殊的P帧,依然是向前参考,只是R帧只能参考前面的I帧而不能参考前面的普通P帧;而普通P帧则无此限制,它只要不参考跨越R帧的其他P帧。在本方案中,P帧和B帧作为非关键帧只能参考相邻的帧完成解码,统称为非关键帧。其中B帧的参考关系与现有方案中B帧的相同,为叙述方便,略去B帧,以R帧及后续的P帧作为数据处理的最小单位。
[0083]在采集视频生成缓冲区数据时,所述缓冲区数据从所述视频的一个I帧或R帧开始,其中,R帧的间隔可以是随机的或周期性的,如码流为I Rl PPP R2 PPPPPP R3P P R4...;或I Rl P P P R2 P P P R3 P P P R4...;而单次缓冲区数据可以是I Rl P PP ;或 I Rl PPP R2 PPPPPP ;或 I Rl PPP R2 PPPPPP R3 P P。
[0084]在缓冲区的设计上,本方案中采用的不是固定长度或固定大小作为单位存储数据,而是以参考关系作为单位,即以一个R帧或I帧作为缓冲区数据的第一帧开始,到与所述I帧或R帧存在参考关系的非关键帧(如,普通的P帧和B帧)结束(如果所述第一帧是I帧,那么剩余数据包括与该I帧存在参考关系的R帧和/或P帧(不简化情况下可能还有B帧);如果所述第一帧是R帧,那么剩余数据包括与该R帧存在参考关系的P帧(不简化情况下可能还有B帧),在下一次重新采集视频生成缓冲区数据时,即可从新的I帧或R帧开始,执行后续操作。
[0085]优选的,在一个单位的缓冲区数据中,还可一次采集多个R帧及R帧对应的P帧,只要调整好存储片与缓冲区数据的大小关系,保证要存入当前存储片的缓冲区数据中具有参考关系的I帧、R帧和非关键帧能存入同一个存储片即可。
[0086]步骤S102:将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0087]其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。
[0088]优选地,所述R帧能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0089]因为这里的缓冲区数据不一定是从一个I帧开始,虽然一组缓冲区数据内的帧存在参考关系,但是如果是以R帧开始,一组缓冲区数据内部是无法独立解码出对应的视频流的。
[0090]当一个单位的缓冲区数据采集结束后存入存储区域,为了避免读取视频时发生跨区解码,首先将一个单位的缓冲区数据存入一个存储片,那么所有的P帧解码时只在同一存储片内从其对应的I帧或R帧开始解码即可;其次,对于一个新的存储片而言,其存入的第一个单位的缓冲区数据可能有两种情况,一种是第一帧为I帧,另一种是第一帧为R帧。对于第一帧为I帧的缓冲区数据,其可以直接从I帧实现解码,直接存入存储片即可;对于第一帧为R帧的缓冲区数据,R帧本身不能实现独立解码,此时需要在新建的存储片的最前方插入R帧对应的I帧作为R帧及R帧的后续P帧的解码基础。
[0091]R帧参考的I帧可以通过以下两种方式实现插入:一种是I帧初次出现时,将I帧缓存,当需要插入时,每次将缓存的I帧插入R帧之前即可,因为I帧可能插入多个R帧之前,所以缓存的I帧只有在新的I帧出现之后才将其替换;另一种是直接从存储片中读取前方最近的I帧,复制插入到R帧之前。
[0092]综上所述,通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。本发明实施例在存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。
[0093]请参考图6,其是发明【具体实施方式】中提供的一种视频存储方法的第二实施例的方法流程图,如图所示,该方法包括:
[0094]步骤S201:接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。
[0095]在视频监控系统中,因为使用场景需要,可能视频采集工具一直在采集视频数据,但是并未存储,当接收到视频存储命令时,视频采集工具采集的当前图像,也就是本应存入存储区域的当前帧不为I帧,此时可以将当前图像按照I帧的编码方式编码。具体编码操作的实现可以由与存储装置集成的编码装置实现,也可由存储装置将该视频存储命令发送给外置的编码器,编码器接收到该视频存储命令时,将当前待编码的图像按照I帧的编码方式编码。
[0096]还可从视频采集工具或与视频采集工具相关的存储设备,例如缓存中查找是否存在已经保存的I帧,如果存在的话,将该I帧采集到数据缓冲区中。
[0097]步骤S202:采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始。
[0098]其中,所述缓冲区数据R帧的间隔可随机或周期,例如每个周期对应的视频的时长为1-3秒。
[0099]在随机状态下,有可能R帧后续的P帧的数目较大,为了保证所有的后续P帧能缓冲到数据缓冲区,数据缓冲区的存储空间设置得足够大。并且一个R帧的后续P帧的随机数也是在一个可控范围内随机,至少不会比两个I帧之间的帧数大。
[0100]所述缓冲区数据对应的视频的时长为1-3秒,以2秒为例,如果每秒采集的视频数据为25帧,那么一个单位的缓冲区数据也就是50帧,其中第一帧为I帧或R帧,并且其中只有极少数的是I帧。因为针对不同的应用场合的稳定性,GOP的长度可能会延伸到几天,也就是说几天内的视频只有一个I帧,这几天内除了 I帧所在的缓冲区数据,剩余的缓冲区数据的第一帧都是R帧,对应地在解码时,假设需要解码的是T时刻对应的F帧,那么先解码I帧,再根据参考关系解码F帧对应的R帧,再将R帧向后逐帧解码,最后读取选取的F帧。
[0101]步骤S203:判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否不大于存储片的存储阈值;若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,执行步骤S204 ;否则执行步骤S205。
[0102]要存入当前存储片的缓冲区数据中具有参考关系的I帧、R帧和非关键帧能存入同一个存储片,在将缓冲区数据存入存储片之前,都要判断存储片中的剩余存储空间是否能存入缓冲区数据,如果可以,执行步骤S204,存入即可,否则在存储区域中开辟新的存储片,具体的数据存储过程与存储区域的分配方案在现有技术已有实现,在此不做进一步说明。
[0103]步骤S204:将所述缓冲区数据中要存入当前存储片的数据存入当前存储片。
[0104]步骤S205:在存储区域中开辟新的存储片。
[0105]步骤S206:判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧;若是,执行步骤S208 ;否则执行步骤S207。
[0106]判断第一帧是否为I帧,是为了防止对存储的视频数据访问时出现跨存储片参考的情况出现,让所有的帧间关系在一个存储片中实现。
[0107]步骤S207:在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧。
[0108]在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,在将要存入当前存储片的数据存入存储片之后,I帧直接位于所述存储片的最前方,方便后续解码。与在存储片的最前方插入I帧的效果相同。
[0109]如步骤S202中描述,当GOP的长度有可能达到几天,在这种情况下,一个GOP的视频数据无法存储在一个存储片,如果简单分开存储,则一定会出现某存储片中没有I帧的情况,由于缓冲区数据是从I帧或R帧开始,如果上述第一帧不是I帧,则该第一帧为R帧,而R帧并不能独立解码,一个存储片中如果没有I帧,在对视频数据进行访问时,就很可能出现跨存储片的参考关系,降低访问效率。
[0110]步骤S207达到的效果具体请参考图7,其是本发明【具体实施方式】中提供的一种视频存储方法的第二实施例中存储区域的存储结构示意图,为了保证每个存储片都有I帧,采用的方法相当于将I帧进行备份,然后派发到每一存储片,每个存储片中的视频数据在解码时,直接参考本存储片内备份的I帧即可。
[0111]步骤S208:将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0112]具体地,还设有有快速检索信息列表。快速检索信息列表的设计是为了在随机访问存储数据或视频回放时便于快速检索;当码流在按图7所示的方式进行存储时,记录了 I帧和R帧的快速检索信息。所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0113]快速检索信息列表的结构如图8所示。当随机访问视频序列中的某一帧时,可根据该帧的时标信息定位与其存在参考关系的R帧和I帧,通过解码该I帧和R帧,以及该R帧之后与其存在参考关系的普通P帧,就可以达到快速解码的目的。也就是说,GOP的时长可能长达几天,但是任意一帧实现解码最多不超过一个缓冲区数据的时长外加一个I帧。
[0114]在本实施例中,可以设置多个数据缓冲区,在数据缓冲区中的数据尽可能接近数据缓冲区的最大值,将数据缓冲区的数据存入存储片中。
[0115]另一种实现方式如图9所示,数据缓冲区中分为多个子分区,其中两个子分区用于缓存I帧,另外子分区用于缓存一个R帧及与该R帧存在参考关系的P帧。数据缓冲区的两个缓存I帧的子分区分别存储有当前I帧和较早I帧,数据缓冲过程中采集到I帧,将较早I帧替换。在状态I和状态2中,Ini ^乍为较早I帧,不会再使用,I ?是在使用的当前正I帧,当采集到新的I帧U时,将I n+1替换I n 1;1 ?将会成为较早的I帧,I ?+1成为当前I帧。R帧的处理过程与I帧的处理过程类似,只是R帧还包括与该R帧存在参考关系的P帧,并且数据更新的速度更快。在状态I中,Rn:及其后续P帧已经缓冲完成,此时将其存储到存储片中,同时比及其后续P帧向数据缓冲区中缓冲。当Rn:及其后续P帧存储结束后,其所在的子分区清空,以备缓存新的R帧,也就是Rn+1。Rn:及其后续P帧的存储结束后,R n及其后续P帧的缓冲也完成,可以向存储区域存储。具体的存储前的判断和I帧的插入过程已经有详细叙述,在此不再说明。为了进一步保证数据缓冲的的流畅,用于缓冲I帧及其后续P帧的子分区可以设置为3个以上,以免数据缓冲和存储不同步导致的数据丢失,设置3个以上,提尚容错性。
[0116]综上所述,通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。本发明实施例在存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。特别针对不同的缓冲区数据的第一帧的不同类型,在存入存储区域分别判断存入的存储片的状态,保证读取视频时解码快速。
[0117]以下是本发明【具体实施方式】中提供的一种视频存储装置的实施例,视频存储装置的实施例基于上述的视频存储方法的实施例实现,在视频存储装置的实施例中未尽的阐述,请参考上述的视频存储方法的实施例。
[0118]请参考图10,其是本发明【具体实施方式】中提供的一种视频存储装置的第一实施例的结构方框图,如图所示,该视频存储装置,包括:
[0119]缓冲区数据采集单元310,用于采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始。
[0120]在本方案中,缓冲区并不是一个另外独立的存储设备,而是从存储区域中划出来的一个小的存储空间,因为视频不是以帧为单位存入存储区域,而是多帧为一组,以组为单位存入存储区域,所以在存入存储之前,需要一个缓冲区缓存视频数据,缓冲到一组之后再存入存储区域中,缓冲区的工作过程是一个不断写入、转存、再写入的过程。
[0121]数据存入单元320,用于将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0122]其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。
[0123]优选地,所述R帧能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0124]在R帧之前插入I帧的操作保证了每个存储片中第一帧都是I帧,避免了跨存储片访问。
[0125]综上所述,上述各单元的协同工作,通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。本发明实施例在存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。
[0126]请参考图11,其是【具体实施方式】中提供的一种视频存储装置的第二实施例的结构方框图,如图所示,该视频存储装置包括:
[0127]缓冲区数据采集单元310,用于采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;
[0128]数据存入单元320,用于将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0129]其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。
[0130]其中,所述数据存入单元320,包括:
[0131]数据大小判断模块321,用于判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否小于存储片的存储阈值;
[0132]第一存入模块322,用于若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否则,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧;
[0133]第二存入模块323,用于若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,所述第一帧为R帧,则在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0134]其中,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0135]快速检索信息列表的存在为视频数据的读取节约了时间,在访问视频序列时直接从快速检索信息列表中定位视频序列的第一帧的参考对象即可。
[0136]所述数据存入单元320,具体用于:
[0137]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或,
[0138]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0139]还包括,编码单元330,用于所述采集视频生成缓冲区数据之前,接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。编码单元330可与其他单元集成设置或分呙设置。
[0140]综上所述,上述各单元和模块的协同合作,通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的最前方插入与第一帧存在参考关系的I帧;其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。本发明实施例在存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。特别针对不同的缓冲区数据的第一帧的不同类型,在存入存储区域分别判断存入的存储片的状态,保证读取视频时解码快速。
[0141]请参考图12,其是本发明【具体实施方式】中提供的一种视频读取方法的第一实施例的方法流程图,如图所示,该视频读取方法,包括:
[0142]步骤S401:确认与被选中的时标信息对应的对应帧。
[0143]在图像帧的存储过程中,都携带有时标信息记录每个图像帧之间的前后关系,在视频解码的过程中,根据时标信息向前,向后或独立解码。对于一个随机访问的视频序列而言,当解码出该视频序列的第一帧,也就是用户选中的时标信息对应的对应帧之后,后续的视频序列的各图像帧就随之实现解码,所以在解码时首要实现对第一帧的直接解码或参考解码。
[0144]步骤S402:若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧。
[0145]若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧。
[0146]步骤S403:若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧。
[0147]若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧。
[0148]对应帧的类型不同,其对应的参考对象也不同,但是更具体而言,其参考对象的分类情况有三种。对应帧本身就是I帧,可以实现独立解码,这种情况下所有的解码方法都是一样的,直接从对应帧开始解码即可,这种情况不做进一步说明;对应帧是R帧,其需要通过I帧实现解码;对应帧是P帧,其需要通过R帧和I帧才能实现解码,也就是对于后两种情况,至少需要对一种参考对象进行定位,步骤S402和步骤S403即分别针对后两种情况。R帧和I帧的定位过程基本相似,整体进行说明。
[0149]在本方案中,设置有快速检索信息列表,快速检索信息列表的结构如图8所示,快速检索信息列表相当于I帧和R帧的索引,在解码的过程中,直接在快速检索信息列表中根据对应帧的时标信息,基于前后时序,找到对应帧之前最近的参考对象(对应帧为R帧,参考对象为I帧;对应帧为P帧,参考对象为I帧和R帧),在快速检索信息列表中记录有参考对象在存储片中的偏移,可以根据偏移直接在数据片中定位参考对象,进而开始解码。无需在存储片中逐帧回溯寻找参考对象,实现了对参考对象的快速定位,特别对于GOP特别长的视频数据能够明显提高解码效率。
[0150]步骤S404:通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列;
[0151]其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0152]具体的参考解码过程与现有技术中的实现方式相同,在此不做进一步阐述。
[0153]综上所述,通过R帧建立非关键帧与I帧的关联,实现从I帧到非关键帧的快速解码,从I帧到R帧和从R帧到非关键帧的解码都在同一存储片内实现,避免了跨存储片解码导致的解码效率降低;快速检索信息列表的设置,对于视频数据中的任意帧,都可对其参考对象实现快速定位,缩短解码目标帧和参考帧之间的距离,提高解码效率,特别适用于GOP特别长的视频数据。
[0154]请参考图13,其是本发明【具体实施方式】中提供的一种视频读取装置的第一实施例的结构方框图。视频读取装置的实施例基于上述视频读取方法的实施例实现,在视频读取装置的实施例中未尽的描述,请参考上述的视频读取方法的实施例。如图所示,该视频读取装置,包括:
[0155]对应帧处理单元510,用于确认与被选中的时标信息对应的对应帧;
[0156]第一定位单元520,用于若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧;
[0157]第二定位单元530,用于若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧;
[0158]视频序列读取单元540,用于通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列;
[0159]其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0160]其中,所述第一定位单元520,具体用于:
[0161]若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧;
[0162]所述第二定位单元530,具体用于:
[0163]若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧;
[0164]其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。
[0165]快速检索信息列表不属于其中某个存储片,而是存储于存储区域的某个独立划分出来的存储空间中,用于实现对整个存储片中的数据管理,特别是用于对参考对象的快速索引。
[0166]综上所述,上述各功能组件的协同工作,通过R帧建立非关键帧与I帧的关联,实现从I帧到非关键帧的快速解码,从I帧到R帧和从R帧到非关键帧的解码都在同一存储片内实现,避免了跨存储片解码导致的解码效率降低;快速检索信息列表的设置,对于视频数据中的任意帧,都可对其参考对象实现快速定位,缩短解码目标帧和参考帧之间的距离,提高解码效率,特别适用于GOP特别长的视频数据。
[0167]请参考图14,其是本发明【具体实施方式】中提供的额一种视频存取系统的第一实施例的结构方框图。视频存储系统是前述视频存储装置和视频读取装置的实施例的综合运转的实现,各功能组件的运转方式与上述各装置独立工作时的运转方式一样。如图所示,该视频存取系统,包括视频存储装置300和视频读取装置500 ;其中,所述视频存储装置300,包括:
[0168]缓冲区数据采集单元310,用于采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始。
[0169]数据存入单元320,用于将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧;
[0170]其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。
[0171]其中,所述数据存入单元320,包括:
[0172]数据大小判断模块321,用于判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否小于存储片的存储阈值;
[0173]第一存入模块322,用于若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否则,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧;
[0174]第二存入模块323,用于若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0175]其中,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0176]所述数据存入单元320,具体用于:
[0177]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或,
[0178]将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。
[0179]快速检索信息列表的存在为视频数据的读取节约了时间,在访问视频序列时直接从快速检索信息列表中定位视频序列的第一帧的参考对象即可。
[0180]优选地,所述缓冲区数据对应的视频的时长为1-3秒。
[0181]所述视频读取装置500,包括:
[0182]对应帧处理单元510,用于确认与被选中的时标信息对应的对应帧;
[0183]第一定位单元520,用于若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧;
[0184]第二定位单元530,用于若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧;
[0185]视频序列读取单元540,用于通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列;
[0186]其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。
[0187]其中,所述第一定位单元520,具体用于:
[0188]若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧;
[0189]所述第二定位单元530,具体用于:
[0190]若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧;
[0191]其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。
[0192]综上所述,通过上述各功能组件的协同合作,上述各单元和模块的协同合作,通过采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始;将所述缓冲区数据存入存储区域的片,若所述片为新开辟的片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。本发明实施例在存储过程中避免了视频的码流丢失和GOP编码的码流结构的变化,在读取视频时避免了跨存储片参考,实现了随机访问时的快速解码。特别针对不同的缓冲区数据的第一帧的不同类型,在存入存储区域分别判断存入的存储片的状态,保证读取视频时解码快速。通过R帧建立非关键帧与I帧的关联,实现从I帧到非关键帧的快速解码,从I帧到R帧和从R帧到非关键帧的解码都在同一存储片内实现,避免了跨存储片解码导致的解码效率降低;快速检索信息列表的设置,对于视频数据中的任意帧,都可对其参考对象实现快速定位,缩短解码目标帧和参考帧之间的距离,提高解码效率,特别适用于GOP特别长的视频数据。
[0193]两者的结合,能够实现视频存储的快速准确完整,避免了因为数据缓冲区的第一帧不是参考对象而放弃视频数据,而对应存储的视频数据,在读取时可直接在存储片之内完成解码,没有跨存储片的关联出现,同时,快速检索信息列表也提高了数据访问的效率,根据参考对象的位置直接访问对应的数据,提高解码效率。
[0194]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
[0195]尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。
【主权项】
1.一种视频存储方法,其特征在于,包括: 采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始; 将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧; 其中,所述缓冲区数据中的R帧为仅参考I帧的图像帧。2.根据权利要求1所述的一种视频存储方法,其特征在于,所述将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧,包括: 判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否不大于存储片的存储阈值; 若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否则,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧; 若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,所述第一帧为R帧,则在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。3.根据权利要求1所述的一种视频存储方法,其特征在于,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。4.根据权利要求1所述的一种视频存储方法,其特征在于,所述将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧,具体为: 将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或, 将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。5.根据权利要求1所述的一种视频存储方法,其特征在于,所述采集视频生成缓冲区数据之前,还包括: 接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。6.一种视频存储装置,其特征在于,包括: 缓冲区数据采集单元,用于采集视频生成缓冲区数据,所述缓冲区数据从所述视频的一个I帧或R帧开始; 数据存入单元,用于将所述缓冲区数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入存储片的数据的第一帧为R帧,则在所述新开辟的存储片插入与第一帧存在参考关系的I帧; 其中,所述缓冲区数据中R帧为仅参考I帧的图像帧。7.根据权利要求6所述的一种视频存储装置,其特征在于,所述数据存入单元,包括: 数据大小判断模块,用于判断所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和是否小于存储片的存储阈值; 第一存入模块,用于若所述缓冲区数据中要存入当前存储片的数据与当前存储片已有数据之和不大于存储片的存储阈值,将所述缓冲区数据中要存入当前存储片的数据存入当前存储片;否则,在存储区域中开辟新的存储片,并判断所述缓冲区数据中要存入当前存储片的数据的第一帧是否为I帧; 第二存入模块,用于若所述缓冲区数据中要存入当前存储片的数据的第一帧为I帧,将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;否则,所述第一帧为R帧,则在所述新开辟的存储片的最前方插入与所述R帧存在参考关系的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。8.根据权利要求6所述的一种视频存储装置,其特征在于,所述存储区域中还保存有记录I帧和R帧的快速检索信息的快速检索信息列表;所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片起始位置的偏移;所述R帧作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。9.根据权利要求6所述的一种视频存储装置,其特征在于,所述数据存入单元,具体用于: 将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取缓存的I帧,并在所述新开辟的存储片的最前方插入所述缓存的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片;所述缓存的I帧在I帧出现时缓存,当新的I帧出现时替换缓存的I帧;或, 将所述缓冲区数据中要存入当前存储片的数据存入存储区域的存储片,若所述存储片为新开辟的存储片且所述缓冲区数据中要存入当前存储片的数据的第一帧为R帧,则读取前一存储片中最近的I帧,并在所述新开辟的存储片的最前方插入所述最近的I帧,再将所述缓冲区数据中要存入当前存储片的数据存入新的存储片。10.根据权利要求6所述的一种视频存储装置,其特征在于,还包括: 编码单元,用于所述采集视频生成缓冲区数据之前,接收到视频存储命令时,将当前的图像按照I帧的编码方式编码。11.一种视频读取方法,其特征在于,包括: 确认与被选中的时标信息对应的对应帧; 若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述第一帧存在参考关系的I帧; 若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧; 通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列; 其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。12.根据权利要求11所述的一种视频读取方法,其特征在于,所述若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧,具体为: 若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧; 所述若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧,具体为: 若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认第一帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧; 其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。13.一种视频读取装置,其特征在于,包括: 对应帧处理单元,用于确认与被选中的时标信息对应的对应帧; 第一定位单元,用于若所述对应帧不能独立解码且为R帧,根据所述时标信息定位与所述对应帧存在参考关系的I帧; 第二定位单元,用于若所述对应帧不能独立解码且非R帧,根据所述时标信息定位与所述对应帧存在参考关系的R帧以及与该R帧存在参考关系的I帧; 视频序列读取单元,用于通过所述I帧解码出R帧,从所述R帧开始向后依次解码以获得待读取的所述视频序列; 其中,所述R帧为仅参考I帧的图像帧,并能作为后续非关键帧的参考对象;且具有参考关系的I帧、R帧和非关键帧存储在存储区域的同一存储片中。14.根据权利要求13所述的一种视频读取装置,其特征在于,所述第一定位单元,具体用于: 若所述对应帧不能独立解码且为R帧,从快速检索信息列表比对根据所述时标信息以确认对应帧之前最近的I帧,从该I帧的快速检索信息中读取该I帧在存储片中相对存储片的起始位置的偏移以定位该I帧; 所述第二定位单元,具体用于: 若所述对应帧不能独立解码且非R帧,从快速检索信息列表中比对所述时标信息以确认对应帧之前最近的I帧和R帧,从该I帧和R帧的快速检索信息中读取该I帧和R帧在存储片中相对存储片的起始位置的偏移以定位该I帧和R帧; 其中,所述快速检索信息包括帧类型、帧长度、相对时标、绝对时标和在存储片中相对存储片的起始位置的偏移。15.一种视频存取系统,其特征在于,包括如权利要求6-10任意一项所述的视频存储装置和如权利要求13-14任意一项所述的视频读取装置。
【文档编号】H04N19/433GK105847722SQ201510024001
【公开日】2016年8月10日
【申请日】2015年1月16日
【发明人】陈建华, 浦世亮, 谭翔, 俞海
【申请人】杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1