小米智能摄像头mp4多碎片手工恢复案例

小米智能摄像头mp4多碎片手工恢复案例

智能摄像头目前在市场上极为常见,仅需要一张存储卡即可实现视频、音频的采集,同时可以通过手机APP进行远程控制,相比传统安防品牌成本更低、更容易部署。在智能摄像头品牌中小米算是绝对的大厂,其采用的方案也是比较成熟比较典型的,且很容易被别的小厂“克隆”,目前处理过很多小厂实际上用的都是小米的方案。

故障存储:  32G TF卡   fat32文件系统  簇大小64sec

故障现象:

客户反映此卡被格式化后重新使用了一段时间,生成的文件容量大约163.81MB(实际上视频文件就1条,后期经过分析日志发现多数文件是通过手机端APP被恶意删除的并非格式化),剩余空间还有29.5G(如图1)。

图1:卡的剩余空间还有29.5G

故障分析:

小米的智能摄像头之前处理过不少,基本上规律如下:

1、1分钟生成一个文件。

  1. 文件格式为MP4,新式摄像头一般使用HVC高清编码。
  2. 采用的方案是在生成当前MP4文件结构体时,已经在采集新的视频画面数据,此时会导致两个文件碎片交叉,糟糕的是有时候碎片的大小仅仅只有一个簇,即碎片又小又多。

第3条会产生最不愿意看到的情况-----“音视频”数据区交叉,HVC采用的也是压缩算法,其会对采集画面进行量化后压缩,对于压缩来讲就是为了让数据不在松散,所以根本没有任何规律而言(有规律的一定是结构体而不是数据本身),此种情况下恢复难度是很大的,因为就算用CHS零壹视频恢复系列软件,也无法甄别数据区交叉碎片的情况,这个时候只能通过穷举遍历法结合恢复经验来判断。

图2:1.9M的文件在32K簇大小情况下竟然有40个碎片,典型的碎片又多又小

故障处理:

根据这种复杂的情况,通用型的恢复软件是无法恢复的,原理如下:

  1. 删除或者格式化后FAT32或者exfat 都会对FAT表进行清0,清0后存在碎片的文件是无法得到有效的链表的,没有链表就无法得到准确的数据。
  2. 由于文件不连续存放,所以此时通用型恢复软件只能通过目录项中的文件第一簇指针和文件长度,来定位文件头。然后按照连续存放的方式读取,这就导致恢复的文件除了第一簇其它全是错误的。

图3:通用型恢复软件R-Studio新版本增加了文件校验并提示发现存在碎片

图4:查看文件肯定是无法播放

但是我们可以使用通用恢复软件来扫描并定位文件的目录,FAT32格式化后只要目录项所在簇没有覆盖就能定位文件的第一个簇,也就是文件头所在,在来定位文件尾,两者之间就是数据区间

由于文件名中就包含了日期和时间所以这个也可以精确定位到客户需要的文件,经过通用软件扫描发现客户要的文件名都在,而且第一簇起始是相对靠中间的,所以恢复的机率还是比较大的。

下边这些话照抄之前的案例,解释的很清楚,就不再码字了 :-) :-) :-)

下图可以看到通用恢复软件只会定位到文件目录所在的第一个簇,也就是文件头所在,但是后边的区域就是直接以长度获取了,所以肯定是不能用的。通过这个方法成功定位了客户所要的时间段,由于是采用裸流,所以计划提取文件头所在的簇,得到第一帧画面,来和客户确定数据。但是发现失败了,因为以一个簇为单位进行提取发现视频帧是不完整的,说明碎片极小可能只有一个簇的大小(可以理解为首帧长度>簇长度)。其原理如图5,第一帧至少有三个DATA分割分别是DATA0~DATA2,注意DATA区本身就是对现实环境抽象化取值再转换成数字化的底层数据其是压缩类数据,没有参考值。另外就是图5中是为了方便介绍用了比较简单的方式,现实中可能DATA1和DATA0会“距离”很远,极端情况下也有可能DATA1位于DATA0之前(这在所有文件系统中都是允许的)。

图5:视频、音频帧数据存在碎片的简略图

