APP下载

一种无线车载视频监控专用文件系统的设计

2016-09-12赵国开马洪兵陈从华

电子设计工程 2016年4期
关键词:流式音视频字节

赵国开,马洪兵,陈从华

(1.清华大学 电子工程系,北京 100084;2.厦门雅迅网络股份有限公司 福建 厦门 361008)

一种无线车载视频监控专用文件系统的设计

赵国开1,2,马洪兵1,陈从华2

(1.清华大学 电子工程系,北京 100084;2.厦门雅迅网络股份有限公司 福建 厦门 361008)

本文针对现有无线车载视频监控设备上在用的文件系统的不足之处,提出了一种满足无线车载视频监控应用的流式文件系统。本文从文件系统结构,存储,读取,检索等各方面阐述了设计方案。流式文件系统已经在一些实际项目上批量投产使用,能很好的解决现有文件系统中的一些不足,满足了高效,可靠,稳定的实际诉求。

流式文件系统;主索引块;av存储块;数据节;时间片

随着传输速率越来越快的3G和4G业务在国内的逐渐推广,助推了无线车载视频监控行业的快速发展。无线车载视频监控系统采用3G/4G通信传输技术并辅以成熟的gps技术可对各种车辆进行实时音视频监控、实时录像存储、历史录像回传,车辆行驶轨迹跟踪等功能,实现对车辆的运行情况的全方位跟踪。因此越来越受用户青睐,在各行各业的运营车辆上的使用也越来越普及,无论是在公交车,出租车,长途客运车,还是物流配送车,银行运钞车,110警车等等都能看到无线车载视频监控设备的身影。而伴随着交通部即将推出的车载视频技术标准,原来2G业务下车载gps设备将会往3G/4G车载gps视频设备升级,在市场需求和国家政策的推动下未来车载无线视频将在运营车辆上得到越来越广泛的使用[1-2]。

对车载视频监控系统来说,音视频存储技术是关键的技术,而现在一些主流文件系统并不适合这种场合的数据存储或者说或多或少存在一些不足,首先就存储效率来说,现有的主流文件系统一般都需要对音视频数据按时间间隔进行分包存储(例如30分钟存储一个文件),因为存储介质满了之后需要检索一些旧文件进行删除,保证新录下来的音视频数据能够存储下来,这样连续的存储、删除带来的不仅带来磁盘碎片,而且磨损平衡算法做的不好导致存储介质寿命不高[3]。其次一般主流的文件系统都需要挂载后才能使用,特别是日志型文件系统挂载时需要进行合法性、完整性检验,挂载比较费时,如果文件系统一些数据遭破坏,这个时间会更长,甚至挂载不上,无法使用[4]。再次车辆环境不可避免的出现异常断电的情况,导致音视频数据严重丢失,甚至文件系统损坏无法使用的情况,常常在出现意外情况客户要调取相应时段的音视频数据时,却无法调取这给客户非常不好的体验,导致客户投诉激增。因此一个高效,稳定,可靠的文件系统对车载视频监控系统而言至关重要。本文就针对音视频存储的特点和现实诉求设计了一个针对这种场合应用的文件系统。

1 流式文件系统设计概述

本文设计的文件系统取名流式文件系统,因为大部分情况下数据能按照字符流的方式被有序访问。流式文件系统适用于的存储介质有SD卡,固态硬盘和机械硬盘等(现在车载视频设备用来存储音视频数据的主要三种存储介质)。现在车载视频监控设备大多采用Linux操作系统,因此流式文件系统主要在Linux操作系统进行设计,验证和测试,当然也可以移植到其他操作系统上。

流式文件系统不对接虚拟文件系统,因此应用程序可以直接调用流式文件系统的相关接口进行操作如图1所示,这样不仅提高了效率,而且无需对文件系统进行挂载而避免了因挂载而出现的问题[5]。

图1 流式文件系统在Linux系统中的框架图Fig.1 Streaming file system in Linux system framework

下文拿硬盘作为存储介质来介绍设计思路,SD卡也类似。流式文件系统把硬盘设计为两个分区:扩展分区和音视频数据分区。其中从0扇区开始到2 G字节处,作为扩展分区,以便用来作为被扩展的用途进行功能扩充,音视频数据存储从线性地址为2 G字节的开始处直至剩余空间 (如图2所示)。

