Writing Your Own AVI Files

The reason why I deal with AVI-Files is the following: I have a program that does any
(long) calculation, and the output is immediately displayed (a function graph). After each
step I can save the current window content as bitmap, and after the calculation I added
all the bitmaps to an AVI (using VFD.EXE). But the bitmaps take a lot of room, (up to some
G-Bytes). Therefore I wanted to create a AVI-File, and add the frames immediately when
they are displayed.

The vfw.h reads like a binary file, and so I have tried to press the sample WriteAVI
into a C++-class. I don’t want to documentate the source code in detail, just add
WriteAVI.cpp and WriteAVI.h to your project and use the class.

Some problems there are still with that class:

  1. The user will be prompted to select a compression method, it should be choosen
    automatically or by parameter.
  2. I create DIB’s (not compressed) for adding to an AVI-stream. The resulting AVI-File is
    not compressed even when I choose a compression method.
  3. The time for a frame is fix.

If anybody knows how to fix the problems please send me a mail, so that everybody can
benefit from it.

Then these few lines will create your own AVI-file:

CAVIFile avi("test.avi");
for (int i=0; i<=20; i++)
{
CBitmap bmp;
... // fill with data
avi.AddFrame(bmp);
}
if (avi.IsOK())
AfxMessageBox("AVI created");
else
AfxMessageBox("Error");

You see writing AVI-Files is easy (now).

Download source – 4KB

More by Author

Must Read