VCD Authoring Notes

By Michael Hernandez

Last Updated: 15 November 2020



Introduction

I am a big fan of technology.

And for some odd reason, I have always been interested in obsolete technology.

My appreciation for obsolete technology runs fairly wide and is probably influenced by my first-hand experience with various older formats.

Take video distribution as an example: I have witnessed the evolution of video distribution as it moved from VHS to DVD to Blu-ray to direct downloads and online streaming.

Along the way, there were a number of formats that failed to gain mainstream support (I am looking at you, HD DVD). Among those, there was also Video CD (VCD).

VCD failed to gain traction for a number reasons including inferior picture quality when compared to DVD. But I think the greatest factor was the lack of copy protection and the proliferation of CD-burning capabilities on personal computers. I am fairly certain that this would have caused concern among the movie studios that made heavy investments in making their movies.

This article actually started out as a collection of my own personal notes on the subject. I had to do quite a bit of research to figure out how to prepare my own VCDs. I thought it might be helpful to share what I discovered in one document, like a stand-alone Video CD authoring guide.

Video CD (VCD) Specifcations (White Book)

Video
CodecMPEG-1
Bitrate1150 kbit/sec
Resolution352x240
DAR1.33:1 (4:3)
SAR0.91:1 (10:11)
Framerate29.97 FPS or 23.976 FPS

Audio
CodecMPEG-1 Layer 2
Bitrate224 kbit/sec
Sampling Rate44.1 kHz
ChannelsStereo, Joint Mono, or Split L/R Mono

Software

Right now, my VCD-Authoring workflow employs the following tools:

I use ffmpeg to convert the source into VCD-compliant MPEG-1 video files.

From there, I write an XML file that controls how VCDImager compiles the CUE/BIN disc image, including any advanced play-back options.

Then I use Infrarecorder to to burn the image to a physical Compact Disc.

Splitting Long Videos

VCD capacity is dependent upon the underlying media: CD. A a 700 MB CD can hold almost 80 minutes of VCD-compliant video, plus-or-minus a bit depending on formatting and other content added to the disc.

As a rule of thumb, it is usually safe to figure that every minute of VCD-compliant video will consume 10MB of disc space.

To split a video into three one-hour sections, use the following commands:

ffmpeg -i source.mp4 -t 01:00:00 movie-1.mpg
ffmpeg -i source.mp4 -ss 01:00:01 -t 02:00:00 movie-2.mpg
ffmpeg -i source.mp4 -ss 02:00:01 -t 03:00:00 movie-3.mpg

Aspect Ratio

Fullscreen Source Material

Source video can be directly scaled to 352x240 and it should display correctly when played from the VCD.

ffmpeg -i source.mp4 -threads 1 -vf scale=352:240 -target ntsc-vcd movie.mpg

Widescreen Source Material

Special considerations need to be taken into account for preserving the proper aspect ratio. VCD specification calls for video with a resolution of 352x240 to be displayed at 4:3, making for non-square pixels. To compensate, divide by 1.1 when figuring picture height. Then, simply pad the image to fill the frame to 352x240 and center the picture vertically.

Let us go through the process of figuring how to scale a video as an example with the aspect ratio of 1:85:1. Use 352 for the video width and figure the height according to the aspect ratio (190 for 1.85:1) and then divide by 1.1 (190/1.1= approximately 173) to find the appropriate picture size (352x173). Then, simply pad the image to fill the frame to 352x240 and center the picture vertically.

ffmpeg -i source.mp4 -threads 1 -vf scale=352:173,pad=352:240:0:33 -target ntsc-vcd movie.mpg

For 16:9, the proper picture scaling should come out to be 352x180 and the command would be:

ffmpeg -i source.mp4 -threads 1 -vf scale=352:180,pad=352:240:0:30 -target ntsc-vcd movie.mpg

VCDImager XML File

For the sake of simplicity, here is a copy of the basic XML file that I use to control how VCDImager assembles the disc image for a simple Video CD without any fancy playback options.

<?xml version="1.0"?>
<!DOCTYPE videocd PUBLIC "-//GNU//DTD VideoCD//EN" "http://www.gnu.org/software/vcdimager/videocd.dtd">
<videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/" class="vcd" version="2.0">
 <info>
  <album-id>ALBUM_TITLE</album-id>
  <volume-count>1</volume-count>
  <volume-number>1</volume-number>
  <restriction>0</restriction>
 </info>
 <pvd>
  <volume-id>DISC_LABEL</volume-id>
  <system-id>CD-RTOS CD-BRIDGE</system-id>
  <application-id>CDI/CDI_VCD.APP</application-id>
  <publisher-id>PUBLISHER NAME</publisher-id>
 </pvd>
 <filesystem>
  <folder>
   <name>CDI</name>
   <file src="CDI/CDI_VCD.APP"><name>CDI_VCD.APP</name></file>
   <file src="CDI/CDI_IMAG.RTF"><name>CDI_IMAG.RTF</name></file>
   <file src="CDI/CDI_TEXT.FNT"><name>CDI_TEXT.FNT</name></file>
  </folder>
  <folder>
   <name>EXTRA</name>
  </folder>
 </filesystem>
 <sequence-items>
  <sequence-item src="movie-01.mpg" id="movie-01">
   <entry id="ch01">0.00</entry>
   <entry id="ch02">300.00</entry>
   <entry id="ch03">600.00</entry>
  </sequence-item>
  <sequence-item src="extra-01.mpg" id="extra-01"/>
 </sequence-items>
</videocd>

And now for some (hopefully brief and simple) explanation:

The <info> section describes information about the Video CD. You can specify a title in <album-id>. <volume-count> records the total number of discs in the album (in case the movie did not fit on one disc) while <volume-number> reports which disc is currently being played.

<pvd> section defines information about the disc itself. You can use <volume-id> to specify the disc label and <publisher-id> to add your own information (name, brand, company, etc.) if you want.

You can add any file to the disc with the <filesystem> section. You can even create a hierarchy of folders to organize files.

The <sequence-items> sections is where all the magic happens. It is where you add the compliant video files to the disc. You can define chapter-points in seconds with the <entry> tags. Note that not all VCD players will support chapters without PBC (something that Michael Tam covers really well in his guide on the subject).

What is with the Phillips CD-i stuff? Well, for that I would have to refer you to the The New International CD-i Association. But the short-and-simple explanation: a fully standards-compliant Video CD includes a CD-i bridge application for compatibility with the older Green Book standard. The VCD will probably play in most non-CD-i hardware without the bridge application, so you can actually ignore this if you are not a stickler for standards.

Conclusion

Video CD may be an obsolete format. It will probably never see a resurgence like Vinyl has and is vastly inferior in quality and capacity compared to contemporary formats. For those of us who have had experience with VCD though, the power and mystique of the format will forever hold a special place in our hearts.

I hope that you find these notes useful in your ventures, and have fun discovering the magic of producing your own Video CD.

References


If you enjoyed reading this article you might like visiting my website because I wrote that too! MichaelHernandez.xyz