# fix_video **Repository Path**: bysch/fix_video ## Basic Information - **Project Name**: fix_video - **Description**: 大疆 Mini 5 Pro 损坏视频修复 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大疆损坏视频修复工具 `fix_dji_video.py` 一键修复因 **录制中途关机/断电** 导致的损坏 MP4:文件大小正常、但无法播放、 用 ffmpeg/播放器打开报错 **"moov atom not found"**。 原理:这类文件的 `mdat`(视频数据)其实完整,只是相机没来得及写入 `moov`(索引)。 本工具用一个 **同机型、同参数的正常文件** 作模板,扫描损坏文件重建索引,生成可播放的新文件。 > 与付费软件(如 Wondershare Repairit)做的是同一件事,但 **完全免费**。 --- ## 适用范围 - 大疆 **H.265 (hvc1) + djmd 元数据** 双轨结构(如 **Mini 5 Pro** 等)。 - 症状:大小正常、打不开、报 `moov atom not found`。 **不适用**:画面数据本身被覆盖/丢失(`mdat` 损坏)、卡损坏导致的乱码等。 --- ## 准备 1. **Python 3**(标准库即可,无需安装任何第三方包)。 2. **ffmpeg/ffprobe**(可选,仅用于自动验证结果;没有也能修,跳过验证而已)。 3. 一个 **正常的参考文件**:必须 **同一台设备、同分辨率、同帧率、同编码档位** (最好是同一次设置下、前后拍的另一段)。参考文件越"同款"越可靠。 --- ## 使用 ```bash # 最简:修复 broken.MP4,结果自动写到 broken_FIXED.MP4 python fix_dji_video.py 损坏文件.MP4 正常参考文件.MP4 # 指定输出文件名 python fix_dji_video.py 损坏文件.MP4 正常参考文件.MP4 -o 修复结果.MP4 # 只做"参考文件自验证",不实际修复(先确认参考文件能用) python fix_dji_video.py 损坏文件.MP4 正常参考文件.MP4 --validate-only # 跳过 ffmpeg 验证(没装 ffmpeg 或想快点) python fix_dji_video.py 损坏文件.MP4 正常参考文件.MP4 --no-verify # 只保留视频轨、丢弃大疆元数据轨(文件更精简,一般不需要) python fix_dji_video.py 损坏文件.MP4 正常参考文件.MP4 --drop-djmd ``` --- ## 工具会做什么(6 步) 1. **解析参考文件** —— 读出视频轨编码配置、帧率、时基、真实索引。 2. **自验证(安全闸)** —— 让扫描器在 **参考文件** 上重建索引,必须与参考文件 真实索引 **逐字节一致** 才继续。不通过就中止,**绝不悄悄产出坏文件**。 3. **扫描损坏文件** —— 逐帧定位每个样本的偏移/大小/关键帧;自动识别真实数据 结尾(关机时未写入的预分配零尾会被丢弃)。 4. **组装新 moov** —— 用参考文件作模板(照搬编码配置/时间规则),填入新样本表。 5. **写出修复文件** —— 头部 + 压实后的 mdat + 新 moov;原损坏文件 **不会被改动**。 6. **ffmpeg 验证(可选)** —— 全片解码计错 + 输出摘要。 --- ## 怎么确认修好了 - 第 6 步出现 **"✅ 全部视频帧零错误解码通过"**。 - 用播放器(VLC/PotPlayer 等)能正常打开、拖动进度条。 - 手动抽帧检查画面: ```bash ffmpeg -ss 5 -i 修复结果.MP4 -frames:v 1 test.jpg ``` --- ## 常见情况 - **恢复时长比预期短**:正常。关机时只录到那里,后面是相机预分配但未写入的空白, 数据本就不存在,无法恢复。工具恢复的是 **实际录到的全部内容**。 - **自验证失败**:参考文件与损坏文件机型/参数不一致,或该机型布局不被支持。 换一个"更同款"的参考文件再试。 - **无音频**:大疆该档位本就不录音频(参考文件也没有音轨),属正常。 --- ## 文件说明 | 文件 | 作用 | |------|------| | **`fix_dji_video.py`** | **主工具,单文件、开箱即用**(推荐只用这个) | | `大疆视频损坏修复全过程.md` | 完整原理与诊断/修复全过程文档 | | `lib_mp4.py` / `validate.py` / `build_moov.py` / `atoms.py` / `probe*.py` / `moov.py` | 本案分步研究脚本(已并入主工具,留作参考) | > 主工具 `fix_dji_video.py` 已自包含全部逻辑,**单独拷贝它一个文件即可使用**。