我如何修复损坏的 AVI 文件?

我如何修复损坏的 AVI 文件?

我有一个 .avi 文件,大约 110mb。当我尝试使用 VLC Media Player 播放它时,它提示“此文件已损坏。尝试修复吗?”,修复完成后仍然无法播放。

有没有其他软件可以播放视频?也许有专门做这方面工作的软件?我不太抱太大希望,因为我觉得如果能播放视频的话,VLC 应该也能做到,但我想我还是会试一试……

答案1

我过去曾使用过很多损坏/不完整的 AVI迪夫菲克斯,但不确定它是否在 Windows XP 之后的任何版本上运行良好。

较新的版本是DivFix++

DivXFix++ 旨在通过重建文件的索引部分来修复损坏的 AVI 文件流。这在尝试预览没有索引部分的电影时非常有用,例如某些文件当前正在从 ed2k 或 bittorent 网络下载。由于“DivFix”程序存在错误且性能低下,DivFix++ 完全重写了它。

答案2

以下一些程序可能会有所帮助:

这里有关于修复损坏的 AVI 文件的详细教程:修复损坏的 AVI 文件 - AfterDawn:指南

您还可以尝试通过使用以下方法进行比特流复制来重建容器FFmpeg

ffmpeg -i input.avi -c copy output.avi

答案3

虚拟配音可以对损坏的 AVI 文件执行相当神奇的操作。只需在 VirtualDub 中打开文件,让它保存,然后如果成功打开,将其重新保存为新的 AVI 文件。通常,您甚至不需要更改压缩设置。

答案4

关于如何修复损坏的 AVI 索引的所有好主意(我偏爱的是ffmpeg),但在这里贡献一种方法来寻找avi 文件,这些文件有损坏的索引,可以对其进行测试并主动修复。在尝试使用mediainfo ffprobe和其他工具检测 vlc 会抱怨的文件失败后,我最终决定使用它,vlc因为它是抱怨的文件。以下是可能有用的代码片段,可作为扫描和自动修复脚本的一部分。

if grep -q "avi demux error" \
    <(cvlc --vout null --aout null --stop-time 2 "${VIDFILE}" vlc://quit 2>&1 )
    # alternate ways to stop after two seconds
    #<(timeout 2 cvlc --vout null --aout null "${VIDFILE}" 2>&1)
    #<(cvlc --vout null --aout null "${VIDFILE}"  2>&1 & sleep 2; kill $!)
then
    echo "avi demux error: ${VIDFILE}"
    exit 1
fi

注意:之所以包含备用停止方法(这样它在退出前不会播放整个视频),是因为某些版本的 VLC 有--stop-time 中的错误而其他系统可能没有timeout

相关内容