一种基于二进制数据的波粒视频结构分析算法研究

2018-10-15 08:04:18康艳荣
关键词:视频文件数据文件关键帧

康艳荣, 张 弘, 赵 露, 邓 奇, 范 玮

(1.公安部物证鉴定中心, 北京 100038; 2.中国人民公安大学, 北京 100038 3.北京北亚时代科技有限公司, 北京 100094; 4.天津市公安局, 天津 300193)

0 引言

视频数据因其能记录、保存时间和空间上的各种信息,已逐渐成为信息处理领域中主要的信息媒体形式,蕴涵着大量潜在价值的信息和知识,目前在基于内容的视频信息检索研究方面有不少研究成果,这些成果都是在视频数据能够正常播放的前提下实现的,如叶锋等人提出的一种面向视频编码的基于结构分析的感知信号处理模型,降低了视频感知冗余[1],陈尧等人提出的关键帧提取技术可以快速从大量视频数据中检索出用户所关心的视频数据[2]。而如何通过分析二进制码视频数据结构实现对无法播放视频数据的信息检索和解码,是当前亟需解决的一个技术难题。在MPEG4等编码标准中,场景、对象、通道、时间信息等都是以二进制形式进行编码并存放在一个视频文件中,郑翔等人通过一个简单的分析实例介绍了MP4 流文件的组成机制,为分析通用格式的MP4视频数据结构提供了一个研究思路[3],黄东军等人详细介绍了仅含图像序列的AVI文件结构,为分析AVI封装格式提供了一个结构框图[4],文献5介绍了H.264码流总体结构,为分析基于H.264编码的视频数据结构分析提供了一个参考内容[5],王进解析了网络传送的视频流中IBP帧数据格式,为关键帧数据结构分析提供了一个成功案例[6],但因为大部分厂商的视频监控产品都定义了自己的数据格式,上述这些方法尚未涉及有关厂商自有的视频监控数据格式解析。本文以上述文献中所介绍的各类视频数据封装结构、编解码知识为基础,针对一类波粒超大视频数据文件使用常规播放器(如暴风影音)和厂家专用播放器均无法播放的问题,研究厂商自有的封装结构,通过二进制码分析比对正常和超大波粒视频数据文件结构,解析了两类波粒视频数据之间索引位图、关键帧等数据结构,建立了波粒超大视频数据解析算法, 该方法首先将封装在一个波粒超大视频文件中的多个通道的索引位图数据拆分,其次根据索引位图中给出的所有关键帧数据的位置提取每一个关键帧数据及其余下的49个非关键帧数据;最后将每一个索引位图与所对应的视频关键帧、非关键帧数据重新组合形成一个新的文件,实现了波粒超大视频的解码与播放。

1 WAPA(波粒)视频数据模型建立

本节将通过数学语言的描述建立起数学符号与正常WAPA文件、超大WAPA文件的数据结构之间的关系。

定义1.1 WAPA文件头索引 正常WAPA视频数据文件1的前20个字节为固定值,记为f1,第21至24字节为WAPA文件的总播放时长,记为f2,25至28字节为WAPA文件起始时间,记为f3,则由f1,f2,f3组成的二进制数据序列为WAPA文件头索引(F),记为F=(f1,f2,f3)。

定义1.2 WAPA数据包索引 由WAPA文件头索引往后,每8个字节为一组,记为k[i](i≥0),其中前4个字节为第i个数据包的绝对偏移地址记为Aa[i](i≥0),后4个字节为第i个数据包的起始毫秒数,记为T[i](i≥0),k[i]=Aa[i]+T[i],则由k[0],k[1],k[2]……k[i]组成的二进制数据序列为WAPA数据包索引(KI),记为KI=(k[0],k[1],k[2]……k[i])(i≥0)。

定义1.3 位图索引 由WAPA文件头索引和WAPA数据包索引组成的二进制序列为位图索引(BM),记为BM=(F,KI)。

定义1.4 WAPA数据包头由16个字节组成,记为H;第1字节为帧标识,第2字节为空,第3字节为通道标识,第4字节为WAPA文件内部视频分类标识,记为Fx;第5-8字节为下一帧数据的相对偏移地址,记为Ra;第9-12字节为数据包的起始毫秒数,记为Ts;第13-16字节为数据包的视频录制起始时间Tp。

定义1.5 WAPA关键帧数据包 由WAPA数据包头和1个关键帧数据组成,记为Pk。

定义1.6 WAPA非关键帧数据包 由WAPA数据包头和1个非关键帧数据组成,记为Pm。

定义1.7 WAPA数据包 由1个WAPA关键帧数据包和49个非关键帧数据包组成,记为P,其中第i个WAPA数据包记为P[i],第i个WAPA关键帧数据包记为Pk[i],第i个WAPA数据包中第n个非关键帧数据包记为Pm[i,n],(i≥0,n≥0)。

定义1.8 WAPA数据文件由位图索引和多个WAPA数据包组成的数据文件为WAPA数据文件,记为NF,结构如图1所示。

图1 WAPA数据文件结构图

