news 2026/8/22 21:29:23

免费 MP4 视频修复工具 Untrunc:3 条命令救回无法播放的录像

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
免费 MP4 视频修复工具 Untrunc:3 条命令救回无法播放的录像

免费 MP4 视频修复工具 Untrunc:3 条命令救回无法播放的录像

【免费下载链接】untruncRestore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video.项目地址: https://gitcode.com/gh_mirrors/unt/untrunc

刚还能放的视频突然打不开了?Untrunc 是一款免费开源的 MP4 视频修复工具,你只需递给它一段正常的参考视频,它就能重建损坏文件的索引结构,让录像重新播放。

谁会用得上:MP4 视频无法播放的 4 种场景

对照一下下面几种情况,命中任意一条就值得继续看:

  • 监控录像因断电打不开,存储卡还在
  • 相机拍旅行视频拍到一半中断(没电、SD 卡满)
  • 文件拷进硬盘时损坏,变成「截断的 MP4 文件」
  • moov 缺失导致视频无法播放,播放器直接报文件损坏

这四种情况的共同点是:画面和声音数据大多还在,坏掉的只是文件的「目录」。这正是 Untrunc 修复 MP4 视频要解决的问题,而一般的数据恢复软件并不管这个。

能力速览:Untrunc 能做什么

  • 结构重建:以参考视频为模板重写字节级索引(moov),直接产出新的可播放文件
  • 多格式覆盖:mp4、m4v、mov、3gp 四种容器,m4a 纯音频也能用同样思路尝试
  • 多定位策略:内置 4 种 mdat 数据起始位置查找策略,失败后自动换一种重试
  • 诊断能力-i查看容器原子结构、-a分析参考视频是否健康,修复前先验证
  • 零配置运行:项目自带 Dockerfile,不用手动折腾 libav 依赖

从 0 到跑通:Untrunc 安装步骤(含 Docker 一行命令)

运行前准备好两个文件:一段来自同设备、同设置的正常参考视频,和那个损坏的目标文件。

  1. 拉取源码:
# 注释:下载 untrunc 项目并进入目录 git clone https://gitcode.com/gh_mirrors/unt/untrunc cd untrunc
  1. 构建镜像,这一步把所有依赖一次编译到位,产物很小:
# 注释:本地构建 untrunc 镜像 docker build -t untrunc .
  1. 执行第一次修复,把两个视频所在目录挂载进容器,参数顺序是好的在前、坏的在后:
# 注释:容器内执行修复,输出名为 broken_fixed.mp4 docker run -v /path/to/videos:/files untrunc /files/good.mp4 /files/broken.mp4
  1. 不想用 Docker 的话,需先源码编译 libav 再用 g++ 链接,完整参数见 Dockerfile 与 README.md,macOS 还要追加 -framework 系列参数。

核心操作与参数速查:untrunc 命令一览表

主命令固定接两个文件参数:untrunc good.mp4 broken.mp4,顺序不能反。输出默认落在损坏文件旁的xxx_fixed.mp4,不指定就不改名。只给一个文件配合-i-a,则是纯分析模式,不动原文件。

参数作用示例
-o指定输出文件名untrunc -o fix.mp4 good.mp4 broken.mp4
-i打印编码与原子结构信息untrunc -i good.mp4
-a分析参考视频本身是否健康untrunc -a good.mp4
-v输出详细日志,方便定位卡在哪untrunc -v good.mp4 broken.mp4
-M搜索可能的数据包起始位置untrunc -M good.mp4 broken.mp4
-d尝试纠正音视频漂移untrunc -d good.mp4 broken.mp4

常用组合是先加-v看流程走到哪一步停住,再按报错挑对应的策略参数重试。

踩坑排查:修复失败的 4 种报错应对

提示 Failed recovering the file,没有输出文件

现象:命令跑完报这个错,目录里没有 _fixed.mp4。 原因:没定位到 mdat 内容起点,或参考视频与损坏视频不匹配。 解法:换同设备同批次的参考视频,再试-M搜索包起始位置。

修出来了,但花屏或音画不同步

现象:能播放,几秒后画面成马赛克,或声音对不上嘴。 原因:参考视频与损坏视频分辨率、帧率不一致,模板对不上。 解法:重新挑参数一致的参考视频,加-d尝试纠正漂移。

本地编译报一堆 undefined reference

