在生产环境中,视频通常是一种重要的文件证据,但是,如果因为各种原因,导致视频在录制到一半过程中失败,
比如:监控到一半,录制设备掉电.虽然,掉电后的视频肯定找不到,但是,有时,长时间工作生产的视频通常是隔一
段时间保存一个文件比如:24小时,每隔一个小时保存一个文件,这时候,如果在最后59分钟掉电,我们如何查看0-59分钟的视频数据呢,
下面方案参考:http://www.spirithy.com/2016/11/26/recover_mp4/
找到了一款靠谱(且不收费)的视频修复工具:recover_mp4.exe,主页在此:http://slydiman.me/eng/mmedia/recover_mp4.htm 。话说战斗民族的技术总是这么犀利,主页总是这么大巧不工。
用法很简单,先得找一个没有问题的、拥有同样分辨率和比特率的视频 good.mp4,拿recover_mp4.exe给分析一下,分析完会产生两个文件:"video.hdr" 和 "audio.hdr"。
1
|
recover_mp4.exe good.mp4 --analyze
|
开始处理有问题的文件bad.mp4,从中分离出里面的视频流"recovered.h264",音频流"recovered.aac",注意前面产生的"video.hdr" 和 "audio.hdr"也要在当前目录下。
1
|
recover_mp4.exe bad.mp4 recovered.h264 recovered.aac
|
最后用FFMPEG(Windows版下载地址:https://ffmpeg.zeranoe.com/builds/ , static、shared都行)将分离出的视频流和音频流重新生成一个mp4文件,注意"-r 30"是指帧率、这里30只是示例,应设置为视频原来的帧率。
1
|
ffmpeg.exe -r 30 -i recovered.h264 -i recovered.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy recovered.mp4
|
其实,我这里存储的是mo4.tmp文件,在最后一步的时候,失效,但是当获取recovered.h264文件的时候就可以了,在linux下可以用VLC打开