具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供的主要方法可以如图1所示,该方法主要包括以下步骤:
步骤101:确定视频编码器产生的视频数据中各I帧组的特征值。
步骤102:在存储设备接收到所述视频数据后,确定所述视频数据中各I帧组的特征值。
步骤103:将步骤101中确定的各I帧组的特征值和步骤102中确定的各I帧组的特征值逐一进行比较,如果存在特征值不一致,则确定步骤101确定的特征值中发生不一致的特征值对应的I帧组出错。
其中,上述特征值可以是各I帧组的时间戳,或者是针对各I帧组计算的校验和,或者是各I帧组的时间戳和针对该I帧组计算的校验和之间的对应关系等。
视频数据在传输和写入存储设备过程中都是以I帧组为单位的,可以记录每个I帧中首帧的时间戳,或者记录每个I帧组中其他固定帧的时间戳作为该I帧组的时间戳。
可以采用多种方式针对各I帧组计算校验和,例如,可以采用异或校验法、奇偶校验法、循环冗余校验法等。本发明中均以异或校验法为例,异或校验法是从数据中的第一位起与预设的校验初始值(通常为0)进行异或,异或得到的值再与第二位进行异或,依次类推,都将当前位异或得到的值与下一位进行异或,直到该I帧组中预设各位执行完毕,例如对数据11010100101110001010以校验初始值为0计算校验和,得到的校验和为1。其中,预设各位可以是I帧组中的所有位,即对整个I帧组中的所有各位数据计算校验和,由于各I帧组会被切分为固定长度的数据包,因此上述预设各位也可以是I帧组中各数据包中的固定位,例如将I帧组中各数据包的第1位和第2位抽出组成的各位数据计算校验和。
在以下的描述中均以特征值为各I帧组的时间戳和针对该I帧组计算的校验和之间的对应关系为例进行描述。可以将视频编码器产生的视频数据中各I帧组的时间戳和针对各I帧组计算的校验和之间的对应关系记录为第一对应表,将存储设备存储该视频数据后各I帧组的时间戳和针对各I帧组计算的校验和之间的对应关系记录为第二对应表,然后逐一对第一对应表中的内容和第二对应表中的内容进行比对。
在比对过程中,假设得到的第一对应表和第二对应表如图2所示,如果时间戳出现不一致,则可以进行报错,并输出第一对应表中出现不一致的时间戳,图2中对第一对应表和第二对应表中的内容进行逐一比对时,到时间戳为2008-11-2319:28:34时出现不一致,此时进行报错处理,该报错处理包括:输出时间戳2008-11-2319:28:34指示该时间戳对应的I帧组发生丢包。由于时间戳不一致会造成后续的比对都发生错位,因此,在发生时间戳不一致时,还会在第一对应表中查找与第二对应表中出现不一致的时间戳相同的时间戳,此时的上述报错处理包括:输出从发生不一致的时间戳到查找到的该相同的时间戳之间的时间段信息以表明该时间段内发生丢包现象,并从查找到的相同的时间戳开始继续比对,依次类推。例如,到2008-11-2319:28:34时出现不一致进行报错处理后,在第一对应表中查找与2008-11-2319:28:35相同的时间戳,然后从该时间戳2008-11-2319:28:35开始继续进行两个对应表内容的比对。
如果在比对过程中出现时间戳一致但校验码不一致,则进行报错,并输出发生不一致的校验码对应的时间戳。例如,比对到时间戳2008-11-2319:28:36时发生校验码不一致,进行报错,并输出时间戳2008-11-2319:28:36指示该时间戳对应的I帧组发生丢包。
本发明所提供的上述方法可以采用以下几种方式实现:
第一种方式:图1中的步骤101由视频编码器的CPU来执行,视频编码器将产生的视频数据存储在视频编码器中的数据缓存中,CPU读取数据缓存中的视频数据,针对视频数据的各I帧组计算校验和,并将计算的校验和和该I帧组的时间戳之间的对应关系记录为第一对应表。图1中的步骤102和步骤103由与存储设备连接的PC机执行,即视频数据写入存储设备后,与存储设备连接的PC机从存储设备中读取视频数据,针对读取的视频数据的各I帧组计算校验和,并将计算的校验和和该I帧组的时间戳之间的对应关系记录为第二对应表;视频编码器的CPU将记录的第一对应表发送给该PC机,该PC将第一对应表和第二对应表中的内容进行逐一比较并在时间戳或校验和不一致时进行报错处理。第一种方式对应的系统结构图如图3所示。
另外在该种实现方式中,为了不影响到编码器CPU的性能和缓存的空间,可以考虑在视频编码器中增加特定的硬件,例如现场可编程逻辑阵列(FPGA)来完成校验和的计算和第一对应表的记录。
第二种方式:图1中的步骤101由与视频编码器连接的第一PC机来执行,第一PC机获取视频编码器产生的视频数据,针对视频数据的各I帧组计算校验和,并将计算的校验和和该I帧组的时间戳之间的对应关系记录为第一对应表。图1中的步骤102和步骤103由与存储设备连接的第二PC机执行,即视频数据写入存储设备后,与存储设备连接的第二PC机从存储设备中读取视频数据,针对读取的视频数据的各I帧组计算校验和,并将计算的校验和和该I帧组的时间戳之间的对应关系记录为第二对应表;然后通过第一PC机将记录的第一对应表发送给第二PC机,第二PC将第一对应表和第二对应表中的内容进行逐一比较并在时间戳或校验和不一致时进行报错处理。第二种方式对应的系统结构图如图4所示。
第三种方式:图1中的步骤101由视频编码器执行,步骤102和步骤103由存储设备执行,视频编码器产生视频数据后,针对视频数据的各I帧组计算校验和,并将计算的校验和和该I帧组的时间戳携带在该I帧组的其中一个报文中发送给存储设备,例如可以携带在各I帧组的最后一个报文中。存储设备接收到视频编码器发送来的视频数据后,针对该视频数据的各I帧组计算校验和确定各I帧组的时间戳,并与各I帧组的最后一个报文中携带的时间戳和校验和进行比对,在时间戳或校验和不一致时进行报错处理。第三种方式对应的系统结构图如图5所示。
为了方便对该第三种方式和第四种方式的理解,首先对视频编码器向存储设备传输视频数据的流程进行简单介绍,如图6所示,视频编码器中的iSCSI协议客户端首先针对要传输的I帧组向IP SAN存储设备发送iSCSI写请求(现有iSCSI协议中报文的类型标识为0x01);存储设备中的iSCSI协议目标端接收到该SCSI写请求后,如果准备好对该I帧组视频数据的接收,则向视频编码器回复准备接收(R2T,Ready to Transfer)响应(现有iSCSI协议中报文的类型标识为0x31);iSCSI协议客户端接收到该R2T响应后,将该I帧组通过多个数据传输(Data-Out)报文发送给存储设备(现有iSCSI协议中Data-out报文的类型标识为0x05);存储设备成功接收并存储该I帧组后,iSCSI协议目标端向视频编码器回复正确写入响应(现有iSCSI协议中报文的类型标识为0x21)。
视频数据的各I帧组在从视频编码器到存储设备的传输过程中是通过Data-out报文进行的,一个I帧组通常按照大小被分为多个Data-out报文进行传输,该I帧组的时间戳和校验和可以携带在一个I帧组的最后一个Data-out报文中发送。可以使用Data-out的预留字段作为时间戳(Timestamp)字段和校验和(checksum)字段来分别携带时间戳和校验和信息,如图7所示,图7为本发明实施例提供的Data-out报文的格式图,其他字段的格式与现有技术相同。
该种方式中除了采用这种实时比对的方式外,存储设备也可以将接收到的Data-out报文中携带的时间戳和校验和之间的对应关系存储为第一对应表,将接收到视频数据后存储设备确定的时间戳和计算的校验和之间的对应关系存储为第二对应表,再将第一对应表和第二对应表的内容进行逐一比对。
第四种方式:图1中步骤101和步骤103由视频编码器执行,步骤102由存储设备执行。视频编码器产生视频数据后,确定各I帧组的时间戳,针对视频数据的各I帧组计算校验和,并记录各I帧组的时间戳与校验和之间的对应关系。视频编码器发送视频数据给存储设备后,存储设备确定各I帧组的时间戳并针对各I帧组的校验和,并将确定的I帧组的时间戳与校验和之间的对应关系携带在针对该I帧组的正确写入响应中回复给视频编码器。视频编码器接收到正确写入响应后,获取其中携带的时间戳和校验和之间的对应关系,并与自身记录的时间戳和校验和之间的对应关系进行比对,在时间戳或校验和不一致时进行报错处理。第四种方式对应的系统结构图如图8所示。
这种方式中,可以采用将正确写入响应报文中的预留字段作为timestamp字段和checksum字段分别携带时间戳和校验和信息,其格式可以如图9所示,图9为本发明实施例提供的正确写入响应报文格式图,其他字段的格式与现有技术相同。
同样,在第四种方式中视频编码器也可以将自身确定的时间戳和计算的校验和之间的对应关系记录为第一对应表,将从正确写入响应报文中获取的时间戳和校验和之间的对应关系记录为第二对应表,再将第一对应表和第二对应表之间的内容进行逐一比较。
以上是对本发明所提供的方法进行的描述,下面对本发明所提供的系统进行详细描述。图10为本发明实施例提供的系统结构图,如图10所示,该系统可以包括:第一确定单元101、第二确定单元102和比对单元103。
第一确定单元101,用于确定视频编码器产生的视频数据中各I帧组的特征值。
第二确定单元102,用于在存储设备接收到视频数据后,确定视频数据中各I帧组的特征值。
比对单元103,用于将第一确定单元101确定的各I帧组的特征值和第二确定单元102确定的各I帧组的特征值逐一进行比对,如果存在特征值不一致,则确定第一确定单元101确定的特征值中发生不一致的特征值对应的I帧组出错。
其中,第一确定单元101和第二确定单元102确定的各I帧组的特征值为:各I帧组的时间戳,或者针对各I帧组计算的校验和,或者各I帧组的时间戳和针对该I帧组计算的校验和之间的对应关系。
另外,该系统还可以包括:报错单元104,用于在比对单元103执行逐一进行比对的操作过程中,如果存在时间戳不一致,则进行报错并输出发生不一致的时间戳中第一确定单元101确定的时间戳;或者,如果存在时间戳一致但校验和不一致时,进行报错并输出发生不一致的校验和对应的时间戳。
当各I帧组的特征值为各I帧组的时间戳和针对该I帧组计算的校验和之间的对应关系时,比对单元103还用于在比对出时间戳不一致时,在第一确定单元101确定的时间戳中查找与出现不一致的时间戳中属于第二确定单元102确定的时间戳相同的时间戳,从该查找到的时间戳和出现不一致的时间戳中属于第二确定单元102确定的时间戳开始继续逐一进行比对。
此时,报错单元104还可以用于在比对单元103查找到与出现不一致的时间戳中属于第二确定单元102确定的时间戳相同的时间戳时,输出从存在不一致的时间戳到查找到的时间戳之间的时间段信息以表明该时间段内发生丢包。
该系统可以由四种结构和方式进行实现:
第一种:第一确定单元101设置在视频编码器中,且第一确定单元101将确定的各I帧组的特征值发送给第二确定单元102;第二确定单元102和比对单元103设置在与存储设备连接的PC机中,这种结构的系统可以如图3所示。
此时的第一确定单元可以为视频编码器中的CPU或FPGA。
第二种:第一确定单元101设置在与视频编码器连接的第一PC机中,且第一确定单元101将确定的各I帧组的特征值发送给第二确定单元102,第二确定单元102和比对单元103设置在与存储设备连接的第二PC机中,这种结构的系统可以如图4所示。
第三种:第一确定单元101设置在视频编码器中,且第一确定单元101将确定的各I帧组的特征值携带在发送给存储设备的该I帧组的其中一个Data-out报文中,第二确定单元102和比对单元103设置在存储设备中,比对单元103从存储设备接收到的各I帧组的其中一个Data-out报文中获取第一确定单元101确定的各I帧组的特征值,并将获取的特征值与第二确定单元102确定的特征值进行比对,该种结构的系统可以如图5所示。
第四种:第一确定单元101和比对单元103设置在视频编码器中,第一确定单元101还用于记录确定的各I帧组的特征值;第二确定单元102设置在存储设备中,第二确定单元102将自身确定的各I帧组的特征值携带在各I帧组对应的正确写入响应报文中发送给视频编码器;比对单元103将第一确定单元101记录的各I帧组的特征值与视频编码器接收到的正确写入响应报文中携带的各I帧组的特征值进行比对,该种结构的系统可以如图8所示。
由以上描述可以看出,本发明提供的方法和系统通过确定视频编码器产生的数据中各I帧组的特征值,并确定存储设备接收到所述视频数据后各I帧组的特征值,并将两者进行比对,如果存在特征值不一致,则确定发生不一致的特征值对应的I帧组出错。这种方式相比较人眼观看视频录像和通过分辨存储设备存储的视频数据的时间戳间隔是否为预设的时间间隔检测存储视频数据一致性的方式,显然本发明将传输前视频编码器产生的各I帧组的特征值和传输后各I帧组的特征值进行比较的方式能够更加准确地实现存储视频数据完整性地检测。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。