When I was troubleshooting playback issues on my Raspberry Pi, I realized that many video formats, especially older ones like .avi, aren’t fully supported by default media players. Some files wouldn’t play at all, others had no sound or were stuttering badly.
After a bit of trial and error, the most reliable solution was to convert the videos to a more modern and compatible format — MP4 with H.264 for video and AAC for audio.
Usage
FFmpeg made the process simple. Here’s the command I used:
| |
Breakdown of the Command
- ffmpeg: The command-line tool used for processing audio and video
- -i input.avi: Specifies the input file. FFmpeg supports a wide range of formats including .avi, .mkv, .mov, .flv, .mpg, .ts, .webm, .wmv, and more
- -c:v libx264: Uses the H.264 video codec (via the libx264 library)
- -preset slow: A slower encoding preset which produces better compression (smaller file, same quality)
- -crf 23: Constant Rate Factor for quality control — 23 is a good balance between size and quality
- -c:a aac: Uses the AAC audio codec
- -b:a 128k: Sets audio bitrate to 128kbps
- output.mp4: The output file name
Why Convert to MP4?
- Compatibility: MP4 with H.264/AAC is supported by nearly all devices and browsers.
- Efficiency: Better compression than older AVI formats.
- Smaller file size with the same perceptual quality.
GUI Options for FFmpeg
There are many graphical user interfaces (GUIs) available for FFmpeg, but personally, I chose the lightweight QWinFF, so I’ll just mention it here briefly.

Installation on Arch Linux:
| |
