首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于嵌入式视频存储的专用文件系统设计(2)

基于嵌入式视频存储的专用文件系统设计(2)

time_t FileEndTime;/*录像结束时间*/
UInt32 FileStartDBN;/*文件开始DBN*/
UInt32 FileEndDBN;/*文件结束DBN*/
IndexInfoAddr IndexInfoStart;/*索引信息开始地址*/
IndexInfoAddr IndexInfoEnd;/*索引信息结束地址*/
} FileInfo;
2.4 索引信息区
索引信息区用于保存录像文件所使用数据块的索引信息。索引信息也分为两部分,分别为分区一和分区二,用于描述覆盖前和覆盖后的索引信息。每个分区根据最大文件数按录像路数顺序分配存储空间。
每个录像文件至少需要使用一个索引块,每个索引块包含N个索引信息,一个数据块对应一个索引信息。每个索引信息描述下一个数据块的物理偏离和时间偏移,每个索引块描述本索引块所描述第一个数据块的物理地址和时间偏移。典型的数据结构如下:
typedef struct {
UInt8 TimeOffset;/*与上一个数据块的时间偏移*/
UInt8 DBNOffset;/*与上一个数据块的物理偏移*/
} IndexInfo; /*索引信息*/
typedef struct {
UInt16 BeginDBN;/*本索引块的起始数据块地址*/
UInt16 TimeOffset;/*本索引块与上一个索引块的时间偏移*/
IndexInfo IndexInfo[N];
} IndexBlockInfo; /*索引块信息,包含N个索引信息*/
2.5 数据区
数据区是指整个磁盘空间除了用于以上文件系统开销外的所有空间,重新划分为若干个数据块,数据块的大小可以自由设置。数据块是指录像数据保存的最小单元,一般以32~512 KB之间为宜,每个数据块的头部保留几个字节用于保存本数据块的时间戳和相关数据块的地址偏移。
文件系统在使用前需要获取磁盘的容量和可使用扇区的大小,并定义一个最大文件数。由于文件信息和索引信息需要占用一定的磁盘空间,并且与最大文件数密切相关,在实际使用时定义一个最小文件的大小,并通过磁盘容量得到一个固定的最大文件数,这样文件信息和索引信息所占用的磁盘空间在整个磁盘中只占很小的比例。
3 系统实现
3.1 数据的存储
数据的存储过程比较简单,创建文件的时候系统自动分配一个唯一的文件号,并通过文件号进行计算得到文件信息和索引信息对应的磁盘地址。当有足够一个数据块大小的数据时打包并保存到当前可以使用的数据块,同时更新文件信息和索引信息。
数据存储的流程如图3所示。可以看出,只要视频数据缓存到一个数据块的大小时就可以进行一次存盘。例如,数据块大小为64 KB,对应为512 kbps码率1 s的视频数据,也就是紧急断电等突发事故中实际丢失的视频数据最多是一个数据块的录像长度。由于突然断电导致文件信息和索引信息没有及时存储,可以在启动的时候通过扫描没有形成文件的数据块来进行恢复。即使在最坏的情况下,硬盘的磁盘信息、文件信息及索引信息等都丢失了,完全可以通过扫描所有的数据块来重建整个文件系统,这样极大提高了数据的安全性。由于数据块是顺序排列,每个数据块的读写几率几乎一致,不会因为频繁读写某一个硬盘扇区导致坏道或缩短硬盘使用寿命,也提高了系统和数据的可靠性。
3.2 数据的读取
数据的读取可以通过两种模式进行,一种是直接通过文件号来读取文件,另一种是通过输入时间检索定位指定的录像资料。这两种方式最终都是定位到指定的数据块实现数据的读取,只要定位了第一个数据块,就可以根据数据块的DataBlockInfo来实现前/后数据块的读取,还可以通过数据块的时间戳来实现高效的快进快退等操作。

3.3 数据的恢复
在实际使用中,不可避免会出现异常关机、断电、磁盘坏道等问题,本系统中数据恢复的流程如图4所示。在开机后首先检查文件是否正常关闭。若是则不需要恢复,否则进行数据恢复。先读取数据块信息,然后检验数据块信息的合法性,合法则更新相应信息。
3.4 录像资料的检索和精确定位
在本文件系统中,由于文件信息、索引信息和数据块都是严格按照时间进行记录的,所以可以采用二分法快速查找到指定录像时间的录像文件,再根据录像文件信息的录像开始时间及索引信息里包含的时间偏移和地址偏移,就可以快速准确定位指定录像时间的数据块,根据数据块的帧信息可以准确定位到某一秒甚至某一帧,这样就可以实现快速、准确的录像资料检索。
结语
本视频存储专用文件系统通过对嵌入式数字硬盘录像机媒体数据的特点深入研究和分析,分别从存储机制、检索机制、读取机制和数据恢复机制等几个方面详细阐述设计思想和具体的实现方法。经过相关产品的严格测试和大规模应用,证明此文件系统可以很好地满足实际应用需求,在数据读写效率、检索效率、检索精确度、数据安全性和系统稳定性等几方面都达到了相应指标,实现了对媒体流数据高效、安全的存储。
返回列表