录像 的一些思考总结--1
来源:互联网 发布:应届生求职软件知乎 编辑:程序博客网 时间:2024/06/05 00:08
录像 和 录像搜索思考。
---- 关键是录像索引文件的管理,记录文件对应时间的I帧的在硬盘分区中的偏移位置,考虑如果硬盘有坏道的情况,以及I帧率位置记录。
1、录像文件写入的思考:
如果通道开启录像,录像记录方式:
一个通道创建一个大的文件为4G,文件名称为通道号加上日期时间到分钟如01_201510212115.st(通道1,时间为2015-10-21:21:15分 ),
如果如果录像大于4G 再创建一个类似的文件。
文件offset 记录文件名次和视频名次前缀一样如01_201510212115.index,可以5s(也可以1s,10s 这个时间就是后面录像搜索的时间精度)记录一个该录像的文件偏移位置。
文件类型记录(在记录offset的时候 同时记录类型,如motion ,time)
01_201510212115.index记录格式如:
20151021211520_01_xxxx_ (xxxx 表示4个字节的2进制存放 ,表示文件的位置,加上\n 这样一行所以一共24字节)
如果觉得24字节太多可以把时间存储为2进制,去掉一些分隔符合等。
####################
bformat=0 0 表示没格式化,1表示被格式化
filesize=xxxx 表示对应录像文件的大小值
20151021211520_01_2EFE_ (分别是时间精确到秒,类型01如表示为定时,偏移位置 )
20151021211525_01_4A38_
20151021211530_01_6400_
20151021211535_02_6919_ (分别是时间精确到秒,类型02如表示为定时移动侦测,偏移位置)
##############
2、录像搜索方式:
比如查找 通道1 时间为2015-10-21-21点15分27s 录像类型为1 定时 开始的录像
a、先找到录像文件,录像文件时间的名称必须<= 当前搜索的时间点,因为录像文件名称的时间是往后面记录的,01_201510212115.st 。
b、同样找到对应的录像索引文件01_201510212115.index
c、从01_201510212115.index 中找到和收缩时间最近但是大于等于搜索的时间的索引 这里是20151021211530_01_6400
(关于这里的搜索可以先读取第一行 在根据5s一个索引 计算出下一次读取的位置,然后找到文件索引--但是有可能中间隔有断开录像,后面隔了几天进行录像,
那么还是记录在这个索引文件中,因为录像文件没有满4G,这样不能进行先读取第一行,根据时间来查找对应的时间索引,只能用其他算法(2分法)或者一行一行读取。)
d、找到索引后把索引的 录像类型,以及录像偏移位置都解析出来,可以根据类型来判断是否是要找到的录像类型。
e、根据录像文件偏移位置找到改录像,因为记录的时候都是I帧记录,所以把对应的I帧 读取出来 可以进行图像显示,
也可以把I帧率单独放在一个文件中来进行转图片,但是需要在索引中添加I帧的位置,方便查找。
f、如果对应位置的录像I帧读取失败,或者对应位置录像有坏块,那么重新在索引文件中查找下一条索引信息,依此类推。
3、硬盘格式化:
1、快速简单格式化---,实际数据没有被格式化,可以直接把录像索引文件删除,或者再索引文件中的filesize 写为0,或者做一些其他标记位置说明被格式化的文件(用于后续恢复数据)
---- 关键是录像索引文件的管理,记录文件对应时间的I帧的在硬盘分区中的偏移位置,考虑如果硬盘有坏道的情况,以及I帧率位置记录。
1、录像文件写入的思考:
如果通道开启录像,录像记录方式:
一个通道创建一个大的文件为4G,文件名称为通道号加上日期时间到分钟如01_201510212115.st(通道1,时间为2015-10-21:21:15分 ),
如果如果录像大于4G 再创建一个类似的文件。
文件offset 记录文件名次和视频名次前缀一样如01_201510212115.index,可以5s(也可以1s,10s 这个时间就是后面录像搜索的时间精度)记录一个该录像的文件偏移位置。
文件类型记录(在记录offset的时候 同时记录类型,如motion ,time)
01_201510212115.index记录格式如:
20151021211520_01_xxxx_ (xxxx 表示4个字节的2进制存放 ,表示文件的位置,加上\n 这样一行所以一共24字节)
如果觉得24字节太多可以把时间存储为2进制,去掉一些分隔符合等。
####################
bformat=0 0 表示没格式化,1表示被格式化
filesize=xxxx 表示对应录像文件的大小值
20151021211520_01_2EFE_ (分别是时间精确到秒,类型01如表示为定时,偏移位置 )
20151021211525_01_4A38_
20151021211530_01_6400_
20151021211535_02_6919_ (分别是时间精确到秒,类型02如表示为定时移动侦测,偏移位置)
##############
2、录像搜索方式:
比如查找 通道1 时间为2015-10-21-21点15分27s 录像类型为1 定时 开始的录像
a、先找到录像文件,录像文件时间的名称必须<= 当前搜索的时间点,因为录像文件名称的时间是往后面记录的,01_201510212115.st 。
b、同样找到对应的录像索引文件01_201510212115.index
c、从01_201510212115.index 中找到和收缩时间最近但是大于等于搜索的时间的索引 这里是20151021211530_01_6400
(关于这里的搜索可以先读取第一行 在根据5s一个索引 计算出下一次读取的位置,然后找到文件索引--但是有可能中间隔有断开录像,后面隔了几天进行录像,
那么还是记录在这个索引文件中,因为录像文件没有满4G,这样不能进行先读取第一行,根据时间来查找对应的时间索引,只能用其他算法(2分法)或者一行一行读取。)
d、找到索引后把索引的 录像类型,以及录像偏移位置都解析出来,可以根据类型来判断是否是要找到的录像类型。
e、根据录像文件偏移位置找到改录像,因为记录的时候都是I帧记录,所以把对应的I帧 读取出来 可以进行图像显示,
也可以把I帧率单独放在一个文件中来进行转图片,但是需要在索引中添加I帧的位置,方便查找。
f、如果对应位置的录像I帧读取失败,或者对应位置录像有坏块,那么重新在索引文件中查找下一条索引信息,依此类推。
3、硬盘格式化:
1、快速简单格式化---,实际数据没有被格式化,可以直接把录像索引文件删除,或者再索引文件中的filesize 写为0,或者做一些其他标记位置说明被格式化的文件(用于后续恢复数据)
2、完全格式化----硬盘的录像数据分区进行重新文件系统格式化,用mkfs 等命令进行格式化,找不到录像数据以及录像索引文件。
可能还有一些地方没有想到的,后面再进行补充吧
0 0
- 录像 的一些思考总结--1
- 对ui5的一些总结和思考
- 一些思考,一点总结
- typedef一些总结思考
- Android系统的一些日志录像位置
- 关于嵌入浏览器架构的一些总结和思考
- 计算机技术发展的一些随笔总结(我们需要思考)
- 计算机技术发展的一些随笔总结(我们需要思考)
- 项目q总结:关于Linux性能问题的一些思考
- C/C++程序员入门java的一些总结与思考
- 关于课程设计、毕业设计的一些总结与思考
- Jquery绑定事件的一些思考和总结
- 关于Android中ANR的一些思考总结
- 关于开发简易搜索引擎的一些总结和思考
- Linux系统引导和启动的一些思考与总结
- Android关于VideoView的一些思考和总结
- 关于内存管理思考方式的一些学习总结
- 关于Java访问权限的一些思考与总结
- java I/0流与异常
- 汇文毕业项目--好多鱼
- Android视频播放器---播放远程非流MP4
- Linux 基本命令学习
- HDU 5443 The Water Problem 解题报告(如题)
- 录像 的一些思考总结--1
- searchRange
- MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志
- Java的线程状态切换
- iOS App开发准备工作—开发环境准备
- 解决fragment replace 重叠现象
- centos安装hadoop-1.2.1
- ubuntu 编译c++
- Mysql的主从复制功能