|
也是转的。
在外出拍摄过程中,常会遇到拍摄设备突然没电,而被迫终止拍摄的情况。突然中断的拍摄,往往因拍摄设备还来不及保存拍摄内容,所以容易出现错误。这类拍摄后的文件内容大多并未丢失,但放到播放器中又无法播放。今天我们就针对这一类情况,为大家讲解解决问题的方法,希望能起到抛砖引玉的作用。
故事回放:出游拍摄,MP4突然断电
前几天在外地旅游,用MP4拍了近一个小时的一段视频。拍完存盘后,因为快没电了,并没有检查。回来后充上电,用MP4观看,却惊愕地发现MP4提示“无文件”不能播放。但在MP4的“资源管理器”目录下检查,分明发现有一个790MB的ASF文件(这是我的MP4支持的视频文件格式),文件名是PIC001。我又拍了几段视频,检查后这些视频均可以正常观看。
然后我连接电脑,将这个PIC001文件复制到电脑上,显示文件不关联,选择用“暴风影音”打开播放,提示“无法渲染此文件”。又用Windows Media Player9播放,提示“Windows Media Player 无法播放该文件。可能是播放机不支持该文件类型,或者不支持用于压缩该文件的编解码器”。我又换了多个播放器,依然无法播放,有的根本没反应,有的甚至会死机。
发觉问题所在:断电引起文件头损坏
于是我想可能是这个ASF文件被损坏了,就使用了MediaFixer修复,但是提示:“I/O错误 32”,就没了动静。又用RepairVideo、Fixvideo等诸多修复软件,均以失败告终。
由于这个损坏文件还显示大小,说明视频文件的原始数据还存在,只是因为种种原因,导致这个文件严重损坏,不被任何播放器识别,虽然用遍了修复软件,但也因为一些关键标示缺失,导致无法正常修复。后来我用winhex试了一下
首先,我考虑是否这个文件的“文件头”有问题。“文件头”是指记录文件属性信息的一些数据,包括文件名、创建时间、修改时间、访问时间、文件大小、文件属性等等一些信息。
用WinHex打开这个PIC001.ASF,发现这个文件的前部,从偏移量0到258536的数据居然全部是零,这是不正常的(如图1)。
图1 11.jpg
每个文件都应有自己的“文件头”,从偏移量0开始的若干字节,应当是标示这个文件属性信息的一系列数据。于是我用MP4又拍了两段视频,分别命名为“样本1.ASF”和“样本2.ASF”,用WinHex查看,果然如此。不管文件大小,这两个ASF视频的前部数据除了少数不相同外,大部分完全相同,这也就是我们说的“文件头”。
图2、图3是完好视频“样本1.ASF”和“样本2.ASF”的图示。其中,用阴影标注的区域是ASF文件的“文件头”。既然发现了问题所在,就有对策了。
图2 22.jpg
图3 33.jpg
首先,将PIC001.ASF的文件开头为00的区域全部“剪切”掉(一定要用“剪切”功能)。然后将“样本1.ASF”的“文件头”的数据复制下来,“粘贴”(一定要用“粘贴”功能)到PIC001.ASF文件的最开头,即偏移量为0处。为保险起见,最好另存为一个新文件,取名为AAA(如果存盘后是一个无后缀格式的文件AAA,要在其后加上ASF的后缀格式,使其变成ASF文件)。
接着使用暴风影音播放器打开AAA.ASF,发现不再提示“无法渲染此文件”,说明对损坏文件加上文件头后,播放器可以识别了,但还不能正常播放,它显示的视频时间长度也不对,还是“样本1.ASF”的时间长度。这没关系,由于这时候的AAA.ASF己具备了一个ASF文件的基本属性,就可以用Fixvideo视频修复软件对AAA.ASF进行修复了。经过修复,损坏的文件终于可以正常播放了。
强补一剂:加强修补法
若此时经修复后,视频文件仍不能正常播放,可以试试后面的方法。观察Fixvideo修复文件时的显示,如果有问题会在处理窗口中显示:“错误偏移: XX”等内容。记住这个偏移量,然后再用WinHex打开被修复文件,试着将这个偏移量处的错误值进行一下修改,数值为“00~FF”之间的十六进制数值。保存后再用Fixvideo试试,直到正常为止。当然这个过程比较繁琐一些,对有多个偏移量值的错误就更麻烦。不过,一般情况下,Fixvideo是可以将这些错误自动修正的。
高手传经:视频文件的文件头至关重要
回过头看,分析我的MP4为什么不能播放这段视频,因为文件头完全损坏了,MP4根本不识别,所以显示“无文件”。但资源管理器却有一个PIC001.ASF文件,是由于MP4的视频目录下的文件格式默认为ASF格式(尽管它还不是一个完整的ASF文件)。将它传到电脑上,尽管我的视频播放器早已经设置了对ASF文件的关联,但它却是一个无关联(即无后缀格式)的文件,说明这个文件已严重损坏,播放器根本不能识别。
通过以上分析,可见“文件头”对一个视频文件是多么重要。正是由于文件头的缺失,造成了这个文件既不能播放,又不能被一般的视频修复软件修复。而WinHex可以深入文件内部进行数据修改,因此可以有效地解决一些普通修复软件不能处理的问题。
实际上我们也可以用WinHex对其它格式的视频文件进行如此修复。若保证被修复文件的文件头基本完好,就可选用众多的视频修复软件进行自动修复了。
[ 本帖最后由 xulemeng 于 2009-1-9 10:47 编辑 ] |
|