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.aviLook 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 indeoThe 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.mp4Command Breakdown:
-i input.avi: Specifies the source Indeo video file.-c:v libx264: Encodes the video stream to H.264.-pix_fmt yuv420p: Converts the pixel format. Indeo files often use defunct pixel formats. Converting toyuv420pensures compatibility with hardware decoders in modern phones, browsers, and TVs.-crf 20: Controls video quality. Values between 18 and 23 offer visually lossless quality for older source material.-c:a aac: Converts the audio stream to AAC.-b:a 128k: Sets the audio bitrate to a standard 128 kbps.output.mp4: The newly created, highly compatible video file.
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.mp4Upscaling 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