下面来具体说明下硬盘的数据分布,从2 G字节开始处,将硬盘划分成以4M字节为单元的很多的块,我们称之为av存储块(即音视频存储块),编号从0开始,直至所有剩余空间。以一个2048 G的硬盘为例子,如果以4 M为单元划分块,总共有524288个av存储块,如果为每一个av存储块建立一个4字节的索引,则需要2 M字节。这样索引块非常大,因为索引块非常重要,尽可能不要出错,因此索引块尽可能小,索引我们设计将每16个av存储块对应一个4字节的索引,这样,一个2048 G的硬盘只需要200 k的索引。同时我们将硬盘从0扇区开始处的连续2个4M字节的块作为av存储块的索引块,一个作为av主索引块,一个作为av主索引块的备份块。av索引块被分成很多4字节的单元,第0个4字节存储第0个av存储块的录制时间,第1个4字节存储第16个av存储块的录制时间,第2个4字节存储第32个av存储块的录制时间,依次类推。根据这样的映射关系,从av索引块上的获得时间后,可以直接定位到该时间对应的av存储块的位置。整个硬盘的音/视频数据和对应的索引的映射如图3所示[6-7]。

图2 硬盘分区结构图Fig.2 Hard disk partition structure diagram

图3 音/视频数据和对应的索引的映射图Fig.3 Audio/video data and corresponding index map

从av索引块获得时间,进而定位到该时间对应的av块的位置有一个不足之处,就是每16个av存储块才记录了一个索引,因此时间粒度比较粗糙,如果想进一步获得更细的时间粒度,可以读取av存储块本身的内容。为了鉴别正在使用的硬盘是否为我们用来存储av存储块数据的硬盘,在av主索引块4 M字节的最后16个字节全部填写为0x55。在av索引块中,使用连续4个字节的0xaa来表达最近记录的录像时间就是0xaaaaaaaa的上一个索引,如果硬盘初始化应该根据av块的个数将对应的索引全部记录为0xaa表明当前没有记录任何数据。

av存储块的数据分布说明:每一个av存储块共4 M字节,这4 M字节共分为1024个数据节,每个数据节为4096 (4 k)个字节(这里规定为4 k字节主要是为了方便硬盘的寻址,因为现在市面上很多硬盘的物理扇区为4k字节,这样,将section大小定义为4 k,当我们寻址出错的时候,很容易寻址到下一个节)。每个av存储块的第0个数据节我们称之为av头节,他的内容分布:标志+录制时间+数据连续标志(和上一av存储块的数据是否连续)+每个通道是否有音视频数据+gps信息+触发事件+保留区。av头节结构如图4所示。

图4 av存储块结构分布图Fig.4 av block structure

每个av存储块第1至第1023个数据节我们称之为av数据节,他的内容分布:标志+录制时间+音频或视频输入通道号+编码参数+有效数据长度+保留+音视频数据。av数据节结构如图4所示。

2 音视频数据的存储

我们为一路摄像头分配两个环形缓存区,一个音频环形缓存区、一个视频环形缓存区,这样可以实现预录的功能,也就是说在事件触发之前放入到缓冲区的数据,在事件触发后可以写入到硬盘。为了方便随后向硬盘的av存储块写入数据,我们将一个环形缓存区的长度设为一个av数据节的整数倍,并规定每次向环形缓存区写入一个av数据节数据。

每一个环形缓存区每次只能写入1路音频或者视频数据。如果有多个线程在接收多个摄像头的编码数据,则可以在每一个线程中都调用2个环形缓存区分别写入音频和视频数据。写入环形缓冲区的音视频数据,并没有马上写入到硬盘,直到收到写入硬盘请求消息,才会写入硬盘。

如果收到写入硬盘的请求,则创建一个工作线程,将先前写入到环形缓冲区的数据写入到硬盘,并且将接下来写入到环形缓冲区的数据也写入到硬盘。整个写入过程见图5,写入步骤如下:

1)轮询所有用到的环形缓存区第一个未读的av数据节,并获取相应的录制时间。

2)对比这些av数据节的录制时间,并找到录制时间最早的那一个av数据节。

3)读取最早的那一个av数据节数据,并写入硬盘的av存储块中。

①如果向其写入的av数据节,刚好是av存储块的第1 个av数据节则同时更新这个av存储块的av头节。

②如果向其写入的av数据节,刚好是av存储块的第1023个av数据节并且这个av存储块刚好是大数据块的第15个av存储块,则更新主索引块和备份索引。

图5 音视频数据写入硬盘示意图Fig.5 Audio and video data is written to disk schematic

③如果大数据块n(即硬盘的最后一个大数据块)已经写满,下一次从大数据块0开始覆盖循环写。

4)跳到步骤1)直到所有用到的环形缓存区数据都读完。

3 音视频数据的读取

因为音视频数据存储的时候是严格按时间顺序进行存储的,所以当需要从硬盘中读取某路音频或者视频的数据的时候,只需输入查询的起始时间和查询的结束时间就可以准确定位到需要读取音/视频数据的起始地址和结束地址,继而利用起始地址开和结束地址轻松的去读取需要的数据。如图6所示,具体分为3个步骤实现:

