如何视频修复(视频修复方法)

引言

Introduction

最近在使用oCam录屏软件录制一次会议的时候出现了小意外,录制快要结束的时候,oCam死机了。虽然在硬盘上可以找到录制的文件,但是使用各种播放器都无法播放,所以对视频修复做了一点小调查,几乎把网上所有的视频恢复软件都试用了一次,最后利用Untrunc软件成功地恢复了视频。今天就和大家分享一下自己的经验。

修复原理

Principle

每个MP4文件都是由若干个box组成的。每个box都至少包括32位的长度字段和32位的类型字段。在图1所示的文件中,所有红色框标出来的就是box的类型字段。

如何视频修复(视频修复方法)

图1 MP4文件举例

最重要的几个box是:

●ftyp box,在文件的开始位置,描述的文件的版本、兼容协议等;

●moov box,包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。

a) mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。

b) trak中的一系列子box描述了每个媒体轨道的具体信息。

●mdat box,编码后的媒体数据。

录制软件一般都是先写入ftyp box和mdat box以记录媒体数据,在录制完成时再写入moov box,因为moov box中包括的时长数据只有在录制完成才能计算出来。如果录制软件死机,就可能造成录制的媒体数据被写入文件,而视频的moov box信息没有写入文件的情况。

对于播放软件而言,没有moov box就无法知道视频的基本信息,包括所采用的编码格式、视频的尺寸等,就无法播放。

所以,如果媒体数据被写入,而moov box没有来得及写入就可以采用本文介绍的修复软件进行文件恢复。

我还遇到过一次摄像机因为没电而意外关机的情况,虽然生成了很大的数据文件,但是数据文件的内容都是FFH,这是因为关机时在缓存中的视频数据没有来得及写入SD卡。对于这种情况,任何修复软件都是无能为力的。

Untrunc

使用方法

Method

在试用了国内外各种视频修复软件以后,个人以为Untrunc是解决前面所说的视频文件破损的最佳工具。

Untrunc是意大利人Federico Ponchio开发的一个开源软件,在他的个人网站(http://vcg.isti.cnr.it/~ponchio/untrunc.php)上介绍了这个工具的工作原理,其代码公布在Github上(https://github.com/ponchio/untrunc)。不过原始的Untrunc是个命令行工具,而且没有提供Windows上的版本,使用起来略有不便。我建议采用Anthon Lockwood派生的版本(https://github.com/anthwlock/untrunc)。这个版本提供了易用的图形界面和编译好的Windows版本,修复了一些错误并对性能进行了改进。

如何视频修复(视频修复方法)

图2Untrunc的图形用户界面

最后说明一点,Untrunc采用的是GPL协议,这个协议要求对它进行修改的软件也必须公开源代码。

1

END

1

#往期推荐#

# 如何用Wireshark调试SSL/TLS程序

# 2022 笃行不怠,虎啸生风

# 迟到的秋游 | 动物园游记

# RIS——未来通信技术

文稿 || 李海老师

排版 || 赵阳

bitpmcrg

北理工通信课题组

北京理工大学专业移动通信组

发表评论

登录后才能评论