使用环境:
- U盘,sd卡,tf卡等存储媒介(storage medium,SM)插入指定设备,该设备能够识别出SM。
- 支持c标准库。
开发语言:
- C语言。
功能描述:
- 基于 fat32 文件系统,预分配存储数据。
- 在存储数据前,事先将 SM划分为若干区域,如图片区,视频区,日志区等,每个区域只存一种类型的文件。
- 每种类型文件的个数固定。每个文件的大小,文件名等相关信息,在存储前就已经固定。
- 采用轮回存储方式存储数据。
如视频区预分配了1.avi 2.avi 3.avi 三个视频文件,每个视频文件大小 1GB。前1GB的视频数据存在 1.avi 文件里,第 1GB+1B 的数据存在 2.avi 文件里,第 3GB+1B 的数据覆盖 1.avi 文件里的第 1B 的数据,以此类推。
- 记录可以计算时间的参数(方便使用者能够根据时间信息,读出相关数据)。
要求前端写入数据时,提供时间信息。否则只能提供
相对模糊时间
。 存储在 SM 中的数据,能够被 windows,linux 操作系统识别并正确读出。
实施方案:
- 预留SM的部分空间给文件系统用。
- 图片等离散存储类型文件,时间信息存储在文件的最后修改时间属性里。
- 视频等连续存储类型文件,每种文件分配两个指针,始终分别指向该类型文件的起始位置和结束位置。预留空间存储文件的结束时间,码率变化时,存储当前码率和对应的起始、结束指针。
- 提供预分配格式化函数,能够根据 SM 的设备名(如/dev/sdb1)预分配 SM。
- 提供写数据函数,能够按照预分配方式写入数据。
- 提供读数据函数,能够按照时间顺序读出数据。