Answers:
过去我很幸运,因为使用DivFix出现了很多损坏/不完整的AVI ,但是不确定在Windows XP之后的版本上是否能正常运行。
较新的版本是DivFix ++:
DivXFix ++旨在通过重建文件的索引部分来修复损坏的AVI文件流。当尝试预览没有索引部分的电影时,这非常有用,例如当前正在从ed2k或bittorent网络下载某些文件。DivFix ++完全重写了“ DivFix”程序,因为它存在错误且性能低下。
以下一些程序可能会有所帮助:
此处提供了有关修复损坏的AVI文件的详细教程:修复损坏或损坏的AVI文件-AfterDawn:指南
您还可以尝试通过使用FFmpeg进行位流复制来重建容器:
ffmpeg -i input.avi -c copy output.avi
VirtualDub可以使用损坏的AVI文件来完成惊人的工作。只需在VirtualDub中打开文件,使其煮熟,然后如果成功打开它,则将其重新保存为新的AVI文件。通常,您甚至不需要更改压缩设置。
我有一些AVI,VLC甚至都没有尝试修复,而DivFix ++给了我一些错误。通过ffmpeg传递它们不起作用,但是起作用mencoder
了(非常快):
mencoder -idx input.avi -ovc copy -oac copy -o output.avi
(mplayer
在大多数系统上,例如brew install mplayer
在Homebrew 上,mencoder是软件包的一部分。)
有关如何修复损坏的AVI索引的所有好主意(我的偏爱是ffmpeg
),但是在这里提供了一种方法来查找具有损坏的索引的avi文件以对其进行测试并主动进行修复。在尝试使用mediainfo
ffprobe
vlc和其他工具未能成功检测到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
。