利用Perl修复MP4文件的终极解决方案:WET Ultimate Solution
是什么?
WET Ultimate Solution是一个开源工具,专为恢复损坏、删除或未完成的h264视频的MP4、MOV、3GP等文件而设计。理论上,它也可用于AVI、MKV、M4V等其他容器,但声音恢复可能更为复杂。
如果你经常用相机、手机、运动相机、屏幕录制或无人机拍摄视频,这个工具可能会派上大用场。即使是高速撞击树干后的无人机残骸中,试图提取最后半秒的视频,也有机会借助此工具。
需要什么?
修复文件,你需要:
- 损坏的文件或卡/闪存盘/硬盘的镜像。
- 一个独立的新磁盘,有足够的空间存放修复结果。
- 运行着Linux或Windows系统的机器,安装了Perl和ffmpeg/ffprobe/ffplay。
- 如需恢复AAC音轨,还需要
faad2(libfaad-dev包)以及gcc(编译aacfixer工具)。 - 一个良好记录的样本文件,与待修复文件在同设备、同设置下录制。
如何使用?
- 如果是已删除、未完成或紧急关机的情况,首先使用WinHex或其他类似工具获取图像或尝试恢复文件。
- 拍摄一个新的视频,确保其录制条件与需要恢复的文件完全相同(包括到屏幕抖动的程度)。
- 运行命令:
perl fixer.pl <good_file.mp4> <bad_file.mp4> <output_prefix>
工作原理?
工具会创建中间文件:
-headers.aac: 之后用于恢复声音的文件-headers.h264: 视频文件,用于创建头信息-nals.txt: 临时文件,记录参考视频包的信息(Windows 7 下可能生成时间较长)-nals-stat.txt: 我们“学习”的内容。如果出现问题,请提供此文件。-stat.mp4: 实际上是一个无声且剪裁至20秒的样本文件副本。
最终将生成:
-out-video.h264: 恢复的视频-out-audio.raw: 恢复的音频(实际上只是视频之间的部分)
所有文件将在运行脚本的当前目录下创建。
你可以用任何播放器如ffplay来播放-out-video.h264,但添加声音会稍复杂一些。
声音恢复:
不同的视频摄像机可能以不同方式记录声音:
- 如果声音是mp3格式,只需将
-out-audio.raw重命名为file.mp3,然后用任何播放器打开。 - 对于PCM格式(例如ULAW),如某些Sony视频摄像机所采用的,可以轻松保存,通过以下命令转换为WAV:
请确保选择适合你的设备的参数。ffmpeg -f s16le -ar 48000 -ac 2 -i somefile-out-audio.raw -c copy output.wav - 如果音频为AAC格式,最常见的一种,我们将编译附加的
aacfixer工具:
前提是你已经编译了faad2库并将libfaad.a和neaacdec.h文件放在当前目录下。gcc aac.c -L. -lfaad -lm -o aacfixer
然后运行:
./aacfixer somefile-headers.aac somefile-out-audio.raw
这可能需要一段时间,因为暴力恢复方法被用于解码声音。
出问题怎么办?
记住,代码是为了作者内部需求快速编写,并不保证适用于所有情况。除了写作的三天时间,作者又花了一周来撰写说明。如果不起作用,请创建一个问题报告,提供以下信息:
- 上传一个10到20秒的参考文件,使用GoogleDrive或Dropbox等服务。
- 上传损坏文件样本,大小不超过50MB。
- 描述录制设备型号或该文件创建后使用过的程序。是否进行了恢复还是直接从设备复制。
- 发生了什么(无人机撞树、空间不足、意外关机等)。
- 在哪个系统上运行了此工具,哪里出错了。
代码旨在跨多个平台工作,不依赖二进制文件,尽可能简单,因此效率不是首要目标。作者仅用了3天时间编写代码。
赞助支持:
如果你出于某种原因想要赞助,可以通过比特币或以太坊地址:
- 比特币: 1bU17VMyvxYfCN257AiHrPPca1bszuLna
- 以太坊: 0x39b64f347b7702ddb1f8B06A25575598d624b783
请注意,作者目前失业,非常需要资金。如果转账,他可以用数据恢复技能帮你解决问题,但帮助的程度取决于金额。
最新的GoPro、Xiao / Xiaomi Yi 4k和部分无人机用户:
这些基于Ambarella芯片的视频摄像机几乎都有相同的硬件配置。例如,作者的Xiaomi Yi4k搭载了Ambarella A9SE芯片,与GoPro一样,会同时写入主流的额外预览,供移动应用使用。固件中还有视频编辑器的遗留物,虽然用户看不见,但在未来版本中可能会用到。这导致两个文件在同一张卡上混合,如果作为单一文件恢复,会出现很多断裂片段。不要使用常规的数据恢复软件如R-Studio尝试恢复,它们会破坏文件!
幸运的是,作为这类视频相机的拥有者,作者可以进行大量实验,针对各种录像模式。作者还是一位文件系统专家,计划发布用于低级别操作闪存卡的实用工具。将来,它可以准确地恢复文件。但现在还不是时候。缺乏完成该项目的动力,所以暂时只有小预览。