定义1.9 超大WAPA文件由多个位图索引和多个WAPA数据包组成的数据文件,记为SF,结构如图2所示。

图2 超大WAPA数据文件结构图

2 超大WAPA视频数据解析算法建立

根据上节中建立的数据模型,本节将给出超大WAPA视频数据解析算法步骤。

输入:超大WAPA数据文件(SF)

输出:WAPA数据文件(NF)

file open(SF);∥读取超大WAPA数据文件

for(i=0;i≤n-1;i++) ∥n为通道数

{

∥读取第i个通道的位图索引

StartAddress=Seek(Hex(第i个通道F));

EndAddress= Seek(Hex(第i+1个通道F));

Len=EndAddress-StartAddress+Sizeof(F);∥计算位图索引长度

Read file(buffer,Hex(StartAddress-Siziof(F)),Hex(Len));

File write(NewFile[i],buffer,Hex(Len));∥读取位图索引至一个新文件NewFile[i]

∥读取第i通道WAPA数据包

Count=( EndAddress-StartAddress)/8 ∥计算NewFile[i]中KI序列个数

For(m=0;m≤Count-1;m++)

{

PAddress=Seek(Hex(k[m].Aa[m]));

Read file(buffer, PAddress,4);∥读取第i通道第m个数据包的绝对偏移地址

KAddress= Seek(Hex(Pk[m].Ra));

Read file(buffer,PAddress,KAddress+16);

File write(NewFile[i],buffer, KAddress+16);∥读取第i通道第m个数据包的关键帧数据并写入NewFile[i]

While(0≤k≤48)

{

∥读取第i通道第m个数据包的所有非关键帧数据

MAddress=Seek(Hex(Pm[m,k].Ra));

Read file(buffer,PAddress+KAddress+16,MAddress)

PAddress= PAddress+MAddress;

File write(NewFile[i],buffer,MAddress);

}k++;

NAddress=Seek(Hex(NewFile[i].Pk[m]));

OverWrite(NewFile[i].k[m].Aa[m]);∥修改NewFile[i]文件中WAPA数据包索引中的偏移地址值

}

}

File close(SF);

3 算法实现与讨论

3.1 算法实现

本文使用Python语言实现了上述算法,一个超大WAPA数据文件被成功解析成13个WAPA数据文件的实现界面截图,如图3所示。同时,本文利用本实验用的超大WAPA数据文件中的WAPA位图索引和WAPA数据包分别组成了包含2个、4个、6个、8个、10个、12个WAPA位图索引(2BM,4BM,6BM,8BM,10BM,12BM)和对应WAPA数据包的超大数据文件,比较算法的执行效果,如图4所示。从图4中可以看出,随着WAPA数据文件的增大,执行时间也越来越长,因此,后期将进行算法改进,使之可以同时读取一个超大WAPA数据文件中的2-4个WAPA位图索引,分别写入不同的文件,以提高算法的执行速度。

图3 算法实现界面

图4 算法执行效果

3.2 讨论

本文主要通过将一个无法播放的超大WAPA数据文件解析成多个WAPA数据文件的方法,使其能够正常播放。因此,文中并未对WAPA数据包头中的视频录制起始时间Tp进行详细阐述,但在实现本文算法的过程中,作者已对波粒监控4字节的时间编码格式进行了分析和研究,解析了4字节二进制数据每一位的含义及与年月日的关系,并建立了相应的计算公式。利用波粒视频数据的此项编码规则,可以直接访问硬盘底层二进制数据并恢复或查找已删除、部分覆盖的视频数据。

4 结论与展望

本文通过分析WAPA视频文件和超大WAPA视频文件的索引位图、WAPA数据包,发现了WAPA视频文件和超大WAPA视频文件的文件结构差异,解析了WAPA视频文件和超大WAPA视频文件中厂商自有数据的封装结构与位置信息,并结合厂商自有数据结构和常规视频数据结构成功将超大WAPA视频文件分解成多个WAPA视频文件并播放。实验证明,本论文提出的超大WAPA视频数据解析算法能够正确解析容量为不小于6GB的超大WAPA数据文件,但该算法仅适用于对正常WAPA文件的解析,对于已被删除、格式化或部分覆盖的超

大WAPA视频数据,根据WAPA位图索引中存储的WAPA数据包地址无法找到对应WAPA数据包,下一步,作者将针对上述问题从两个方面展开研究,一是建立超大WAPA数据文件时间搜索算法,直接从硬盘底层以二进制方式搜索、恢复丢失的数据,二是建立超大WAPA数据文件地址重建算法,将丢失的每个数据包重新组合,并建立对应的位图索引,形成可以正常播放WAPA视频数据文件。

猜你喜欢
视频文件数据文件关键帧
流媒体视频文件相似性识别的方法
随心定制视频文件的缩略图
电脑报(2021年23期)2021-07-23 17:36:18
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
SQL数据文件恢复工具
基于改进关键帧选择的RGB-D SLAM算法
基于相关系数的道路监控视频关键帧提取算法
基于聚散熵及运动目标检测的监控视频关键帧提取
论“关键帧”在动画制作中的作用
Tekla Structure数据文件交互格式分析