untrunc 完整教程:3 步修复截断、无法播放的 MP4/MOV 视频

📅 2026/8/24 17:41:29
untrunc 完整教程:3 步修复截断、无法播放的 MP4/MOV 视频
untrunc 完整教程3 步修复截断、无法播放的 MP4/MOV 视频【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc相机突然断电、拷贝到一半中断、卡被拔出——视频文件突然打不开了。untrunc 是一款开源的命令行修复工具它用一段同设备的健康视频做模板重建损坏 MP4/MOV 视频的索引信息输出一个新的、能播放的文件。全程不重新编码画面数据原样保留。先看清 untrunc 能帮你做什么只修索引不动画面视频像素一帧不改画质零损失它重建的是文件的目录moov 原子。门槛很低你只需要两样东西——一个能正常播放的参考视频和一个损坏的视频。格式覆盖主流场景mp4、mov、m4v、3gp 容器H.264avc1与 H.265hvc1编码GoPro 与索尼 XAVC 机型有专门支持2GB 以上大文件也能处理。速度快、吃内存少这个项目是 ponchio/untrunc 的改进分支官方说明处理速度提升 10 倍以上并修复了大文件的内存占用问题。有图形界面可选不想用命令行可以编译 GUI 版本Windows 自动构建包自带。动手前准备一条命令装好 untrunc修复本身只需要 10 秒所以安装这一步从简。LinuxDebian/Ubuntusudo apt-get install libavformat-dev libavcodec-dev libavutil-dev git clone https://gitcode.com/gh_mirrors/un/untrunc cd untrunc make sudo cp untrunc /usr/local/bin不想折腾依赖用 Docker仓库自带 Dockerfile构建完直接跑docker build -t untrunc . docker run --rm -v ~/Videos/:/mnt untrunc /mnt/ok.mp4 /mnt/broken.mp4其他平台Windows 可直接下载项目提供的自动构建版本免去编译macOS 用户brew install ffmpeg yasm后再带CPPFLAGS/LDFLAGS执行make即可。如果系统 FFmpeg 版本对不上make FF_VER3.3.9会让 make 自动下载并静态编译一个匹配的 FFmpeg项目实测与 3.3.9 最稳无需你手动装。最关键的一步准备找一个健康参考视频。它最好来自同一台相机/手机分辨率、帧率、编码格式与坏视频一致。参考视频越接近修复把握越大找不到同设备的成功率会明显下降。跟做一遍3 步完成修复第 1 步执行修复命令。第一个参数是健康视频第二个是坏视频untrunc /path/to/working-video.mp4 /path/to/broken-video.mp4第 2 步等待并观察输出。它会扫完整个文件并打印进度信息最终在坏文件旁边生成broken-video_fixed.mp4后缀名会跟随原文件格式。第 3 步播放验证。用播放器打开_fixed文件确认画面、声音和时长正常。中途如有异常加-v参数重跑拿到详细日志再判断untrunc -v working-video.mp4 broken-video.mp4就这么多。整个过程不会修改你的原文件。它是怎么修好的把 MP4 文件想成一本书MP4 文件由一个个原子atom拼装而成其中moov是目录页记录每帧视频、每段音频在文件里的位置和大小mdat是正文真正的图像与声音数据。断电或传输中断最常见的伤法是正文还在目录页丢失或写了一半。播放器打不开文件往往不是画面没了而是找不到画面。untrunc 的做法分三步读健康视频学习这台设备的编码习惯——视频块和音频块如何交替排布、每个编码器的帧起始特征H.264 的 NAL 起始码、H.265 的类似结构。扫坏文件在 mdat 数据区逐字节游走用学到的特征去辨认这里是一帧视频、那里是一帧音频并推断每段数据的归属与大小。重写目录根据扫描结果生成一份新的 moov 索引连同原始数据一起写出为新文件。核心逻辑集中在src/mp4.cpp主流程与帧匹配和src/atom.cpp原子解析H.264/H.265 的帧识别分别在src/avc1/和src/hvc1/目录下想深入看可以翻翻。3 个真实场景怎么修场景一录像时相机断电/没电问题视频只录了一半文件尾部缺失播放器报错。做法找同一台相机、同设置下录制的其他视频做参考直接跑untrunc 好视频.mp4 坏视频.mp4日志里若有unknown sequence提示改用untrunc -s 好视频.mp4 坏视频.mp4。结果断电点之前的画面基本都能救回文件末尾残缺部分无法凭空补全。场景二拷贝/传输中断问题视频在拷贝到一半时被拔出 U 盘或网络断开大小正常但无法解码。做法同上两步若报找不到 mdat加-sm参数强制在文件中搜索媒体数据区。结果恢复中断前的完整片段可直接剪辑使用。场景三索尼相机的录制中文件问题索尼机型录制未正常结束时生成的 RSV 中间文件无法直接播放。做法使用专门参数untrunc -rsv-ben 参考视频.mp4 坏文件.rsv走 RSV 恢复流程注意该模式不能与-s、-k等参数混用。结果按索尼 XAVC 的结构约定重建文件恢复录制中断前的内容。修复失败怎么排查现象命令跑完但文件仍打不开原因参考视频与坏视频的设备/编码差异太大重建的索引不准。 解决换一个同设备、同设置的参考视频重试用-v看日志确认两条轨道是否都被识别。现象日志反复提示unknown sequence或卡住原因文件里有一段健康视频中不存在的结构程序不知道它该占多大。 解决加-s允许跳过未知序列并用-st 字节数指定步长继续若确认这段数据有意义可改用-k保留它。现象报告找不到 mdat原因文件头部结构损坏常规位置找不到媒体数据原子。 解决加-sm全盘搜索媒体数据区。现象修好了但音画时长对不上原因音频轨道和视频轨道被恢复的时长不一致。 解决加-sv让视频拉伸/压缩到与音频时长一致该功能为 beta先备份原文件再试。现象想指定输出位置或跳过已有结果原因默认输出在坏文件同目录且文件名固定。 解决-dst 目录或文件指定目的地-skip跳过已存在的输出批量处理时配合-n非交互省去中途确认。常见疑问Q修复后画质会下降吗A不会。untrunc 只重写索引moov视频像素数据原封不动地搬进新文件没有任何重新编码。Q参考视频不是同一台设备也能修吗A能试但成功率明显下降。设备不同意味着编码参数、轨道交织方式都不同模板匹配就会失准。优先找同设备同设置的。Q原文件会被改动或删掉吗A不会。整个过程只读原文件结果写入新的_fixed文件原件保持原样。Q大于 2GB 的文件支持吗A支持。这个分支专门做了 2GB 文件支持并降低了大文件的内存占用。Q一定需要命令行吗A不需要。项目提供 GUI 版本make untrunc-gui需先装 libuiWindows 自动构建包也包含 GUI选两个文件点一下即可。进阶玩法参数速查平时用不到遇到硬骨头时再回来查参数用途-a只做分析不修复适合先诊断-i/-it/-ia输出参考视频的媒体信息 / 轨道 / 原子结构-f找出文件中所有原子并校验长度-lsm列出所有 mdat、moov 原子位置-u mdat moov把分离的 mdat 与 moov 片段合并成一个文件-sh把文件裁剪到指定大小MB-ms生成流式播放版本索引前置-rsv-ben索尼录制中间文件恢复-q/-v/-vv日志级别只报错误 / 详细 / 更详细-noctts/-dcc/-dyn不恢复 ctts / 跳过块越界检查 / 使用动态统计编译时若需要固定 FFmpeg 版本可执行make untrunc-33、make untrunc-341、make untrunc-41、make untrunc-60产物以版本号区分互不干扰。另外一个小技巧untrunc 好视频 好视频会对同一个健康文件做交叉校验报出其中可疑的数值。写在最后把坏文件丢给 untrunc 之前先问自己一句我手里有没有一台同设备的健康视频有就按装好 → 一条命令 → 播放验证走完多数截断损坏的 MP4/MOV 都能重新开口说话没有也别硬试——先想想能不能用同设备补录一段 10 秒的测试视频再回来跑一遍。最后留一句不紧急但实在的建议重要的视频录完就双份存放本地 云端各一份。修复工具负责万一备份负责让万一永远别发生。现在就下载一台设备上的参考视频把 untrunc 装进你的工具箱里。untrunc, MP4修复, MOV修复, 视频修复工具, 损坏视频恢复, 截断文件修复, MP4索引重建, untrunc教程, 视频急救工具, 免费视频修复, mdat, moov, 视频文件恢复【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考