How can I repair a broken AVI file?

24

11

I have an .avi file that is about 110mb. When I try to play it with VLC Media Player it says something like "This file is broken. Attempt to repair?" and after it does its thing it is still unable to play it.

Is there any other software out there that can possibly get whatever video it can out of it? Maybe one that specializes on that sort of thing? I'm not very hopeful because I figured if anything could be played out of it VLC would have managed to do it, but I figured I'd give it a shot anyways...

Paolo Bergantino

Posted 2009-07-16T04:01:08.217

Reputation: 2 809

Answers

12

I've had some luck in the past with a lot of broken/incomplete AVIs using DivFix, but not sure if it works well on anything later than Windows XP.

A newer version is DivFix++:

DivXFix++ is designed to repair broken AVI file streams by rebuilding index part of file. This is very useful when trying to preview movies which has no index part, like some files are currently downloading from ed2k or bittorent networks. DivFix++ is complete rewrite of "DivFix" program due it's bugs and low performance.

Nick Josevski

Posted 2009-07-16T04:01:08.217

Reputation: 6 747

2Awesome. I did this for a 799 MB video file and it worked like a charm. In fact, this AVI file when played with VLC came up with the same error. It never played on Windows Media Player. Now it plays perfectly fine in Windows Media Player also. Nick - Thanks much! – Kanini – 2009-10-23T07:21:40.777

@Kanini, glad DivFix helped :) – Nick Josevski – 2009-10-24T23:56:07.323

14

Here are some programs that might help:

  • VLC should offer you to fix a broken AVI file's index when you open the file.
  • DivFix++
  • AviFiXP (only runs on Windows)

There's an extensive tutorial on repairing broken AVI files here: Repair broken or corrupt AVI files - AfterDawn: Guides

You can also try rebuilding the container by doing a bitstream copy with FFmpeg:

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

slhck

Posted 2009-07-16T04:01:08.217

Reputation: 182 472

ffmpeg fixed the broken index of my video avi files – Elias Estatistics – 2019-10-13T22:01:01.967

1@sinelaw Doesn't that just do the same thing? Isn't -c copy a shortcut for copying both audio and video codecs? – Hashim – 2020-01-03T01:10:38.293

1@Hashim It's almost the same. -c copy implies subtitle copying as well, but that's most likely not relevant here. – slhck – 2020-01-03T07:48:59.937

1

With ffmpeg 0.6.2, use -vcodec copy -acodec copy instead of -c copy. I used (for windows) this version. I had a bunch of files to fix. DivFix++ crashed on me. ffmpeg was great. Thanks.

– sinelaw – 2013-09-12T12:21:14.687

3

VirtualDub can do pretty amazing things with broken AVI files. Just open the file in VirtualDub, let it cook, and then if it's opened it successfully, re-save it as a new AVI file. Usually, you don't even need to change the compression settings.

Electrons_Ahoy

Posted 2009-07-16T04:01:08.217

Reputation: 2 491

Ah, VirtualDub is a good recommendation but it wasn't able to do squat with it. – Paolo Bergantino – 2009-07-28T17:54:19.350

Man, sorry to hear that. Hope you find something that works - noting more frustrating than a 100 meg file you can't use! – Electrons_Ahoy – 2009-07-30T20:19:25.887

2

I had some AVIs which VLC didn't even attempt to repair and DivFix++ gave me seek errors for. Passing them through ffmpeg didn't work, but mencoder did (it's very quick):

mencoder -idx input.avi -ovc copy -oac copy -o output.avi

(mencoder is part of the mplayer package on most systems, e.g. brew install mplayer on Homebrew.)

See also: How can I check the integrity of an avi file and repair it automatically in Linux?

William Turrell

Posted 2009-07-16T04:01:08.217

Reputation: 667

2

All good ideas for how to repair the broken AVI index (my preference is ffmpeg), but contributing here a way to find avi files that have the broken index to test them and proactively repair them. After unsuccessfully trying to use mediainfo ffprobe and others to detect files that vlc would complain about, I finally decided to use vlc since it was the one that's complaining. Here's a snippet that may be useful as part of a scan and automated repair script.

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

Note: the alternate stopping methods (so it doesn't play the whole video before exiting) are included because some versions of VLC have a bug in --stop-time and other systems may not have timeout.

user2070305

Posted 2009-07-16T04:01:08.217

Reputation: 872

2

There is a played called SuperDecoder.

have been able to play really messed up files and CD/DVDs with it. You can give it a shot.

M.N

Posted 2009-07-16T04:01:08.217

Reputation: 121

-1

I've had good experience so far with Media Player Classic and The KMPlayer. They can play files which have been partially downloaded, or broken into parts (by hjsplit for example).

I think they may be able to play yours.

Although, it also depends on the type of codec and so ...

Rook

Posted 2009-07-16T04:01:08.217

Reputation: 21 622