其他工具:
为了寻找竞争对手,作者还编写了一个简单的脚本,读取文件的随机片断并合并在一起。当然,这样做出来的文件不可用,但能否恢复呢?
令人惊讶的是,许多商业工具对此束手无策,甚至无法解释失败的原因。开源工具如untrunc需要一些努力才能编译,但仍然无法正常工作。不过,也有一些工具能给出一定结果:
- mp4repair.org - 数据恢复服务。能在浏览器中无需参考文件即显示损坏文件的预览,但价格较高。不幸的是,他们告诉作者,恢复测试文件将会很昂贵,这让他感到失望。与技术支持的沟通也未能取得进展,因此无法推荐。
- http://slydiman.me/eng/mmedia/recover_mp4.htm - 结果接近作者的方法,但以mp4容器存储,理论上应更好地恢复音频和视频的同步。作者无法在VLC中播放结果,但ffplay显示了类似的画面。然而,作者似乎决定对项目进行商业化,并未发布新版本,也不是开放源代码。这是作者创建自己项目的原因之一。
如您所见,选择并不多。随着这个项目的发布,选择范围变得更宽!
联系作者
如果你想直接联系作者,可发送邮件至iformp4review@airmail.cc。 这不是作者的主要邮箱,回复可能不会很快。创建带有“检查邮件”文本的问题也是一种方式。
如果你有关于视频制作的一般性问题,建议在Video Stack Exchange提问,这是一个小型但非常棒的视频制作社区。
致谢:
特别感谢StackOverflow上的szatmary、Mulvya、VC.One的参与者。 感谢Slydiman,因为他没有实现我的功能请求并且没有公开源代码。 还要感谢我们的会议中遭受SJCAM折磨的同事,他们激发了我创作这个工具的热情!
许可证:
本程序是自由软件:你可以重新分发和/或修改
它根据Free Software Foundation发布的GNU General Public License第三版条款,
或者根据你的选择,任何后续版本的条款。
开始你的修复之旅吧!
ERNIE-4.5-VL-28B-A3B-ThinkingERNIE-4.5-VL-28B-A3B-Thinking 是 ERNIE-4.5-VL-28B-A3B 架构的重大升级,通过中期大规模视觉-语言推理数据训练,显著提升了模型的表征能力和模态对齐,实现了多模态推理能力的突破性飞跃Python00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
MiniMax-M2MiniMax-M2是MiniMaxAI开源的高效MoE模型,2300亿总参数中仅激活100亿,却在编码和智能体任务上表现卓越。它支持多文件编辑、终端操作和复杂工具链调用Python00
HunyuanVideo-1.5暂无简介00
MiniCPM-V-4_5MiniCPM-V 4.5 是 MiniCPM-V 系列中最新且功能最强的模型。该模型基于 Qwen3-8B 和 SigLIP2-400M 构建,总参数量为 80 亿。与之前的 MiniCPM-V 和 MiniCPM-o 模型相比,它在性能上有显著提升,并引入了新的实用功能Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00
GOT-OCR-2.0-hf阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00