untrunc 免费修复 MP4 截断视频完整指南【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc手机在录像时突然断电文件夹里那条视频从此打不开。untrunc 是一个免费开源的命令行工具用于修复被截断的 mp4/mov/m4v/3gp 视频文件它借助同一设备的正常「参考视频」为损坏文件重建索引结构输出一个可播放的 _fixed 文件。适合任何需要从手机、相机或监控设备里抢救坏掉视频的用户。先判断能不能用untrunc 能修什么、修不了什么untrunc 只处理一种特定损坏文件主体数据基本还在但索引结构丢失或损坏。典型场景包括录制中断电、存储卡写满或设备死机文件被截断传输中途断开文件尾部缺失写入失败导致 moov 结构不完整修不了的情况也要说清楚存储介质物理损坏、数据本身已丢失——untrunc 重建的是目录无法补造缺失的数据文件被截断到只剩极小一部分能救回的时长也会很有限非 MP4 家族格式avi、mkv 等不在支持范围还有一个硬性前提必须有一个完好的参考视频。没有参考视频修复无从谈起。如果你的文件属于「数据还在、结构坏了」这一类并且手上有同设备的参考视频就可以往下走。一条命令完成安装 untrunc 并执行修复Linux 下的安装步骤sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev git clone https://gitcode.com/gh_mirrors/un/untrunc cd untrunc makemacOS 用 Homebrew 装好 ffmpeg 与 yasm 后把 PKG_CONFIG_PATH 指向 Homebrew 的 pkgconfig 目录再执行 make 即可。Windows 可以直接使用预编译版本。修复命令只有两个位置参数第一个是完好的参考视频第二个是损坏文件。./untrunc /path/to/working-video.mp4 /path/to/broken-video.mp4跑完后与损坏文件同目录会生成broken-video_fixed.mp4扩展名跟随参考文件。修复过程只读取原文件不会改动它可以放心多试几次。原理速览untrunc 如何重建索引MP4 家族的文件由一连串「原子」box 结构组成。moov 原子是目录记录每一帧数据的位置与长度mdat 原子存放真正的音视频数据。录像中断时文件往往写了一堆 mdat 却没写完 moov播放器找不到目录数据明明都在硬盘上却只能报格式错误。untrunc 的做法是参考修复先解析参考视频得到该设备、该参数下数据块chunk的长度规律再扫描损坏文件的 mdat按规律逐块识别出仍然有效的数据最后按参考文件的结构重建 moov 目录写出新文件。数据块的模式匹配算法在 src/mutual_pattern.cpp整体文件处理流程在 src/mp4.cppH.264 码流解析在 src/avc1/H.265 另有 hvc1 目录对应实现。一个类比图书馆的书视频数据都还在架上只是索书卡被烧了。untrunc 借来姊妹馆参考视频的目录按它「书架编号规律」数据块模式重新对号再补写一份新目录。姊妹馆的规则对不上对号就会失败——「参考视频必须匹配」的要求就是这么来的。关键成功因素选对参考视频修复成功率很大程度上取决于参考视频匹配得好不好。优先级如下同设备、同参数设置分辨率、帧率、编码成功率最高官方说明也直白——最好来自同一台相机否则机会渺茫同编码、同容器、不同设备但参数接近值得尝试仅编码相同成功率最低只能作为最后手段用 ffprobe 对比两个视频的宽高、帧率、编码器关键数字一致即可用。参考视频内容无关紧要一段 10 秒的测试视频足够但必须能完整播放。建议为每台常用设备录一段短测试片按设备分目录存好作为长期参考。修完怎么验证确认可播放且无解码错误修复完成后不要只看「能不能播」用两条命令确认ffprobe -v error -show_format -show_streams broken-video_fixed.mp4 ffmpeg -v error -i broken-video_fixed.mp4 -f null -第一条检查容器结构与音视频流参数时长、分辨率、帧率正常说明结构重建成功第二条完整解码全文件无错误行输出意味着没有致命解码错误。两点提醒修复后文件时长可能略短于预期因为截断点之后的内容本来就不存在结尾黑屏或花屏属于正常现象那是数据抢救的边界。如果修复后音画不同步先回到参考视频匹配度上找原因。常见报错与排查从 usage 报错到不同步现象命令只打印 usage没有开始修复。原因只传了一个文件untrunc 要求「参考 损坏」两个文件按顺序传入。处理补齐两个参数。现象没有 _fixed 输出或输出文件无法播放。原因参考视频与损坏文件的数据块规律对不上。处理换更匹配的参考视频重跑给命令加 -v 输出详细日志定位停在哪一步。现象进程卡在识别未知数据上。原因损坏文件里存在无法按参考规律解释的字节序列。处理加 -s 让它按固定步长跳过未知序列步长用 -st 指定moov 结构完全缺失时可试 -sm 强制查找 mdat。现象修复后音画不同步。原因两个文件的时长参数没有完全一致。处理试 -sv把视频拉伸到与音频等长属 beta 功能或换更近的参考视频。现象日志刷屏、交互提示打断流程。原因默认日志级别较详细。处理-q 只保留错误输出-n 关闭交互提示两者都适合自动化场景。进阶与自动化批量修复和定点分析批量处理时几个参数最实用-skip 跳过已有 _fixed 输出的文件重复跑不浪费算力-dst 指定统一输出目录-dw 只分析不写文件可以先预检一批文件哪些可修。把这些组合起来就是一个批处理流程遍历损坏视频目录按设备名匹配参考视频逐条调用 untrunc 并加 -skip 与 -q最后把 _fixed 文件归档到指定目录。逻辑就这四步不需要复杂脚本。另外 untrunc 有一组只「看」不修的参数-a 分析参考文件结构-it 列出视频轨道-f 遍历所有原子并检查长度-m 指定字节偏移做定点分析。修复失败时它们就是定位问题的工具。不想敲命令的话可以编译 GUI 版执行 make untrunc-gui需要 libui 依赖用文件对话框完成同样的操作。结语untrunc 只能完成「重写目录」这一步数据还在就能救回来数据没了任何工具都补不出来。最可靠的准备永远是把参考视频提前准备好。下一步打开你的拍摄设备按常用参数录一段 10 秒测试视频存进对应设备的目录里。【免费下载链接】untruncRestore a truncated mp4/mov. Improved version of ponchio/untrunc项目地址: https://gitcode.com/gh_mirrors/un/untrunc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考