佳能R6算是佳能的一代神机,市场占有率相当高。常见的恢复案例也很多,这次来说下一个比较特殊的案例,三条丢失视频文件,两条是存在结构体碎片的,我们一起来看看.

故障存储: 32G卡, FAT32文件系统

故障现象:

根据客户描述,误操作删除导致三条视频素材丢失,两条较小的可能有个两分钟,一条大的约10分钟出头。因为是不同的人操作摄像机所以当事人并不清楚视频丢失,而是在拍摄完几条后对比数据时才发现丢失了三条素材。

故障分析:

FAT32删除后会对FAT表清0,目录项仅做删除标识,起始簇指针和大小并不清0。但是有一点能确定,佳能全系列是100%存在碎片的,并不连续存放,这个涉及到预览小视频和原始大视频排队写入的问题,这里就不细说了,感兴趣的可以看看我们之前的案例介绍。不连续存放,普通软件是无法恢复的,因为普通恢复软件只会通过定位起始簇指针然后读取目录项中长度来恢复文件,可以说文件头对了,但是后边数据区全是错的。

客户在找到我们之前已经使用了别的恢复软件进行扫描,但是没有发现,后又辗转找了几家当地的恢复公司,得到的结果是全部覆盖无法恢复。还好客户开始处理前听从朋友的建议,先做了一个镜像文件。分析原始镜像,因为MP4类文件会记录拍摄时间,所以通过搜索时间进行定位,发现至少有两条记录和客户描述的时间高度吻合。这证明数据可能还是存在的!

故障处理:

我们使用CHS零壹视频恢复程序专业版(标准版/高级版)来进行扫描

STEP1:选择镜像文件,扫描大类选择高清视频,小类选择 Canon佳能_MP4。

STEP2:等待扫描完成。 可以看到程序已经自动解析出摄像机拍摄时间、品牌、总速率、音视频编码等参数,程序会根据这些参数建立查找模型,进行精确定位。

STEP3: 查看结果,果然发现了客户需要的两条素材。结果对比发现这两条时间不长的素材,结构体元文件都存在碎片。

什么是结构体元文件呢?这个涉及到视频的编码和解码的一些常识,下边来简单说下:

多媒体一类文件,无论那种格式都需要在解码的时候让播放器(或者编辑软件)获取一些视频的元数据(比如时长、总速率、视频编码、音频编码),这些元数据是播放器解码时的重要参考信息。有了这些信息支撑,播放器才能进一步去解码更底层的视频流和音频流,才能做好多个流之间的同步匹配。在MP4、MOV、3GP这一类QT结构文件中他们的结构体元文件我称之为----“moov元文件”。

