Convert Intel Indeo 3/4/5 Video Using FFmpeg

This guide explains how to decode and transcode legacy videos encoded with Intel Indeo 3, 4, and 5 codecs using FFmpeg. You will learn how to identify these older formats, verify FFmpeg’s decoder support, and execute the exact command-line instructions required to convert these obsolete files into modern, widely compatible formats like MP4 (H.264/AAC).

Understanding Intel Indeo Codecs

Intel Indeo (later managed by Ligos Corporation) was a popular family of video codecs in the 1990s, commonly used in early Windows multimedia applications and video game cutscenes. Today, modern operating systems and media players no longer support these codecs out of the box, resulting in playback errors.

Fortunately, FFmpeg contains native, reverse-engineered decoders for Indeo 3 (indeo3), Indeo 4 (indeo4), and Indeo 5 (indeo5), allowing you to decode and rescue these legacy videos without installing dangerous, outdated system-wide codecs.

Step 1: Identify the Codec

Before transcoding, verify that your source file uses an Indeo codec. Run the following ffprobe command in your terminal:

ffprobe input.avi

Look at the video stream information in the output. You should see one of the following fourCC tags: * IV31 or IV32 (Indeo 3) * IV41 (Indeo 4) * IV50 (Indeo 5)

Step 2: Verify FFmpeg Decoder Support

To ensure your version of FFmpeg is compiled with the necessary decoders, run:

ffmpeg -decoders | grep indeo

The output should list indeo3, indeo4, and indeo5 with the V (Video) and D (Decoding supported) flags.

Step 3: Transcode to a Modern Format

To make the video playable on modern devices, transcode it to the H.264 video codec and AAC audio codec inside an MP4 container.

Run the following command:

ffmpeg -i input.avi -c:v libx264 -pix_fmt yuv420p -crf 20 -c:a aac -b:a 128k output.mp4

Command Breakdown:

Troubleshooting Common Issues

Corrupted Frames or Green Screen

Some Indeo 4/5 videos use “quick update” frames that can cause decoding artifacts in FFmpeg. If you notice visual corruption, try forcing FFmpeg to ignore thread-based decoding by adding the single-thread flag:

ffmpeg -threads 1 -i input.avi -c:v libx264 -pix_fmt yuv420p -crf 20 -c:a aac output.mp4

Upscaling Low-Resolution Video

Indeo videos were often encoded at very low resolutions (such as 320x240). If you want to scale the video to a larger size while preserving its retro look, use the nearest-neighbor scaler:

ffmpeg -i input.avi -vf "scale=640:480:flags=neighbor" -c:v libx264 -pix_fmt yuv420p -crf 20 -c:a aac output.mp4