使用十六进制编辑器将损坏的文件修复为原始 mp4 文件

问题描述 投票:0回答:1

我有一个损坏的文件,它是我的索尼相机生成的

.rsv
文件。我还有其他格式为
.mp4
的参考文件,它们可以正常工作。

我有一些 IT 知识,决定使用 HxD 编辑器检查这两个文件。我发现 .rsv 文件只包含数据,而 mp4 则完全封装了页眉和页脚部分。

我知道 mp4 文件的标头在哪里开始和结束,并将其添加到损坏的文件中,它看起来像这样:(简化)

....ftypXAVC....
XAVCmp42iso2....
uuidPROF!.O...i\
...@............
FPRF.... .......
...,APRF........

我不明白mp4的页脚是什么样的,我发现原始文件有一些东西,比如

moov
,但我不太确定页脚从哪里开始。我尝试复制我认为是页脚的部分并将文件保存为 mp4。我无法播放视频..

互联网上没有任何关于此的信息,除了我可以尝试的https://orochena.net/howto/carving-with-scalpel/

file binary hex data-recovery
1个回答
0
投票

原子树

MP4 文件中没有页脚之类的东西。 MP4 基本上是一个 QT 容器,它的根部分称为“原子”是:

  • ftyp - 现在我们称之为“标题”
  • mdat - “有效负载”,视频数据
  • moov - 我们称之为“索引”,允许玩家在视频数据中搜索

这些“根”原子(据我所知,这不是官方术语)可以分支成子原子,例如,您会看到 moov 原子由其中几个原子组成。

像 MP4 Inspector 这样的工具很好地说明了这个分支结构:

每个部分前面都有一个 4 字节(字)值,该值给出了该原子的大小。例如,一个 ftyp 原子,前 8 个字节可能如下所示:

00 00 00 18 66 74 79 70

其中

66 74 79 70
是“ftyp”(ascii),
00 00 00 18
是原子的大小。这样我们就可以沿着原子“链”行走:

因此,ftyp 的大小 = 00 00 00 18,以小数表示为 24。实际上,在偏移量 24 处,我们找到了下一个原子。

原子的顺序是任意的,尽管通常 ftyp 将是你的第一个原子。然而,像 MPCHC 这样的播放器会很乐意播放您的视频,即使它发现 mdat 作为第一个原子。

所以,没有页脚

无论如何,我希望通过一个长篇故事来说明 MP4 容器中没有页脚这样的东西。

“修复”您的文件

ftyp:

如果唯一缺少的是 ftyp 原子,您可以通过使用十六进制编辑器简单地插入它,从具有相同设备和设置的视频节目中窃取它。

mdat:

缺少无法修复的 mdat 原子。然而,即使您只有 mdat 视频的一部分,如果您有 moovatom,仍然可以使用十六进制编辑器来播放它,或者如果缺少 moovatom,则可以使用像 untrunc 这样的工具来播放它。

moov

moovatom 通常可以使用像 untrunc 这样的工具来“生成”,该工具需要一个“参考文件”:使用相同设备或具有相同设置的软件制作的视频。

奖金

解释和重复我所说的一些内容的视频+仅使用免费工具修复损坏的 MOV/MP4 视频的一些示例:https://www.youtube.com/watch?v=-4X-zpotg2M

© www.soinside.com 2019 - 2024. All rights reserved.