Transcode Video to MPEG-1 Using FFmpeg

This article provides a straightforward guide on how to transcode modern video files into the legacy MPEG-1 format using FFmpeg and the mpeg1video encoder. You will learn the basic command-line syntax, essential encoding parameters for video and audio, and how to configure settings for specific target requirements like Video CD (VCD) compatibility.

Basic MPEG-1 Conversion Command

To convert a video file to MPEG-1, you must specify the mpeg1video encoder for the video stream. Because MPEG-1 is an older format, it is typically paired with MP2 (MPEG-1 Audio Layer II) audio and packaged inside an MPEG-PS container (.mpg).

Here is the standard command to transcode a video:

ffmpeg -i input.mp4 -c:v mpeg1video -b:v 2000k -c:a mp2 -b:a 192k output.mpg

Explanation of Parameters

Adjusting Resolution and Framerate

MPEG-1 has strict limitations regarding maximum resolution and framerates depending on the player or decoder being used. If you need to resize the video or change the framerate to ensure compatibility, use the scale filter and the framerate flag:

ffmpeg -i input.mp4 -c:v mpeg1video -vf "scale=352:248" -r 30 -b:v 1500k -c:a mp2 -b:a 128k output.mpg

Encoding for Strict VCD Compatibility

If you are transcoding a video specifically for playback on vintage Video CD (VCD) hardware, the parameters must adhere to strict NTSC or PAL standards. FFmpeg includes a built-in target profile that configures these settings automatically.

For NTSC VCD (North America/Japan):

ffmpeg -i input.mp4 -target ntsc-vcd output.mpg

For PAL VCD (Europe/Asia):

ffmpeg -i input.mp4 -target pal-vcd output.mpg

Using the -target flag automatically sets the correct video resolution (352x240 for NTSC, 352x288 for PAL), framerate, video bitrate (1150 Kbps), audio format (MP2 at 224 Kbps, 44.1 kHz), and multiplexer settings required for VCD authoring.