现象:链接阶段报 undefined reference to 'BZ2_bzDecompressInit' 之类。 原因:untrunc 依赖 libav 内部头文件,系统开发包符号不全。 解法:别硬啃本地编译,直接用自带 Dockerfile 构建;必须编译就按 README 补 -lbz2、-llzma 等参数。

修复后只能播放开头几秒

现象:开头能放,随后卡死,或成品明显比原文件短。 原因:损坏文件首个 mdat 是无效的,或尾部数据真的丢了。 解法:试-m沿用参考文件相同偏移,或拿同设备短片段做参考。

它凭什么能行:MP4 修复原理一句话讲透

把一个 MP4 文件想象成快递包裹:里面装的是画面和声音数据(叫 mdat),外面贴的「面单」是 moov 原子,记录着每一帧数据存在哪个位置。截断损坏的 MP4 文件里,包裹内容还在,面单却没了——播放器找不到入口,只好报文件损坏。

Untrunc 不拆包裹。它拿完好包裹的面单当模板,在损坏文件里扫描内容实际从哪开始,再按那个位置重写一份新的面单。修复逻辑 mp4.cpp 里 4 种 mdat 起点查找策略,对应的就是取第一个、与参考同偏移、按签名搜索、取最后一个这四种情形。

原子层面的解析交给 atom.cpp,同目录二十个 codec_*.cpp 分别认识 H.264、HEVC、AAC 等格式。参考视频务必尽量来自同一台设备,说白了就是「包装规格」相同,模板才能直接套用。

项目亮点 & 社区动态:协议、平台与贡献入口

  • 协议:GPL v2,全文见 COPYING,商用、修改、再分发都不受限
  • 跨平台:Linux、macOS 原生可编译;有 Docker 的平台(含 Windows)都能直接跑
  • 镜像精简:Dockerfile 采用两阶段构建,最终镜像里只有可执行文件
  • 附加工具:moovfirst/ 子目录可把 moov 原子挪到文件开头,利于边下边播
  • 社区:项目已存在十余年,更新少但稳定;作者明确欢迎把修不好的损坏样本发去做分析,这也是门槛最低的贡献入口

遇到坏视频时,先备份原件,再跑一次 Untrunc 的 MP4 视频修复,三分钟的事。修成了把结果交给家人,修不成把样本反馈给社区,也算为下一个人铺了路——数据还在,值得抢救一次。

【免费下载链接】untruncRestore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video.项目地址: https://gitcode.com/gh_mirrors/unt/untrunc

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 21:28:53

std::function实现非面向对象多态的原理与工程实践

1. 这不是“继承”出来的多态,而是用函数对象玩转接口抽象你翻过《深入浅出C》第185到187页,看到标题写着“std::function 非OO的多态实现”,第一反应可能是:多态不就是虚函数、基类指针、动态绑定那一套吗?怎么还能“…

作者头像 李华
网站建设 2026/8/22 21:27:38

Anthropic拟2万亿美元估值上市,ARR增速放缓引发全球科技股连锁反应

Anthropic冲击2万亿估值,上市脚步渐近据金融时报报道,AI明星公司Anthropic最快10月上市,目标估值最高达2万亿美元。公司早在6月就已秘密递交美国IPO申请,不过具体时间与定价仍未最终确定。若成功上市,Anthropic将打破S…

作者头像 李华
网站建设 2026/8/22 21:27:31

王道计算机组成原理习题高效实践指南:从刷题到原理深度掌握

在计算机组成原理的学习过程中,无论是应对考研还是夯实专业基础,高质量的习题训练都是不可或缺的一环。王道论坛出版的计算机组成原理辅导书,因其内容系统、题目经典、解析详尽,成为了众多学习者的首选。然而,面对海量…

作者头像 李华
网站建设 2026/8/22 21:24:40

数学建模实战:神经外科手术导航中的坐标配准与路径规划

1. 项目概述:从赛题到实战的完整穿越刚拿到“认证杯”数学中国数学建模网络挑战赛B题“神经外科手术的定位与导航”时,很多队伍的第一反应可能是懵的。这题目听起来太“硬核”了,直接把我们从一个抽象的数学世界,拽进了充满精密仪…

作者头像 李华
网站建设 2026/8/22 21:22:02

北航面向对象先导课:从过程到对象的思维跃迁与实战指南

1. 项目概述:一次从“过程”到“对象”的思维跃迁 又到了一年一度给学弟学妹们做经验分享的时候了。最近后台收到不少私信,都在问北航那门传说中的“面向对象先导课”到底该怎么学,是不是真的像传说中那么“劝退”。正好,我刚带完…

作者头像 李华