How to Set mpeg1video Quality in FFmpeg

This article explains how to configure the video quality when encoding with the mpeg1video encoder in FFmpeg. You will learn how to use the constant quality parameter (-qscale:v) and bitrate controls to achieve the best balance between file size and visual fidelity for MPEG-1 video exports.

To control the quality of the mpeg1video encoder in FFmpeg, you can use two primary methods: variable bitrate (VBR) using the quality scale parameter, or constant/average bitrate (CBR/ABR).

Method 1: Using the Quality Scale (-qscale:v)

The most effective way to control quality in MPEG-1 is using the -qscale:v option (also abbreviated as -q:v). This option enables variable bitrate (VBR) mode, where the encoder maintains a consistent level of visual quality throughout the video.

  • Syntax: -qscale:v <value> (or -q:v <value>)
  • Scale: The value is a linear scale from 1 to 31.
    • 1 represents the highest quality (and largest file size).
    • 31 represents the lowest quality (and smallest file size).
    • A value of 2 to 5 is generally recommended for high-quality MPEG-1 video.

Example Command:

ffmpeg -i input.mp4 -c:v mpeg1video -qscale:v 3 output.mpg

Method 2: Setting a Specific Bitrate (-b:v)

If you need to target a specific file size or comply with strict standards (such as Video CD / VCD specifications), you should set a specific bitrate instead of using -qscale:v.

  • Syntax: -b:v <bitrate> (e.g., 1150k for 1150 kilobits per second)

Example Command (Standard VCD Bitrate):

ffmpeg -i input.mp4 -c:v mpeg1video -b:v 1150k output.mpg

Summary of Best Practices

  • For best visual quality: Use -qscale:v with a value between 2 and 5. This allows the bitrate to spike during complex scenes to prevent pixelation.
  • For predictable file sizes: Use -b:v to cap the bandwidth, keeping in mind that MPEG-1 is an older codec and requires higher bitrates than modern codecs (like H.264) to look acceptable.