经过使用不同的方案反复测试,发现没有比较好的办法应对,但是也找到了此类文件的规律,其采用moov后置方案,基本上可以判断在head和moov之间的数据就是此文件的所有簇列表,现在的问题是需要精确的定位碎片并分离数据,但是用常规的方法却无法做到。最后想到之前处理的一个JPG碎片案例,使用遍历方法不断以簇为单位写入,再查看数据,然后根据此方案再结合一些HVC的特征制定了以下恢复方案:

  1. 获取文件区间
  2. 视频帧自身特征来缩小范围
  3. 日志和JPG文件头来缩小范围

4、2和3没有地方直接遍历

  1. 根据此方案,重新写了一个小程序进行碎片的筛选和定位,写入一轮再查看一轮,最终完成定位和重组,好在文件较小,经过对比时间需要的文件有11个,直接请出我们之前编写的“MOOV视频RAW级重组程序“,程序的精度和便利度已经很好了,所以直接处理即可,如果没有此程序,光靠纯粹的手工是一项不可能完成的任务。

图6:MOOV视频RAW级碎片重组程序是恢复此类案例很优秀的助手

下图为恢复效果,11个文件播放没有任何问题,视频帧及音频帧全部正常,11个文件消耗了约三天多的时间,恢复的成功验证了方案的可行性。

图7:重组好的视频文件

这就是小米智能摄像头APP删除文件又写入的恢复方法,大家在遇到此类问题时,可以和我们联系!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES-深入理解倒排索引

倒排索引 idproductdesc1新版 小米 至尊-纪念版手机1小米 NFC 手机3NFC手机4小米 耳机5华为 耳机6扫地机器人7华为 Mata………………term_indexterm dictionaryposting list------------------------------------小米1……100W华为6,7,9NFC76,90耳机5352红米643,98机器人645,9…

数字电源为什么一般用DSP控制,而不能用普通的单片机?

数字电源为什么一般用DSP控制,而不能用普通的单片机? 首先你要清楚,数字电源需要一个芯片具备什么功能? 1 能发PWM波 ,并且具备保护关断功能; 电源对PWM发波 要求很高,精度要ns级甚至ps级的&…

C++中异常的栈展开概念