MP4类元文件使用的是苹果的QT类封装结构,其优点是可以扩展、支持64位寻址(可以保证单一文件做到足够大,同时解码开销很小。但是有一个致使缺点,容错性极差,我说的这个容错并不是解码级而是结构级。比如相对TS包来讲,TS包的结构可以在前边包都有问题的情况继续向后解析,但是MP4却不行,moov元文件如果有问题整个文件就变成了非法文件,播放器直接就拒了,更不用说去做深入解码的操作了!

moov元文件不连续存放就会导致很多视频专业恢复软件无法有效发现,从而认为数据已经丢失,这个也是之前客户用过不同的视频恢复软件没有发现的原因。

下边截图是其中一条素材的结构体元文件碎片区结束和开始,上下两个碎片位于不同的LBA偏移值:

上碎片的结束处是另一个文件数据区起始,这也间接证明了我们之前说的排队写入,我们来想一下这条素材产生的结构体碎片的原因,假设此素材为A,另一素材为B。那么排队写入是以下这种方式:
1、A文件请求写入,传来了相应的簇块组,这个时候摄像机管理程序应答请求允许写入A文件的簇块组。

2、在1还没有写完或者是快要写完的时候,传来了B文件的写入请求。此时管理程序会优先写完1

3、1写完成后,再来继续2的写入请求。

……

如此重复,直到所有写请求都完成。可能难以理解,为什么不调节成连续的写入请求呢,比如先写完A再写B,这样的话因为是连续存放,IO的速度会很快。但是现实中不太容易做到,因为所有的请求对于管理程序或者操作系统而言是平等的。这个涉及到了计算机操作系统、硬件底层的设计理念,也超出了我们这个案例的范畴,所以就不多说这些了,总之排队写入在现实中是大量存在的,特别是我们所处的这个云时代,到处都是客户端,所有的数据都是在排队或者处于经要排队的阶段!

对比发现实际上碎片不多就两个,之前遇到这类问题,我们的方案就是手工重组,略微麻烦,因为定位这些需要时间,还需要确认上下碎片的关联性,另外重组也需要提取再连接碎片。现在直接使用CHS零壹视频恢复程序专业版(标准版/高级版)直接扫描就可以解决这个问题,下图就是丢失的两条素材(预览画面做了打码处理):

STEP4:还有一条大的素材没有发现,怀疑是否结构体是否彻底覆盖了,毕竟后续拍了好几条视频,所以重点在L5级中查找,L5级是CHS零壹视频恢复程序根据音视频帧特征深入查找和判断的帧级数据,并不借助于moov元数据,所以重点查看这个级别的文件,找出认为符合条件的。可以看到程序共发现16个文件,容量约9.67G,根据客户说的时长,这个摄像机是AVC编码,选择至少要大于2G的文件,然后下一步进行修复即可。

STEP5:修复L5级文件,这个工作可以交给CHS零壹视频恢复高级版的修复模块来完成,或者使用CHS视频修复程序QT版也可以,具体方法就不赘述了,参考别的案例。

最后在这些文件中成功找到了客户要一条不到10分钟的重要视频文件,修复程序完成的使命就是根据样本文件重建L5级文件的moov元文件,至此数据恢复工作完成!

这就是佳能R6 MOOV结构体存在碎片以及被覆盖的恢复方法。

佳能R6存在moov结构体碎片恢复方法相关推荐

  1. c/c++下取消结构体字节对齐方法

    c/c++下取消结构体字节对齐方法 在c/c++下编译器会默认地对结构体进行对齐,其对齐的方法跟平台具体的特性有关,本文主要介绍结构体不进行对齐的方法. 1.结构体字节不进行对齐的用途 (1).减小内 ...

  2. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...

    1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...

  3. 查看一个结构体成员的方法

    find / *.h -name|xargs grep 结构体名 这个方法并不是很凑效... 万能的gdb 法: int main(void){type var;return 0;}gcc -g a. ...

  4. Keil中取消结构体对齐的方法

    Keil中取消结构体对齐的方法 我在写通讯协议的时候喜欢使用 Union 的形式将整个数据包按需处理,接收数据时使用数组形式来接收,解析数据则使用结构体形式来解析,伪代码如下. union {uint ...

  5. C语言定义一个结构体方法,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  6. C语言 · 运用结构体的排序方法

    AllSight C语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...

  7. c语言结构体定义坐标,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  8. C/C++ 中访问结构体成员的方法

    先看例子:  1#include <stdio.h> 2void main(){ 3    typedef struct {     4     int int_field;      5 ...

  9. libevent 获取多线程结构体变量加锁方法

    在看到http-server代码,获取多线程结构体对象的成员加锁方法 evutil_socket_t   evconnlistener_get_fd(struct evconnlistener *le ...

最新文章

  1. Spark发布1.3.0版本
  2. java反射机制知识_Java反射机制讲解,程序员必须掌握的知识点
  3. Hadoop安装及eclipse配置
  4. DHCP服务器禁用NetBios功能后引发WPAD失效解决方法
  5. tensorflow练习
  6. WINCE蓝牙应用开发方式
  7. linux设置账号权限设置,Linux账号管理与ACL权限设置
  8. vr二维码_VR小花看看app
  9. Atitit RSA非对称加密原理与解决方案
  10. 电子邮件收发原理和实现(POP3, SMTP)
  11. Python - 装饰器
  12. windows简单TCP通信 C++
  13. [sqlite] android create db in SD card
  14. 负载均衡轮询算法和服务器性能,负载均衡算法
  15. 如何克服枯燥工作带来的单调感和厌烦感
  16. k近邻matlab,模式识别 最近邻法和k近邻法MATLAB实现.doc
  17. 盒子不显示工会与服务器,DNF天空盒子找不到怎么办 dnf新版本活动防坑指攻略...
  18. 金融理论与实务公式汇总
  19. 计算机专业教师技能比赛,青年教师展风采,技能比赛促提升
  20. 免费ftp服务器,盘点三款好用的免费ftp服务器

热门文章

  1. 网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!
  2. 尚硅谷以太坊区块链学习(4)
  3. eclipse java 测试_java-在Eclipse中“未找到JUnit测试”
  4. html分页显示标题,在分页符后显示当前表格标题html
  5. gnuplot 让您的数据可视化
  6. 实用算法题:excel表列序号与十进制数字的互相转化算法讲解!
  7. 面试——测试用例设计
  8. 三轮全向底盘实现绘图功能
  9. 2021高考放榜,还能无脑选计算机专业吗?
  10. internetopen socks 之间关系