ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何用 Untrunc 免费快速修复截断的 MP4 视频:完整新手指南

如何用 Untrunc 免费快速修复截断的 MP4 视频:完整新手指南 如何用 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/untruncUntrunc 是一个免费开源的命令行工具用于 MP4 视频修复——基于一个完好样本恢复被截断的 MP4/M4V/MOV/3GP 视频。当视频的索引结构丢失、但数据流仍在时它能重建出可播放的文件。适合会用命令行、且能拿到同设备样本的用户。先确认你的文件是否适合做 MP4 视频修复 运行修复前先做三个判断可以避免无效操作。适合的场景文件在写入过程中被中断断电、存储卡拔出、传输中断、录制软件崩溃文件是 MP4 家族的容器格式mp4、m4v、mov、3gpm4a 音频同理文件头或索引结构损坏但数据主体大部分还在你能提供一个来自同一相机或同一 App的完好视频作为样本不适合的场景文件完全为空或数据流本身大面积损坏——Untrunc 重建的是容器结构不恢复丢失的媒体数据找不到同设备、同编码配置的样本视频。README 的说明很直接没有同款样本时修复机会很小文件来源不明无法确认它与样本的编码参数接近运行前必须确认原始损坏文件已备份后续所有操作都在副本上进行样本视频本身可正常播放你有一个可以执行命令行的环境Linux、macOS或 Windows 下的 Docker/WSL快速运行 Untrunc 的最小上手路径Docker 与源码编译两种安装方式任选其一。Docker 方式不需要配置任何依赖推荐优先尝试。方式一Docker依赖最少git clone --recurse-submodules https://gitcode.com/gh_mirrors/unt/untrunc cd untrunc docker build -t untrunc .如果构建时出现 Temporary failure resolving 的网络错误可在构建命令后追加--networkhost。方式二从源码编译按README.md中的 Installing from git 章节操作核心步骤是三步git clone --recurse-submodules克隆仓库--recurse-submodules不可省略libav目录是编译依赖进入libav目录执行./configure make构建 Libav回到仓库根目录用g一次性编译main.cpp mp4.cpp atom.cpp track.cpp file.cpp log.cpp codec.cpp codec_*.cpp codecstats.cpp等源文件链接libavformat、libavcodec、libavresample、libavutil不同系统可能遇到链接报错如BZ2_bzDecompressInit、lzma_stream_decoder未定义README.md列出了对应的额外链接参数-lbz2、-llzma、-lX11、-lvdpau、-ldl按报错逐条添加即可。macOS 还需追加-framework参数见 README。如何正确使用修复命令完整流程、参数与结果判断 拿到可执行文件后修复的主流程只有一条命令参数顺序不能颠倒先写完好样本再写损坏文件。./untrunc /path/to/working-video.mp4 /path/to/broken-video.mp4在 Docker 中运行时把视频目录挂载进容器的/filesdocker run -v /path/to/videos/:/files untrunc /files/working_video /files/broken_video结果如何判断成功当前目录生成损坏文件名_fixed.mp4例如broken-video_fixed.mp4日志中无 Failed recovering the file 错误。用播放器实际播放确认画面、声音、时长失败日志出现 Failed recovering the file。程序默认先按 FIRST 策略定位mdat起点失败后会自动依次尝试 SAME、SEARCH、LAST 三种策略全部失败才报错常用参数完整用法见./untrunc无参数时的输出参数作用何时用-o 文件名指定输出文件名不想用默认_fixed.mp4后缀时-i打印样本视频的编码器和 MOV 结构信息修复前先确认样本能被正确解析-a测试样本视频排查样本问题-s用样本模拟修复自身验证工具链是否正常不动真实文件-v/-w详细日志 / 调试日志修复失败后定位问题-q/-e静默 / 只报错误批量处理或只要结论时-d尝试修正音视频漂移修复后出现音画不同步-m/-M分别用相同偏移或搜索包起点定位 mdat默认策略失败后手动指定-b 偏移量手动指定 mdat 起始字节已知数据起点时-B不跳过零字节PCM 音频异常时尝试-S 十六进制串在样本文件中搜索字节串并输出偏移辅助定位数据位置注意只传一个样本文件时Untrunc 只做分析配合-i、-a、-t等参数不会执行修复。修复前的三项检查清单输入文件、参考样本、备份验证✅ 把这三项做完再运行主命令能覆盖大部分本可避免的失败。输入文件要求确认损坏文件确实是 MP4 家族容器且文件大于 0 字节先运行./untrunc -i working-video.mp4确认样本能正常输出编码器与结构信息连-i都跑不通的样本不要用用-s对样本做一次模拟修复确认工具链本身工作正常参考样本选择优先级排序同一设备 同一 App 同类配置 其他来源。设备不一致时成功率明显下降分辨率、帧率、码率尽量与损坏文件一致样本不需要长几秒到几十秒即可准备 2 个以上不同时间点的样本备用备份与验证修复输出是新文件不覆盖输入替换或删除原始文件前必须先用播放器完整验证输出对重要素材验证时重点检查开头、结尾和随机中间位置失败排查按现象定位问题 每个现象对应一个直接可执行的动作按日志输出对号入座。现象可执行动作日志出现 Failed recovering the file重跑并追加-v -w保留完整日志再依次尝试-m、-M改变 mdat 定位策略报错无法打开文件检查路径拼写、文件权限确认两个文件都存在且可读修复成功但播放跳帧、花屏用-i分别查看样本和损坏文件的编码信息换成编码参数更接近的样本重跑修复后音画不同步加-d参数重跑让程序尝试修正漂移输出没有音轨或 PCM 音频异常加-B参数不跳过零字节重跑输出只有开头一小段mdat 起点定位偏差尝试-M搜索包起点或用-S定位后配合-b手动指定Docker 构建时域名解析失败构建时追加--networkhost仍不行则确认宿主机网络原理速览一个完好视频为什么能借给损坏视频判断能不能用只需要理解这一点MP4 文件由一个个原子atom拼接而成。ftyp声明文件格式moov索引与元数据——每个样本的时长、位置、编码参数都在这里mdat真正的音视频数据流视频被截断时最常见的损伤是moov丢失或损坏索引没了而mdat里的数据往往完好。播放器没有索引就无法播放所以文件看起来坏了。Untrunc 做的事情是解析完好样本的moov结构把它映射到损坏文件的mdat数据流上重新生成一份索引写出新文件。它不改动视频内容本身——这正是样本必须来自同设备、同编码配置的原因借来的是结构模板模板和内容对不上修复就失败。项目入口文档、源码与辅助工具只列你下一步会用得到的位置均在仓库内无外部依赖。README.md安装git/Docker/zip/CentOS/Arch与使用说明编译报错对照表DockerfileDocker 镜像的构建定义含依赖清单moovfirst/README.txt辅助工具 moovfirst 的说明——把moov原子移到文件开头让视频适合流式播放它无第三方依赖g -o moovfirst main.cpp file.cpp atom.cpp log.cpp即可编译COPYINGGPL 许可全文核心源码mp4.cpp容器解析与修复流程、atom.cpp原子解析、track.cpp轨道处理、codec_*.cpp各编解码器处理libav/Libav 依赖git 子模块源码编译时由它提供头文件与静态库下一步行动与风险提示建议的执行顺序备份原始损坏文件所有操作在副本上进行用./untrunc -i 样本.mp4验证样本可解析必要时-s模拟自检对副本执行./untrunc 样本.mp4 损坏副本.mp4完整播放验证输出文件确认后再处理原始文件失败时保留-v -w日志对照上一节表格逐一尝试适用边界修复依赖同款样本没有同设备样本时成功率很低Untrunc 重建容器结构mdat数据流本身损坏的部分无法恢复它不承诺对任何文件有效输出文件务必验证后再决定取舍原始文件在验证完成前不要删除备份是你唯一的安全底线【免费下载链接】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),仅供参考
返回列表