先把视频的损坏分成三类,处理方式完全不同。判断只需要两个动作:用播放器打开看提示,再看文件大小对不对。
大小正常但播不了,多半是索引问题,能修;大小明显偏小,是数据没写全,得重新捞。

MP4 的结构分两半:moov 存索引,mdat 存画面数据。正常录制结束时,索引会写在文件头或者文件尾。如果录制被中断(断电、卡满、拔卡),索引没写完,播放器就不知道该按什么顺序读数据。
表现是文件大小完整,双击没反应,或者播一秒就停。这种最好修:把索引重建出来就行,数据一个字节都不用动。
工具上,ffmpeg 的 remux 能解决大部分:把文件重新封装一遍,索引会自动重建,画质无损,几分钟搞定。图形界面的话,各类视频修复工具的第一档功能就是干这个。
表现是能播,播到某个位置卡住不动,或者画面变绿、花屏。原因是文件在磁盘上不连续,恢复的时候只找到了前几段。
这种修不了,只能补。补的办法是重新扫描原盘,换一种碎片追踪策略再找一遍;如果原文件还在,用恢复软件按文件类型扫,很多时候能找到后面的片段。

表现是提示「格式不支持」或者只有声音没画面。文件本身可能完全正常,是编码的问题——比如 H.265 的视频在老播放器上放不出来,或者 4K 素材在普通机器上解码不了。
换一个播放器试。VLC 和 PotPlayer 自带解码器,能放大部分格式。还是不行就看一眼文件头,确认扩展名和真实格式对不对。
| 类型 | 表现 | 能不能修 | 怎么做 |
|---|---|---|---|
| 索引丢失 | 大小正常,播一秒就停 | 能 | remux 重建索引 |
| 数据块缺失 | 播到某处卡住或花屏 | 修不了 | 重扫原盘补片段 |
| 编码不支持 | 提示格式不支持 | 不用修 | 换播放器或转码 |
| 文件大小为 0 | 双击毫无反应 | 不能 | 扫原盘找残片 |
相机和手机录 4K 时,如果中途断电或者卡写满,文件往往只有 mdat 没有 moov,而且末尾一截是废数据。这类文件用普通 remux 修不好,得用专门针对「未完成录制」的工具,它会参考同机型录的完好视频,把索引结构套上去。
关键是有样本。手里有同一个相机、同样分辨率录的正常视频,修好的概率会高很多。所以别急着把卡格式化,先把里面完好的视频拷出来当样本。

原文件已经被删了,或者从回收站清空过,那修复这条路就走不通,直接扫原盘。视频的碎片多,扫描时间长,但只要能找到连续的数据段,拼出来的视频通常能完整播放。
超级兔子数据恢复在视频这类大文件上做的是「按文件签名加长度推断」的组合:先按 MP4、MOV、AVI 的文件头定位起点,再往后找结束标记,找到的片段会先做一次可否播放的校验,播不了的标灰。有用户是行车记录仪的内存卡被格式化,扫出两百多个片段,其中一百八十多个能直接播放。

重建索引不会。remux 只是换个封装,画面数据原样搬过去。只有转码才会掉画质,那个是另一回事。
不能。0 字节意味着数据从来没写进去,或者已经彻底丢失。这种情况只能重新扫原盘,看有没有残片。
先试免费的。ffmpeg 是命令行,学习成本高但不花钱;很多图形工具的免费版能修复小文件,确认思路对了再考虑付费。重要的素材才值得花钱。