C中的异常栈展开是指,当某个函数中有异常产生(这里不考虑是主动抛出的还是被动产生的),在异常被捕获之前的函数调用链上,函数不会正常执行返回,即异常产生之后的程序逻辑不会被执行。 (注意&…

RTDETR阅读笔记

RTDETR阅读笔记 摘要 DETR的高计算成本限制了它们的实际应用,并阻碍了它们充分利用无需后处理(例如非最大抑制NMS)的优势。文中首先分析了NMS对实施目标检测的精度和速度的负面影响。(RTDETR是第一个实时端到端的目标检测器。具…

temu货不对板哪里修改图片

在Temu这个跨境电商平台上,如果您需要修改商品图片,通常需要在卖家中心进行操作。下面是一般的步骤,但请注意,不同平台的操作可能略有不同,具体请参考Temu官方的帮助文档或联系客服。 先给大家推荐一款拼多多/temu运营…

OpenCV快速入门:彩蛋——小游戏制作

文章目录 前言一、游戏玩法1.1 核心玩法1.2 特殊事件 二、功能模块划分2.1 主游戏文件 (main.py)2.2 游戏对象 (game_objects.py)2.3 游戏逻辑 (game_logic.py)2.4 事件和奖励 (events_and_rewards.py)2.5. 游戏界面 (game_ui.py) 三、完整代码3.1 主游戏文件 (main.py)3.1.1 游…

计算机网络(超详解!) 第二节 物理层(下)

1.信道复用技术 复用 (multiplexing) 是通信技术中的基本概念。 它允许用户使用一个共享信道进行通信,降低成本,提高利用率。 1.频分复用 FDM(Frequency Division Multiplexing) 将整个带宽分为多份,用户在分配到一定的频带后,…

20、LED点阵屏

LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等 LED点阵屏分类 按颜色:单色、双色、全彩 按像素…

企业营销管理能够实现自动化吗?怎么做?

当今企业面临着越来越多的营销难题:如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做?或许CRM系统营销自动化会起到作用。 客户细分: 企业可以通过CRM的客户细分功能,根据客户…

【libGDX】立方体手动旋转

1 前言 本文主要介绍使用 libGDX 绘制立方体,并实现手动触摸事件控制立方体旋转。 为方便控制触摸旋转,并提高渲染性能,我们通过改变相机的位置和姿态实现立方体旋转效果。 读者如果对 libGDX 不太熟悉,请回顾以下内容。 使用Me…

11.31链表,之前的数据结构(未完,饼)

根据输入序列建立二叉树 链表 回顾一下二分面积最小 一些性质题回顾 哈夫曼树构建 第十一周——哈夫曼树 5 1 2 2 5 9 37 桶排序 #include <iostream> #include <vector> #include <algorithm> #include<stack> #include<queue> #includ…

docker部署kerberos,群晖nas中nfs开启kerberos校验

背景 nas开启nfs存储共享&#xff0c;默认情况下只能给IP/24做限制, 达不到安全效果 需要增加kerberos策略校验&#xff0c;并且持久化kerberos数据&#xff0c;避免容器重启丢失数据 环境描述 宿主机系统&#xff1a;CentOS Linux release 7.9.2009 (Core) Docker版本&#xf…

ESP32-Web-Server编程- 实现 Web 登录网页

ESP32-Web-Server编程- 实现 Web 登录网页 概述 是时候实现更加安全的网页了。登录机制是最简单的控制网页访问权限的方法。 需求及功能解析 本节演示如何在 ESP32 上部署一个 Web 服务器&#xff0c;并建立登录页面的机制&#xff0c;用户可以实现登录、登出的功能&#x…

【Python表白限定】李峋同款可写字版跳动的爱心(完整代码)

文章目录 跳动的爱心环境需求完整代码详细分析系列文章 跳动的爱心 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0&#xff08;可选&#xff0c;这个库用于打包&#xff0c;使程序没有python环境也可以运行&#xff0c;如果想发给好朋友的话需要这…

nginx配置反向代理及负载均衡

目录 1.前端发送的请求&#xff0c;是如何请求到后端服务的1.nginx 反向代理的好处&#xff1a;2.nginx 反向代理的配置方式&#xff1a;3. nginx 负载均衡的配置方式 1.前端发送的请求&#xff0c;是如何请求到后端服务的 1.nginx 反向代理的好处&#xff1a; 提高访问速度 因…

一文解决msxml3.dll文件缺失问题,快速修复msxml3.dll

在了解问题之前&#xff0c;我们必须首先清楚msxml3.dll到底是什么。DLL&#xff08;Dynamic Link Libraries&#xff09;文件是Windows操作系统使用的一个重要组成部分&#xff0c;用于存储执行特定操作或任务的代码和数据。msxml3.dll为Windows系统提供处理XML文档的功能。如…

小米摄像头拆机教程

今天拆解一下好久不用的小米摄像头&#xff0c;记录下拆机过程&#xff0c;有需要的小伙伴可以自行查看 一、拆底座 首先拿出底座的四个橡皮塞、把对应的螺丝拧下来就可以了&#xff0c;这一步还是比较简单的 二、拆下底部排线 三、拆下底部电机和底座 按下方的红圈拆掉电机上的…

全网最新最全的Jmeter接口测试:jmeter组件元件介绍

JMeter 的主要测试组件总结如下&#xff1a; 1. 测试计划是使用 JMeter 进行测试的起点&#xff0c;它是其它 JMeter 测试元件的容器 2. 线程组代表一定数量的并发用户&#xff0c;它可以用来模拟并发用户发送请求。实际的 请求内容在Sampler中定义&#xff0c;它被线程组包含…

Redis主从复制实现RCE

文章目录 前置知识概念redis module 利用条件利用工具思路例题 [网鼎杯 2020 玄武组]SSRFMe 前置知识 概念 背景是多台服务器要保存同一份数据&#xff0c;如何实现其一致性呢&#xff1f;数据的读写操作是否每台服务器都可以处理&#xff1f;这里Redis就提供了主从复制的模式…

c++ pcl出现LNK2019 宏定义 PCL_NO_PRECOMPILE

问题&#xff1a;c pcl使用拟合圆柱时出现LNK2019问题&#xff1b; 说明&#xff1a;lib等配置没有问题&#xff1b; 解决方案 在上述代码中添加如下代码即可 #define PCL_NO_PRECOMPILE 是 C 中的预处理器指令&#xff0c;用于在代码中定义一个宏。而 #undef PCL_NO_PRECOM…