MP4 损坏打不开?untrunc 一条命令重建索引
2026/8/22 12:07:28 网站建设 项目流程

MP4 损坏打不开?untrunc 一条命令重建索引

【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc

MP4 录到一半打不开了?用 untrunc 无损修复 MP4:借同设备的正常视频,重建损坏文件索引。

什么损坏能修、什么修不了

遇到 MP4 无法播放,或想找 MOV 文件损坏修复方案,先花 10 秒判断你的情况属于哪一类,再决定是否值得折腾。

  • 能修:MP4、MOV、M4V、3GP 里"数据还在、索引坏了"的损坏。录制写到一半中断、moov 原子丢失或被截断,都属于这一类,untrunc 会重建索引并输出可播放的_fixed文件。
  • 能修:H.264 与 HEVC 编码的视频流;GoPro、Sony XAVC 的格式也已适配,支持 2GB 以上的文件,内存占用低。
  • 不能修:数据区(mdat)本身已丢失或被覆盖。存储卡格式化过、文件被后续写入覆盖,untrunc 变不出不存在的数据。
  • 不能修:帧数据内部的画面损坏。它不重新编码,只补索引;数据区质量是什么样,修出来就是什么样。

它是 ponchio/untrunc 的改进分支,比原版快 10 倍以上,修复流程本身通常只需几分钟。

安装 untrunc 与第一条修复命令

Linux 上装好 ffmpeg 的三个编译依赖(libavformat、libavcodec、libavutil 开发包),两条命令完成编译:

git clone https://gitcode.com/gh_mirrors/un/untrunc cd untrunc && make

Windows 有官方预编译包,macOS 用 Homebrew 装好 ffmpeg 和 yasm 后再 make,也可以用仓库自带的 Dockerfile 直接跑容器。核心命令只有一条,参数顺序是正常视频在前、损坏视频在后:

untrunc ok.mp4 broken.mp4

跑完后,同目录会出现broken_fixed.mp4

原理速览:moov 索引是怎么重建的

MP4 由一系列原子组成:mdat 存画面和声音的实际数据,moov 是一张记录每一帧数据位于文件哪个偏移的索引表。截断损坏时,常见情况是 mdat 还在、moov 残缺。untrunc 先解析正常视频的全部原子结构,再拿它当模板,在损坏文件里按相同规律逐帧定位数据,最后写出新的索引。打个比方:仓库里的货都还在,只是货单被撕了,untrunc 拿同批次另一个箱子的货单格式,照着重新打一张。

参考视频怎么选、失败时怎么排查

  • 参考视频不对口:相机不同、分辨率或码率不同,帧结构对不上,匹配率会明显下降。优先用同设备、同设置拍的一段;手上没有的话,先用untrunc -i ok.mp4查看轨道参数,再决定用哪段做参照。
  • 修完音画不同步:加-v看详细日志,确认是哪一步没对上,再用-sv把视频时长拉伸到与音频一致。
  • 结构坏到连 mp4 结构都识别不出:加-sm强制搜索 mdat,配合-vv日志观察它停在哪一步。

现在就能做一件小事:从常用相机里挑一段正常的短视频存好,再对手头损坏的文件跑一次untrunc -v ok.mp4 broken.mp4,把完整日志留档。如果数据还在,几分钟内就能拿到_fixed文件;如果日志显示 mdat 对不上,基本可以判断数据已丢失,及时止损,改用数据恢复方案。

【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询