本人不是专业研究多媒体的,但也曾搞过多媒体显示的算法,研究内容多少也和多媒体沾点儿边,又讲授过《多媒体技术》的课程,所以也算是懂一点多媒体技术。本文介绍一下关于视频数据恢复的问题和工具。
由于今年疫情的原因,线下课程均通过线上方式进行,网课需要录制视频。
视频录制软件采用的是ShareX,该软件开源、体积较小,功能够用,支持音视频录制,支持截图,也支持虚拟音频(即将音频输出作为音频输入进行录制,而不会将环境声音录入)。ShareX后台是调用的FFmpeg进行音视频的编码,ShareX下载地址:https://getsharex.com/。
在录制视频过程中,出现过一次错误,视频文件损坏了。原因是在录制视频过程中,由于演示需要修改Windows系统时间,然后在修改时间之后,FFmpeg就直接崩溃,导致视频录制失败,前面大概录制的20分钟的MP4数据还在,但是无法用播放器打开,不得已,只能上网查找视频数据恢复的工具。
经过一些摸索,尝试了很多恢复工具,均以失败告终(这类软件确实很不好找,网上有很多类似的,但可用的真的不多,有另一个似乎可以恢复的,但恢复出的图像有严重的花屏,其它试过的软件根本无法恢复)。在尝试某个软件的过程中,Windows系统还感染了恶意软件(这是后话,不是严重的病毒,但在之后的三个月中,系统中总能看到莫名其妙的进程在运行,而且手动删除后,过一段时间又会出现其它的恶意软件,以至于最近不得已给系统装了杀毒软件,随后进行全盘扫描,确实有在视频恢复当天之后进入系统恶意的软件)。
言归正传,经过不断地尝试,最终确认了一个免费的工具可以恢复视频,即recover_mp4这个工具,使用方法可以参考网站:https://tehnoblog.org/video-repair-guide-corrupted-mp4-avi-h264-file-fix/,还需要手动下载FFmpeg。recover_mp4这个工具是一个俄罗斯人Dmitry Vasilyev开发的,所以不能小看俄罗斯人的软件开发水平。作者官网是http://slydiman.me/,但刚查了一下,似乎是不提供旧版本工具(我测试可用的工具,目前似乎有一个online的工具)的下载了,有需要的可以联系我。
恢复过程是需要一个参数相同的完好的视频good.mp4(本文是采用ShareX录制的一个没有错误视频)。
在命令行下执行以下命令:
recover_mp4.exe good.mp4 --analyze
recover_mp4.exe bad.mp4 recovered.h264 recovered.aac
ffmpeg.exe -r 30 -i recovered.h264 -i recovered.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy recovered.mp4
上述方法能够较好的恢复视频文件,经测试2~3GB大小的数据也可以恢复,当然数据确实损坏的部分是不能恢复的,损坏之前的正常的部分都是可以恢复出来的。这个结果要优于我测试过的其它的恢复工具。
最后再分享一个FFmpeg的常用技巧。
多个视频(参数相同)拼接的命令(filelist.txt包含要拼接的视频文件列表):
ffmpeg.exe -f concat -i filelist.txt -c copy output.mp4