解决拍摄过程断电造成的视频文件损坏问题

[复制链接]

该用户从未签到

15

主题

674

回帖

9287

积分

[INTOHARD]团长

浸淫

Rank: 8Rank: 8

积分
9287
发表于 2009-1-9 10:43:27 | 显示全部楼层 |阅读模式
也是转的。


在外出拍摄过程中,常会遇到拍摄设备突然没电,而被迫终止拍摄的情况。突然中断的拍摄,往往因拍摄设备还来不及保存拍摄内容,所以容易出现错误。这类拍摄后的文件内容大多并未丢失,但放到播放器中又无法播放。今天我们就针对这一类情况,为大家讲解解决问题的方法,希望能起到抛砖引玉的作用。

  故事回放:出游拍摄,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 编辑 ]
11.jpg
22.jpg
33.jpg

该用户从未签到

9

主题

111

回帖

59

积分

[INTOHARD]班长

Rank: 2

积分
59
QQ
发表于 2009-1-9 13:56:00 | 显示全部楼层
谢谢了,谢谢了谢谢了,谢谢了谢谢了,谢谢了谢谢了,谢谢了谢谢了,谢谢了
  • TA的每日心情
    开心
    2015-1-15 15:06
  • 签到天数: 1 天

    [LV.1]布衣百姓

    180

    主题

    389

    回帖

    6406

    积分

    Intohard Team

    Rank: 7Rank: 7Rank: 7

    积分
    6406
    QQ
    发表于 2009-1-11 16:53:09 | 显示全部楼层
    我个人认为不同文件的文件头都会有统一的文件标识(一般位于偏移0X处的几个字节0、不同的版本等这些参数中有一些是固定不变的如文件标识,有一些则是根据每个文件而产生的唯一的参数如文件长度,所以有些地方就得手动修复有些地方直接复制就可以了。视频文件可能相比比较简单,如果处理过复合文档的朋友就知道修复文件头是多么的复杂了,一般的软件是搞不定的
  • TA的每日心情
    无聊
    2013-9-3 10:22
  • 签到天数: 1 天

    [LV.1]布衣百姓

    3

    主题

    555

    回帖

    1万

    积分

    [INTOHARD]团长

    Rank: 8Rank: 8

    积分
    11712
    QQ
    发表于 2009-1-12 00:04:35 | 显示全部楼层
    基本上懂了,谢谢楼主分享
  • TA的每日心情
    开心
    昨天 09:32
  • 签到天数: 3724 天

    [LV.Master]三朝元老

    38

    主题

    6146

    回帖

    2万

    积分

    [INTOHARD]旅长

    Rank: 9Rank: 9Rank: 9

    积分
    21792
    发表于 2012-9-13 23:14:13 | 显示全部楼层
    学习一下啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:32
  • 签到天数: 3724 天

    [LV.Master]三朝元老

    38

    主题

    6146

    回帖

    2万

    积分

    [INTOHARD]旅长

    Rank: 9Rank: 9Rank: 9

    积分
    21792
    发表于 2012-11-14 23:09:43 | 显示全部楼层
    顶一下啊。看看那
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2012-11-15 15:50
  • 签到天数: 1 天

    [LV.1]布衣百姓

    0

    主题

    44

    回帖

    93

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    93
    发表于 2012-11-15 15:30:40 | 显示全部楼层
    谢谢分享!学习中!
    200863756712912.gif
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表