How to Convert Video to VCD Format Using FFmpeg
This article provides a quick and straightforward guide on how to transcode any video file into the classic Video CD (VCD) format using the FFmpeg command-line tool. You will learn the specific command-line arguments and standard specifications required to output a fully compliant MPEG-1 file ready for VCD authoring.
The Standard VCD Specifications
To make a video compatible with VCD players, it must strictly adhere to the MPEG-1 standard. The specifications differ slightly depending on the regional television standard (NTSC or PAL):
- Video Codec: MPEG-1
- Audio Codec: MP2 (MPEG-1 Audio Layer II)
- Audio Sample Rate: 44100 Hz (Stereo)
- Audio Bitrate: 224 kbps
- Video Bitrate: 1150 kbps (Constant Bitrate)
- NTSC Resolution & Framerate: 352x240 at 29.97 fps (or 23.976 fps)
- PAL Resolution & Framerate: 352x288 at 25 fps
The Easy Way: Using the FFmpeg Target Preset
FFmpeg includes built-in target presets that automatically configure all the correct video and audio parameters for VCD. This is the most reliable and efficient way to perform the conversion.
For NTSC VCD (North America, Japan):
Run the following command in your terminal:
ffmpeg -i input.mp4 -target ntsc-vcd output.mpgFor PAL VCD (Europe, Asia, South America):
Run the following command in your terminal:
ffmpeg -i input.mp4 -target pal-vcd output.mpgManual Conversion (Optional)
If you need to manually define the parameters or if you want to
understand what the -target flag does under the hood, you
can write out the full command.
Here is the manual equivalent for an NTSC VCD conversion:
ffmpeg -i input.mp4 -c:v mpeg1video -r 29.97 -s 352x240 -b:v 1150k -maxrate:v 1150k -bufsize:v 327k -c:a mp2 -ar 44100 -ab 224k -ac 2 -f vcd output.mpgAspect Ratio Handling
Because VCD uses a non-square pixel aspect ratio, widescreen (16:9) source videos may look stretched vertically when converted to the standard 4:3 VCD format. To maintain the correct aspect ratio, you can pad the video with black bars (letterboxing) using FFmpeg’s video filter:
ffmpeg -i input.mp4 -vf "scale=352:198,pad=352:240:0:21:black" -target ntsc-vcd output.mpgThis scales a 16:9 widescreen video to fit the 352-pixel width while adding 21-pixel tall black bars to the top and bottom to satisfy the required 240-pixel height.