CN117909541A - 一种用于实现海量视频指纹快速识别的键值数据库构建方法 - Google Patents
一种用于实现海量视频指纹快速识别的键值数据库构建方法 Download PDFInfo
- Publication number
- CN117909541A CN117909541A CN202410102615.9A CN202410102615A CN117909541A CN 117909541 A CN117909541 A CN 117909541A CN 202410102615 A CN202410102615 A CN 202410102615A CN 117909541 A CN117909541 A CN 117909541A
- Authority
- CN
- China
- Prior art keywords
- video
- fingerprint
- key value
- value database
- fingerprints
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 15
- 230000011218 segmentation Effects 0.000 claims abstract description 19
- 238000003491 array Methods 0.000 claims abstract description 3
- 238000007792 addition Methods 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 claims description 8
- 239000012634 fragment Substances 0.000 claims description 3
- 238000000034 method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种用于实现海量视频指纹快速识别的键值数据库构建方法,该方法首先获取不同分辨率下加密视频的音视频明文分段长度序列作为明文指纹,接着合并同视频的指纹条目为待处理指纹集,然后根据每个视频的音视频分段总数划分到多个子库,作为组合指纹以链表形式添加到子库键值数组对应键值的元素后,最后将构建好的键值数据库以文件形式保存。系统运行时需要将键值数据库文件读入内存,在用于视频指纹识别时,基于需要匹配的视频分段指纹长度进行多线程检索,获取子库中键值与分段指纹长度在允许误差范围内的对应链表,从而得到可用于后续实现视频准确识别使用的视频指纹结果集。本发明具有通用性,能够实现海量视频指纹的高速读取和识别。
Description
技术领域
本发明涉及一种用于实现海量视频指纹快速识别的键值数据库构建方法,属于计算机网络安全技术领域。
背景技术
随着互联网技术的进步和宽带速度的提升,视频成为最受欢迎的媒体形式之一。随着视频应用的爆炸性增长,对视频流量的监管变得尤为重要。对视频流量的监管不仅可以保护版权、避免不适内容的传播,还有助于优化网络资源的使用和维护网络安全。而在当前的视频传输中,加密技术的普及给视频流量监管带来了挑战,迫切需要发展新技术以对加密传输视频进行识别。
现有的方法主要是将视频本身的唯一特征作为指纹数据,构建成一个大型的视频指纹库,需要识别视频时,通过将从加密流量中提取的视频特征与视频指纹库中的指纹进行匹配来识别视频。
视频指纹库中的指纹通常是视频片段的长度序列。分析表明,目前的加密视频识别技术主要利用流媒体的HTTP自适应流(HTTP Adaptive Streaming,HAS)技术来提取视频特征。首先将视频内容切分成多个片段,然后通过可变比特率(Variable Bit Rate,VBR)技术对视频内容进行编码,并根据流媒体播放器的实际网络带宽传输不同质量的视频片段。基于HAS进行传输的每个视频片段的长度序列与视频内容有关,视频片段的长度序列构成了视频的特征,可以据此实现对特定视频的内容识别。将这些视频片段长度作为视频指纹,可以用来构建视频指纹库。
但是,为了防止侧信道攻击,许多视频网站会在视频分段的基础上将音视频片段进行组合传输,每个组合包括的音视频片段数量从单个片段到十几个片段不等,由于加密传输时,无法将组合传输的片段分开,每一种组合长度都可能作为视频的特征进入数据库匹配,使得指纹数据库中不仅需要包括单个视频片段的长度信息,还需要包括所有可能的组合视频片段长度信息,需要记录的指纹数据量显著增加。
考虑到现网视频数量庞大,以及组合传输造成的视频指纹数据量显著增加,构建海量视频指纹库的数据库设计至关重要。视频指纹库的结构是实现视频指纹快速识别的基础。当今的数据库构建技术主要包括关系型数据库和非关系型数据库两大类。关系型数据库,如MySQL和Oracle,通过表格和结构化查询语言(SQL)提供高效的数据存储和查询功能,擅长精确和结构化数据的查询。非关系型数据库,如NoSQL数据库,包括键值存储、文档存储、列族存储等,提供了更灵活的数据模型和扩展性,适合处理大规模数据集和复杂的查询。在视频分段组合传输导致数据量巨大的情况下,键值数据库在实现海量视频指纹快速识别方面具有明显优势。键值数据库是当今数据库技术的一个重要分支,以键值对的形式存储数据,每个键对应一个唯一的值。键值数据库以其简洁的数据模型、高效的读写操作和良好的可扩展性而突出,这些特点使键值数据库特别适合处理海量的、需要快速访问和检索的非结构化数据。
本发明针对海量视频场景中的视频快速识别需求,基于键值数据库的原理设计了一种用于实现海量视频指纹快速识别的键值数据库构建方法。在已有的发明专利“一种面向HTTP/2流量多路复用特征的加密视频识别方法”、“一种基于HTTP/3传输特性的加密视频识别方法”、“一种基于视频指纹的分辨率自适应加密视频快速识别方法”中,聚焦点均为实现加密视频匹配识别的过程,但是并没有给出在海量指纹库中包含上亿指纹的情况下,如何进行快速匹配的方法。因此,本发明提出的用于实现海量视频指纹快速识别的键值数据库构建方法具有创新性,可为在真实网络中进行加密视频的实时识别提供基础。
发明内容
本发明公开了一种用于实现海量视频指纹快速识别的键值数据库构建方法,该方法首先获取不同分辨率下加密视频的音视频明文分段长度序列作为明文指纹,接着合并同视频的指纹条目为待处理指纹集,然后根据每个视频的音视频分段总数划分到多个子库,并为每个子库创建键值数组,接着计算每个视频所有可能的相邻分段指纹组合相加结果,作为组合指纹以链表形式添加到子库键值数组对应键值的元素后,最后将构建好的键值数据库以文件形式保存。在用于视频指纹视频识别时,首先将键值数据库文件读入内存,然后基于需要匹配的视频分段指纹长度进行多线程检索,获取子库中键值与分段指纹长度在允许误差范围内的对应链表,从而得到可用于后续实现视频准确识别使用的视频指纹结果集。本发明具有通用性,能够实现海量视频指纹的高速读取和识别。
为了实现本发明的目的,本方案具体技术步骤如下:一种用于实现海量视频指纹快速识别的键值数据库构建方法,所述方法包括以下步骤:
步骤(1)下载并提取不同分辨率下加密视频的音视频明文分段信息,分别记录分段长度序列作为明文指纹,打上内容标签,存入指纹文件,用于构建键值指纹库。
步骤(2)根据视频ID将步骤(1)得到的指纹文件中属于同一个视频的所有分辨率的指纹条目合并为一个视频的待处理指纹集,计算并记录组合指纹总数。
步骤(3)根据步骤(2)得到的视频总数、视频ID、视频分段总数,划分键值数据库子库,并为每个子库创建32字节的字节数组,字节数组下标数值即为键值,数组元素用于存储后接链表第一个元素的位置指针。
步骤(4)对步骤(2)得到的每个视频的每种分辨率对应的分段指纹序列,依次计算一至多个相邻分段指纹的所有可能的组合相加结果,每一种组合结果作为一个组合指纹添加到键值数据库,添加方式见步骤(5)。
步骤(5)按照步骤(3)划分出的每个键值数据库子库,对步骤(4)得到的每个组合指纹,以链表的形式链接到子库的字节数组中键值与组合指纹长度一致的数组元素后。
步骤(6)在系统运行时,首先将键值数据库文件读入内存,形成内存键值数据库,系统运行期间内存键值数据库常驻内存。
步骤(7)根据加密视频流量中提取的待查询分段指纹,多线程同时获取每个子库的字节数组中键值与分段指纹长度在允许误差范围内的元素对应的链表,得到可用于视频准确识别的视频指纹结果集。
进一步的,所述步骤(1)中,下载并提取不同分辨率下加密视频的音视频明文分段信息,分别记录分段长度序列作为明文指纹,打上内容标签,存入指纹文件,用于构建键值指纹库,方法如下:
(1.1)利用网络爬虫技术收集大量视频的URL列表。
(1.2)根据获取的URL列表,构建特定的请求头以访问并下载视频的元数据文件。
(1.3)分析视频元数据文件,提取不同分辨率下的视频片段长度序列,形成视频的明文指纹数据,同时标记视频的ID、标题、分辨率等信息。
(1.4)对于步骤(1.1)获取的URL列表中的每一条URL,重复步骤(1.2)和(1.3),获得对应视频的明文指纹,并将其与视频标记信息一起存储于指纹文件中。
进一步的,所述步骤(3)中,根据步骤(2)得到的视频总数、视频ID、视频分段总数,划分键值数据库子库,并为每个子库创建32字节的字节数组,字节数组下标数值即为键值,数组元素用于存储后接链表第一个元素的位置指针,方法如下:
(3.1)为了提高后续匹配速度,根据组合指纹总数决定划分为n个键值数据库子库,用于支持多线程匹配。最多可分配的子库个数取决于设备的CPU的处理能力。
(3.2)以同一个视频ID为单位,在所有视频中选取前50%个视频,随机分配到n个子库中。
(3.3)计算每个子库当前音视频分段总数。
(3.4)对于剩下的50%的视频,计算每个视频的音视频分段总数,并总是添加到当前音视频分段总数最少的子库。最终得到音视频分段总数均衡的n个键值数据库子库。
(3.5)为每个键值数据库子库,创建长度为32M的字节数组,数组元素用于存储后接链表第一个元素的位置指针。
进一步的,所述步骤(4)中,对步骤(2)得到的每个视频的每种分辨率对应的分段指纹序列,依次计算一至多个相邻分段指纹的所有可能的组合相加结果,每一种组合结果作为一个组合指纹添加到键值数据库,添加方式见步骤(5),方法如下:
(4.1)单指纹组合:从一个指纹序列中依次提取每个单独的指纹,如第1个、第2个、第3个等,添加到键值数据库,具体元素添加方式见步骤(5)。
(4.2)双指纹组合:生成两个相邻指纹的组合,例如第1-2个相加、第2-3个相加、第3-4个相加等,添加到键值数据库。
(4.3)三指纹组合:计算三个连续指纹的组合,如第1-2-3个相加、第2-3-4个相加等,添加到键值数据库。
(4.4)更多指纹组合:继续这个模式,生成更多个连续指纹的组合,并添加到键值数据库。最大组合数与视频平台实际传输情况有关。由此完成将当前视频的组合指纹添加进键值数据库。
(4.5)对步骤(1)记录的每个视频的每种分辨率对应的分段指纹序列重复上述步骤(4.1)到(4.4),构成存储海量视频指纹的键值数据库。
进一步的,所述步骤(7)中,根据加密视频流量中提取的待查询分段指纹,多线程同时获取每个子库的字节数组中键值与分段指纹长度在允许误差范围内的元素对应的链表,得到可用于视频准确识别的视频指纹结果集,方法如下:
(7.1)根据待查询分段指纹长度m,多线程同时查询每个键值数据库子库。
(7.2)获取子库键值(即字节数组下标)为m的元素对应的链表,将链表中的每个元素和键值数值纳入查询结果集。
(7.3)按照正态分布,扩大允许的误差范围以覆盖更多可能的正确结果,即设置键值匹配范围为允许误差范围,对落在范围内的键值执行步骤(7.2)。最终得到可用于后续实现视频准确识别使用的视频指纹结果集。
与现有技术相比,本发明的技术方案具有以下有益技术效果:
(1)本发明采用了一种直接键值访问机制来实现视频指纹的高效处理和检索,利用键值数据库的核心优势,将视频指纹长度作为键值,将每个视频分段信息与对应片段长度的键以链表的形式相关联,实现快速、直接的数据访问。与传统的复杂关系型数据库模型相比,这种简化的数据结构减少了查询和处理的复杂性,不仅显著提高了数据检索的速度,也简化了数据库的维护和扩展。
(2)本发明考虑到了现有视频网站对音视频分段进行组合传输的情况,将因此而产生的复杂而大量的组合指纹简化为统一的数据结构,在数据量剧增的情况下保持了数据库的紧凑型和高效性,体现出对网络环境变化的高度适应性。
(3)本发明将数据库分割为多个子库,实现在每个子库上执行多线程查询,不仅加快了当前查询请求的效率,而且支持实现多个查询请求同时处理。这种并行处理极大提高了系统的处理能力,特别是在面对大量的数据查询和高并发访问时,非常适合海量视频指纹识别场景。
附图说明
图1为用于实现视频指纹快速识别的键值数据库总体结构图;
图2为键值数据库文件结构示意图;
图3为键值数据库查询原理图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
具体实施例:本发明提供的一种用于实现海量视频指纹快速识别的键值数据库构建方法,其总体结构如图1所示,包括以下步骤:
步骤(1)下载并提取不同分辨率下加密视频的音视频明文分段信息,分别记录分段长度序列作为明文指纹,打上内容标签,存入指纹文件,用于构建键值指纹库。
步骤(2)根据视频ID将步骤(1)得到的指纹文件中属于同一个视频的所有分辨率的指纹条目合并为一个视频的待处理指纹集,计算并记录组合指纹总数。
步骤(3)根据步骤(2)得到的视频总数、视频ID、视频分段总数,划分键值数据库子库,并为每个子库创建32字节的字节数组,字节数组下标数值即为键值,数组元素用于存储后接链表第一个元素的位置指针。
步骤(4)对步骤(2)得到的每个视频的每种分辨率对应的分段指纹序列,依次计算一至多个相邻分段指纹的所有可能的组合相加结果,每一种组合结果作为一个组合指纹添加到键值数据库,添加方式见步骤(5)。
步骤(5)按照步骤(3)划分出的每个键值数据库子库,对步骤(4)得到的每个组合指纹,以链表的形式链接到子库的字节数组中键值与组合指纹长度一致的数组元素后。
步骤(6)在系统运行时,首先将键值数据库文件读入内存,形成内存键值数据库,系统运行期间内存键值数据库常驻内存。
步骤(7)根据加密视频流量中提取的待查询分段指纹,多线程同时获取每个子库的字节数组中键值与分段指纹长度在允许误差范围内的元素对应的链表,得到可用于视频准确识别的视频指纹结果集。
本发明方法的一个实施例中,步骤(1)中,下载并提取不同分辨率下加密视频的音视频明文分段信息,分别记录分段长度序列作为明文指纹,打上内容标签,存入指纹文件,用于构建键值指纹库,方法如下:
(1.1)利用网络爬虫技术收集大量视频的URL列表。
(1.2)根据获取的URL列表,构建特定的请求头以访问并下载视频的元数据文件。
(1.3)分析视频元数据文件,提取不同分辨率下的视频片段长度序列,形成视频的明文指纹数据,同时标记视频的ID、标题、分辨率等信息。
(1.4)对于步骤(1.1)获取的URL列表中的每一条URL,重复步骤(1.2)和(1.3),获得对应视频的明文指纹,并将其与视频标记信息一起存储于指纹文件中。
例如,YouTube视频中ID为0EZGyQs0FI的明文指纹如表1所示,其中,ID唯一标识视频,Message包含音视频种类、视频分辨率等信息,Segment为此分辨率视频的分段总数,后续的列为依次排列的分段指纹长度:
表1YouTube视频0EZGyQs0FI的明文指纹
本发明方法的一个实施例中,步骤(2)中,根据视频ID将步骤(1)得到的指纹文件中属于同一个视频的所有分辨率的指纹条目合并为一个视频的待处理指纹集,,计算并记录组合指纹总数。
在步骤(1)中获取的指纹文件内容有可能是按照ID、分辨率、音视频种类等多种方式进行分类排序,为了方便后续键值数据库的建立和查询,应当将同一个视频的指纹合并在一起构成这个视频的待处理指纹集。同时,根据视频平台实际传输方式和网络环境,传输过程中可能会将多个相邻分段组合传输,这种组合在加密数据处理中无法被重新拆解为单独的音视频片段,因此每一种可能出现的相邻分段组合都应当被视为可能被匹配到的视频指纹。
对每个视频计算所有可能被匹配的单个指纹和组合指纹总数,每个视频的指纹总数计算方法为:假设某视频的某分辨率的分段指纹序列中有n个分段指纹,视频平台最多将m个相邻片段组合传输,则某分辨率组合指纹总数为视频的组合指纹总数即为将此视频所有分辨率组合指纹总数之和。
例如,YouTube平台最多将12个相邻片段进行组合传输,则YouTube视频中ID为0EZGyQs0FI的组合指纹总数为126+126+294+294+294+294=1428个。
在视频总数约40万、整体分为5种分辨率、每个视频的每种分辨率大约有40-50个分段,最多将12个相邻分段进行组合传输的情况下,总共有大约40万×5×45×12≈11亿种组合指纹,也即键值数据库中包含大约11亿个元素。
本发明方法的一个实施例中,步骤(3)中,根据步骤(2)得到的视频总数、视频ID、视频分段总数,划分键值数据库子库,并为每个子库创建32字节的字节数组,字节数组下标数值即为键值,数组元素用于存储后接链表第一个元素的位置指针,方法如下:
(3.1)为了提高后续匹配速度,根据组合指纹总数决定划分为n个键值数据库子库,用于支持多线程匹配。最多可分配的子库个数取决于设备的CPU的处理能力。
(3.2)以同一个视频ID为单位,在所有视频中选取前50%个视频,随机分配到n个子库中。
(3.3)计算每个子库当前音视频分段总数。
(3.4)对于剩下的50%的视频,计算每个视频的音视频分段总数,并总是添加到当前音视频分段总数最少的子库。最终得到音视频分段总数均衡的n个键值数据库子库。
(3.5)为每个键值数据库子库,创建长度为32M的字节数组,数组元素用于存储后接链表第一个元素的位置指针。
例如,将总共21760个视频划分成4个键值数据库子库。
首先选取所有视频的前50%,即10880个视频,将它们随机分成4个集合,计算每个集合中的所有视频音视频分段总数。每个集合,即每个键值数据库子库的当前视频数量、音视频分段总数如表2:
表2键值数据库子库的当前视频数量、音视频分段总数
子库序号 | 视频数量 | 音视频分段总数 |
1 | 2720 | 49797318 |
2 | 2720 | 48175302 |
3 | 2720 | 50536554 |
4 | 2720 | 49634490 |
YouTube视频中ID为0EZGyQs0FI的音视频分段总数为16+16+30+30+30+30=152个,将其添加到当前音视频分段总数最少的子库2,中,子库2音视频分段总数更新为48175454个,此时音视频分段总数最少的子库仍然为子库2,下一个视频将被添加到子库2中。最终得到的所有键值数据库子库数据如表3:
表3键值数据库子库的最终视频数量、音视频分段总数
子库序号 | 视频数量 | 音视频分段总数 |
1 | 5430 | 99003702 |
2 | 5527 | 99010986 |
3 | 5406 | 99002340 |
4 | 5397 | 99010260 |
本发明方法的一个实施例中,步骤(4)中,对步骤(2)得到的每个视频的每种分辨率对应的分段指纹序列,依次计算一至多个相邻分段指纹的所有可能的组合相加结果,每一种组合结果作为一个组合指纹添加到键值数据库,添加方式见步骤(5),方法如下:
(4.1)单指纹组合:从一个指纹序列中依次提取每个单独的指纹,如第1个、第2个、第3个等,添加到键值数据库,具体元素添加方式见步骤(5)。
(4.2)双指纹组合:生成两个相邻指纹的组合,例如第1-2个相加、第2-3个相加、第3-4个相加等,添加到键值数据库。
(4.3)三指纹组合:计算三个连续指纹的组合,如第1-2-3个相加、第2-3-4个相加等,添加到键值数据库。
(4.4)更多指纹组合:继续这个模式,生成更多个连续指纹的组合,并添加到键值数据库。最大组合数与视频平台实际传输情况有关。由此完成将当前视频的组合指纹添加进键值数据库。
(4.5)对步骤(1)记录的每个视频的每种分辨率对应的分段指纹序列重复上述步骤(4.1)到(4.4),构成存储海量视频指纹的键值数据库。
例如,YouTube视频中ID为0EZGyQs0FI的组合指纹以表格形式展示,如表4所示:
表4视频0EZGyQs0FI的组合指纹序列列表
本发明方法的一个实施例中,步骤(5)中,按照步骤(3)划分出的每个键值数据库子库,对步骤(4)得到的每个组合指纹,以链表的形式链接到子库的字节数组中键值与组合指纹长度一致的数组元素后。
每个组合指纹元素的数据结构如下:
其中,id_resolution字段与表1中的ID和Message列有关,ID唯一标识视频,Message包含视频分辨率等信息。键值数据库维护一个视频编号id表,每个视频对应一个分辨率信息resolution表,自增的id表依次对应视频ID,自增的resolution表依次对应视频Message,每个指纹元素的id_resolution字段值由视频ID和Message在id表和resolution表中的位置序号组成,根据id_resolution字段值可以查表得到视频ID和Message。
最终得到的键值数据库文件以二进制存储,其内容结构示意图如图2所示。
例如,YouTube视频中ID为0EZGyQs0FI的第一个组合指纹序列(表1第一行数据)中,由第2-3个指纹组合得到的组合指纹元素,id_resolution为127_18,first_seg为2,last_seg为3,由表4可知该组合指纹长度为323190,因此附加在子库2的字节数组的下标323190元素对应的链表中。
本发明方法的一个实施例中,步骤(6)中,在系统运行时,首先将键值数据库文件读入内存,形成内存键值数据库,系统运行期间内存键值数据库常驻内存。
本发明方法的一个实施例中,步骤(7)中,根据加密视频流量中提取的待查询分段指纹,多线程同时获取每个子库的字节数组中键值与分段指纹长度在允许误差范围内的元素对应的链表,得到可用于视频准确识别的视频指纹结果集,方法如下:
(7.1)根据待查询分段指纹长度m,多线程同时查询每个键值数据库子库,查询原理如图3所示。
(7.2)获取子库键值(即字节数组下标)为m的元素对应的链表,将链表中的每个元素和键值数值纳入查询结果集。
(7.3)按照正态分布,扩大允许的误差范围以覆盖更多可能的正确结果,即设置键值匹配范围为允许误差范围,对落在范围内的键值执行步骤(7.2)。最终得到可用于后续实现视频准确识别使用的视频指纹结果集。
例如,观察到的待查询分段指纹长度为252739,设置误差允许匹配范围为[252737,252741],对于步骤(3)得到的键值数据库的4个子库的字节数组,获取落在范围内的5个键值对应的元素后链接的5个链表,总共20个链表中的所有元素即为查询结果集,出于篇幅考虑,展示部分结果如表5所示:
表5部分查询结果
id_resolution | first_seg | last_seg | 组合指纹长度(键值) |
1629_10 | 68 | 73 | 252737 |
1716_11 | 17 | 17 | 252737 |
… | … | … | … |
348_15 | 104 | 108 | 252738 |
1768_8 | 11 | 14 | 252738 |
… | … | … | … |
564_10 | 3 | 13 | 252739 |
816_1 | 12 | 15 | 252739 |
… | … | … | … |
612_17 | 15 | 17 | 252740 |
660_12 | 38 | 252740 | |
… | … | … | … |
7441_10 | 53 | 56 | 252741 |
7728_9 | 3 | 10 | 252741 |
… | … | … | … |
在查询时间方面,YouTube视频中ID为0kdeEaZFxIQ的1920×1080分辨率共有18个分段,在非键值数据库中进行查询识别时所需时间如表6所示:
表6视频0kdeEaZFxIQ的1920×1080分辨率非键值数据库查询时间
非键值数据库中进行查询识别所需总时长为169.915秒,而在本发明所建立的键值数据库中进行识别时,所需总时长仅为0.024秒,每个分段的识别时间极短,不进行具体列举。
由此可见,本发明建立的键值数据库能够以极快的速度实现海量视频指纹识别,为在真实网络中进行加密视频的实时识别提供了有力保障。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (5)
1.一种用于实现海量视频指纹快速识别的键值数据库构建方法,其特征在于,该方法包括以下步骤:
步骤(1)下载并提取不同分辨率下加密视频的音视频明文分段信息,分别记录分段长度序列作为明文指纹,打上内容标签,存入指纹文件,用于构建键值指纹库,
步骤(2)根据视频ID将步骤(1)得到的指纹文件中属于同一个视频的所有分辨率的指纹条目合并为一个视频的待处理指纹集,计算并记录组合指纹总数,
步骤(3)根据步骤(2)得到的视频总数、视频ID、视频分段总数,划分键值数据库子库,并为每个子库创建32字节的字节数组,字节数组下标数值即为键值,数组元素用于存储后接链表第一个元素的位置指针,
步骤(4)对步骤(2)得到的每个视频的每种分辨率对应的分段指纹序列,依次计算一至多个相邻分段指纹的所有可能的组合相加结果,每一种组合结果作为一个组合指纹添加到键值数据库,添加方式见步骤(5),
步骤(5)按照步骤(3)划分出的每个键值数据库子库,对步骤(4)得到的每个组合指纹,以链表的形式链接到子库的字节数组中键值与组合指纹长度一致的数组元素后,
步骤(6)在系统运行时,首先将键值数据库文件读入内存,形成内存键值数据库,系统运行期间内存键值数据库常驻内存,
步骤(7)根据加密视频流量中提取的待查询分段指纹,多线程同时获取每个子库的字节数组中键值与分段指纹长度在允许误差范围内的元素对应的链表,得到可用于视频准确识别的视频指纹结果集。
2.根据权利要求1所述的一种用于实现海量视频指纹快速识别的键值数据库构建方法,其特征在于,步骤(1)具体如下:
(1.1)利用网络爬虫技术收集大量视频的URL列表,
(1.2)根据获取的URL列表,构建特定的请求头以访问并下载视频的元数据文件,
(1.3)分析视频元数据文件,提取不同分辨率下的视频片段长度序列,形成视频的明文指纹数据,同时标记视频的ID、标题、分辨率信息,
(1.4)对于步骤(1.1)获取的URL列表中的每一条URL,重复步骤(1.2)和(1.3),获得对应视频的明文指纹,并将其与视频标记信息一起存储于指纹文件中。
3.根据权利要求1所述的一种用于实现海量视频指纹快速识别的键值数据库构建方法,其特征在于,步骤(3)具体如下:
(3.1)根据组合指纹总数决定划分为n个键值数据库子库,用于支持多线程匹配,最多可分配的子库个数取决于设备的CPU的处理能力,
(3.2)以同一个视频ID为单位,在所有视频中选取前50%个视频,随机分配到n个子库中,
(3.3)计算每个子库当前音视频分段总数,
(3.4)对于剩下的50%的视频,计算每个视频的音视频分段总数,并总是添加到当前音视频分段总数最少的子库,最终得到音视频分段总数均衡的n个键值数据库子库,
(3.5)为每个键值数据库子库,创建长度为32M的字节数组,数组元素用于存储后接链表第一个元素的位置指针。
4.根据权利要求1所述的一种用于实现海量视频指纹快速识别的键值数据库构建方法,其特征在于,步骤(4)具体如下:
(4.1)单指纹组合:从一个指纹序列中依次提取每个单独的指纹,包括第1个、第2个、第3个,添加到键值数据库,具体元素添加方式见步骤(5),
(4.2)双指纹组合:生成两个相邻指纹的组合,包括第1-2个相加、第2-3个相加、第3-4个相加,添加到键值数据库,
(4.3)三指纹组合:计算三个连续指纹的组合,包括第1-2-3个相加、第2-3-4个相加,添加到键值数据库,
(4.4)更多指纹组合:继续这个模式,生成更多个连续指纹的组合,并添加到键值数据库,最大组合数与视频平台实际传输情况有关,由此完成将当前视频的组合指纹添加进键值数据库,
(4.5)对步骤(1)记录的每个视频的每种分辨率对应的分段指纹序列重复上述步骤(4.1)到(4.4),构成存储海量视频指纹的键值数据库。
5.根据权利要求1所述的一种用于实现海量视频指纹快速识别的键值数据库构建方法,其特征在于,步骤(7)具体如下:
(7.1)根据待查询分段指纹长度m,多线程同时查询每个键值数据库子库,
(7.2)获取子库键值(即字节数组下标)为m的元素对应的链表,将链表中的每个元素和键值数值纳入查询结果集,
(7.3)按照正态分布,扩大允许的误差范围以覆盖更多可能的正确结果,即设置键值匹配范围为允许误差范围,对落在范围内的键值执行步骤(7.2),最终得到可用于后续实现视频准确识别使用的视频指纹结果集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410102615.9A CN117909541A (zh) | 2024-01-24 | 2024-01-24 | 一种用于实现海量视频指纹快速识别的键值数据库构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410102615.9A CN117909541A (zh) | 2024-01-24 | 2024-01-24 | 一种用于实现海量视频指纹快速识别的键值数据库构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909541A true CN117909541A (zh) | 2024-04-19 |
Family
ID=90686788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410102615.9A Pending CN117909541A (zh) | 2024-01-24 | 2024-01-24 | 一种用于实现海量视频指纹快速识别的键值数据库构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909541A (zh) |
-
2024
- 2024-01-24 CN CN202410102615.9A patent/CN117909541A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE48791E1 (en) | Scalable, adaptable, and manageable system for multimedia identification | |
US9785708B2 (en) | Scalable, adaptable, and manageable system for multimedia identification | |
US11620397B2 (en) | Methods and apparatus to provide group-based row-level security for big data platforms | |
US9002907B2 (en) | Method and system for storing binary large objects (BLObs) in a distributed key-value storage system | |
KR101266358B1 (ko) | 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법 | |
TWI549005B (zh) | 多層搜尋引擎索引 | |
US20100070507A1 (en) | Hybrid content recommending server, system, and method | |
EP3767483A1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
US8472289B2 (en) | Static TOC indexing system and method | |
CN102016789A (zh) | 数据处理装置和处理数据的方法 | |
CN109857898A (zh) | 一种海量数字音频指纹存储与检索的方法及系统 | |
JP2008130084A (ja) | 最適化されたインデックス検索方法及び装置 | |
CN106844374B (zh) | 一种存储、检索照片的方法及装置 | |
CN103678694A (zh) | 视频资源的倒排索引文件建立方法及其系统 | |
US7577921B2 (en) | Method and system for performing search using acronym | |
Zhou et al. | Structure tensor series-based large scale near-duplicate video retrieval | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
JP5366212B2 (ja) | 多数の参照用映像の中から検索キー用映像を用いて検索する映像検索装置、プログラム及び方法 | |
CN117909541A (zh) | 一种用于实现海量视频指纹快速识别的键值数据库构建方法 | |
JP2009049668A (ja) | データ処理装置、データ処理方法、プログラムおよび記録媒体 | |
CN114610960A (zh) | 基于item2vec和向量聚类的实时推荐方法 | |
CN107784128B (zh) | 一种数字音频指纹大数据存储检索的方法及系统 | |
CN109412883A (zh) | 推荐路径追踪方法、装置和系统 | |
JP2006092409A (ja) | 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム | |
CN110825747A (zh) | 一种信息存取方法、装置和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |