最近有个朋友在录屏一个视频会议的时候,电脑突然死机了。等电脑重启后,发现录制的视频文件损坏了。他找了很多软件,都没有找到一个能够修复损坏视频的工具。于是,他找到了我,希望我能帮他修复这个视频文件。他说请我吃饭,顺便带一条龙来服务。我这个人呢特别重视友情,想也没想就答应了。
视频文件损坏的原因
视频文件损坏的原因有很多,比如:
- 电脑死机、断电、关机等突然停止录制视频的情况。
- 存储介质损坏,比如硬盘坏道、U盘损坏等。
- 视频文件本身损坏,比如下载的视频文件损坏、传输过程中损坏等。
本质上,应该就是视频封装出错或者视频流出错。视频封装出错的话,可以尝试重新封装。视频流出错的话,可以尝试重新编码。
视频修复工具
我在网上找了一些视频修复工具,切实可行的有很多。比如:
Kernel Video Repair
Video Repair Tool to Repair Corrupt Single/Multiple Video Files including MP4, MOV, MKV, AVI
这个工具可以修复各种损坏的视频文件,包括手机、相机、摄像机、存储卡、监控摄像头、航拍器、行车记录仪等设备录制的视频文件。
这个工具操作很简单,上传损坏的视频文件,再上传一个健康的视频文件,点击修复按钮。它会分析视频文件,检测损坏的部分,然后用健康的视频文件修复损坏的部分。修复完成后,免费版只能下载修复后的视频前30秒。付费后可以下载完整的修复后的视频。
支持批量修复,可以一次修复多个视频文件。只需上传一个健康的视频文件,它就可以用这个健康的视频文件修复多个损坏的视频文件。
付费版的价格是:29美元/年,79美元/年(含其它套件功能)。
Stellar Repair for Video
Video Repair Tool to Repair Corrupt MP4, MOV and other Video Files
Stellar Repair for Video 是一款专业的视频修复工具,它可以修复一些比较严重的损坏。
Stellar 操作起来也比较简单,操作逻辑和 Kernel Video Repair 类似。
上传视频文件,点击修复按钮。这个时候它会分析视频文件,检测损坏的部分。
然后在高级修复选项中,会让你上传一个健康的视频文件,用来修复损坏的视频文件。
修复完成后,可以预览修复后的视频文件。如果满意,可以保存修复后的视频文件。但是要付费,49刀/年。
免费的视频修复方法
从上面两个工具的操作逻辑来看,视频修复的本质就是用健康的视频文件修复损坏的视频文件。这个操作逻辑很简单,只要有一个健康的视频文件,就可以用它来修复损坏的视频文件。
这个健康的视频,根据原视频的设定重新制作一段sample就可以。
上面两个工具都是收费的,如果不想花钱,可以使用 FFmpeg 来修复损坏的视频文件。
FFmpeg 是一个非常强大的开源多媒体处理库,它可以处理音频、视频和其他类型的多媒体文件。在修复破损视频的过程中,FFmpeg 主要通过以下步骤来工作:
-
解析:FFmpeg 首先会解析视频文件,尝试理解其内部结构,包括视频流、音频流、元数据等。
-
错误检测:在解析过程中,FFmpeg 会检测到任何可能的错误或损坏。例如,如果某个帧的数据丢失或损坏,FFmpeg 会标记它。
-
错误修复:一旦检测到错误,FFmpeg 会尝试修复它。这可能包括重新同步音频和视频流、丢弃损坏的帧、或者尝试从其他帧中恢复丢失的数据。
-
重编码:修复错误后,FFmpeg 会重新编码视频,生成一个新的、没有错误的版本。
下面推荐一个利用 FFmpeg 修复损坏视频文件的工具。
recover_mp4.exe
recover_mp4.exe 是一个命令行工具,可以用来修复损坏的 MP4 文件。它是基于 FFmpeg 的,所以需要先安装 FFmpeg(安装:略)。
下载链接:
recover_mp4 Old Versions Downloads - VideoHelp
下载后解压,就两个可执行文件和两个说明文件。
我们把损坏的视频文件和一个健康的视频文件放到同一个目录下,然后打开命令行工具,切换到这个目录下。
第1步,分析好的视频文件。根据好的视频的比特率,分辨率等信息,生成头部信息。
|
|
步骤1完成分析后,会成生 video.hdr 和 audio.hdr 两个文件。
并提示下一步操作。
第 2 步:从损坏的文件中恢复数据流,例如
|
|
步骤2完成后,会生成 recovered.h264 和 recovered.aac 两个文件。
h264本来是编码格式,当作封装格式时表示的是H.264裸流格式,所谓裸流就是不含封装信息的流,也就是没穿衣服的流。aac等封装格式类似。
第 3 步:通过FFmpeg 从数据流(recovered.h264 和 recovered.aac)中重新创建 MP4/MOV 文件。
|
|
其中 -r 30
表示帧率,-i recovered.h264
和 -i recovered.aac
表示输入文件,-bsf:a aac_adtstoasc
的作用是将 ADTS 封装的 AAC 音频转换为更适合 MPEG-4 或其他容器的格式。-c:v copy
和 -c:a copy
表示视频和音频不重新编码,直接复制。
执行完成后,会生成 recovered.mp4 文件。视频文件修复完成。