1)创建一个流,需要指定查询的通道号(也可以是所有通道),查询的起始时间,查询的结束时间,创建成功会返回了该流的句柄stream_handle;

2)利用上一步骤创建的流句柄,从流中不断循环读取数据;

3)不在需要读取数据后,关闭流。

注意以上3个步骤必须配套实现,缺一不可。如图6所示,如果刚好读到av存储块4 M的头,则读取av头节+av数据节否则只读取av数据节。另外,如果多个线程需要读取多个通道的数据,则每读取一个通道或者每读取同一个通道的不同的时间段,都需要重新创建一个流来进行读取。同一个流的句柄不能在多个线程中同时使用,否则会出现数据分流或其他意想不到的情况。

图6 从硬盘读取音/视频数据示意图Fig.6 Audio/video data read from the hard disk

4 音视频数据的查找

类似读取数据,当需要从硬盘中搜索某路音频或者视频的数据的时候,只需输入搜索的起始时间和搜索的结束时间就可以从硬盘中读取出满足通道号和时间段要求的时间片。搜索并不读取数据本身,只是读取时间片信息。在指定的时间段之内如果音视频数据不是连续存储的(可能设备复位等造成的存储中间断开),则会还回多个时间片,最多可以还回256个时间片,每个时间片包含起始时间,结束时间,是否有音视频数据,音视频数据的编码参数等。一般应用程序可以通过搜索指定的时间段来查询硬盘中是否含有该时间段的音视频数据,如图7所示。

图7 搜索满足要求的时间片Fig.7 Search meet the requirements of time slice

5 结 论

至此流式文件系统主要结构已经基本介绍完毕。流式文件系统根据无线车载视频监控的特点,把持续获取的音视频数据流严格按音视频录制的时间顺序进行循环存储,这样既保证了存储效率,又防止磁盘碎片的产生,也保证了存储介质磨损的均衡。读取时可按指定的时间段来进行高效的读取,且可同时创建多个读取流进行读取而互不影响。同样检索可按时间段进行检索,如果时间段内有数据则还回检索到的时间片。流式文件系统已经在实际的无线车载视频监控设备上进行过很好的验证测试,并在一些项目上进行批量投产使用,很好的解决了之前引言介绍里面提出的一些问题,满足了高效,可靠,稳定的实际诉求。

[1]孟军.车载数据记录器中Nand Flash文件系统的研究[D].北京:北京交通大学,2008.

[2]西刹子.安防天下:智能网络视频监控技术详解与实践[M].北京:清华大学出版社,2010.

[3]邱毅凌.嵌入式系统开发之道:菜鸟成长日志与项目经理的私房菜[M].北京:人民邮电出版社,2011.

[4]Robert Love.Linux内核设计与实现 (原书第三版)[M].陈莉君,康华,译.上海:机械工业出版社,2011.

[5]李宗海.基于 910GML平台的嵌入式 Linux文件系统的研究与改进[D].重庆:重庆大学,2010.

[6]冯敏.基于 linux加密文件系统的设计与实现[D].济南:山东大学,2008.

[7]高永占.基于 SD卡的嵌入式文件系统的设计与实现[D].北京:北京交通大学,2010.

Design of a wireless in-car video surveillance dedicated file system

ZHAO Guo-kai1,2,MA Hong-bing1,CHEN Cong-hua2
(1.Electronic Engineering,Tsinghua University,Beijing 100084,China;2.Xiamen Yaxon Network Co.,Ltd.Xiamen 361008,China)

Aiming at the shortcomings of the existing wireless car video surveillance equipment in the use of the file system,we propose a streaming file system to meet the wireless car video surveillance applications.In this paper,introduced the design from the aspects of the file system structure,storage,read and search.Streaming file system has been put into use in some practical projects,can solve some of the existing file system inadequate to meet the efficient,reliable and stable real aspirations.

streaming file system;main index blocks;av storage blocks;data section;time slice

TN919.8

A

1674-6236(2016)04-0010-04

2015-04-09 稿件编号:201504081

赵国开(1983—),男,福建厦门人,中级工程师。研究方向:linux内核,计算机测控。

猜你喜欢

流式音视频字节
2种6色流式细胞术试剂检测淋巴细胞亚群的性能比较
No.8 字节跳动将推出独立出口电商APP
流式大数据数据清洗系统设计与实现
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
3KB深圳市一禾音视频科技有限公司
No.10 “字节跳动手机”要来了?
WIFI音视频信号传输的关键问题探究
简谈MC7字节码
高速公路整合移动音视频系统应用
自调流式喷管型ICD的设计与数值验证