利用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第三版条款,
或者根据你的选择,任何后续版本的条款。
开始你的修复之旅吧!
- QQwen3-Next-80B-A3B-InstructQwen3-Next-80B-A3B-Instruct 是一款支持超长上下文(最高 256K tokens)、具备高效推理与卓越性能的指令微调大模型00
- QQwen3-Next-80B-A3B-ThinkingQwen3-Next-80B-A3B-Thinking 在复杂推理和强化学习任务中超越 30B–32B 同类模型,并在多项基准测试中优于 Gemini-2.5-Flash-Thinking00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~0266cinatra
c++20实现的跨平台、header only、跨平台的高性能http库。C++00AI内容魔方
AI内容专区,汇集全球AI开源项目,集结模块、可组合的内容,致力于分享、交流。02- HHunyuan-MT-7B腾讯混元翻译模型主要支持33种语言间的互译,包括中国五种少数民族语言。00
GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile06
- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00
热门内容推荐
最新内容推荐
项目优选









