27

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...

Robotnik
  • 2,645

7 Answers7

18

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
  • 235,242
16

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.

slhck
  • 235,242
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?

Giacomo1968
  • 58,727
2

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.

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
  • 1,134
1

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
  • 111
-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
  • 24,289